اطلاعیه

Collapse
No announcement yet.

مشکل با PIC12F675

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با PIC12F675

    بعد از کار کردن با ARM و AVR مجبور به استفاده از PIC شدم .. حالا این میکروی PIC12f675 کوچولو پوستمو کنده ...
    با CCS یه کد ساده زدم که GP0,GP1,GP2 رو روشن خاموش کنه:
    #include "12F675.h"
    #use delay(Clock=4000000) // oscillator frequency

    void main()
    {
    set_tris_A(0x0); //set port a as outputs
    while(true)
    {
    output_A(0x7); //turn On LED
    delay_ms(200);
    output_A(0x0); //turn Of LED
    delay_ms(200);
    }
    }
    تو شبیه سازی با پروتئوس هم همه ی پایه ها کاملا خاموش بود تا همینجوری پایه GP3 رو به VCC وصل کردم و در نهایت ناباوری درست شد همه چی!!!
    ولی تو عمل هیج اتفاقی نمی افته کلا.حالا پایه ای رو باید به جایی وصل کنم؟کریستال می خواد؟یا کد کامل نیس جاییش مشکل داره؟توی کد باید فیوز بیت یا تنظیمی رو ست کنم؟!
    اگه کسی با این میکرو کار کرده کمک کنه لطفا کارم گیره.. :cry2:
    -

    #2
    پاسخ : مشکل با PIC12F675

    در تراشه های پیک باید پایه ریست رو با یه مقاومت مثلا 10 کیلو به Vcc وصل کنید ؛ انجامش دادید ؟

    دیدگاه


      #3
      پاسخ : مشکل با PIC12F675

      سلام



      در هنگام پروگرام کردن باید نوع اسیلاتور رو انتخاب کنی
      از چه پروگرامری استفاده می کنی؟
      با صفر کردن بیت پنجم دیگه نیازی نیست پایه ریست رو به 5 ولت وصل کنی (داخلی وصل میشه)
      برای انتخاب اسیلاتور داخلی هم بیت های 0 تا 2 باید دارای مقدار 100 یا 101 باشه
      شما زندگي مي کنيد من بازي ميکنم، زندگي شما را; زندگي بازي خدا و يک عروسکِ گِلي ست

      دیدگاه


        #4
        پاسخ : مشکل با PIC12F675

        سلام.
        اگه تو پروتیوس هم برنامت کار نمیکنه مشکل از Configuration Word نیست.
        توجه داشته باشین که در اکثر میکروکنترلرهای 8 پین، پورتها با نام GP شناخته میشن. به عبارتی ما پورت A و ... نداریم.
        تو Help کامپایلر دنبال GPIO بگرد.
        به عبارتی باید دستورات پورت برای میکروهای 8 پین، مثلا به صورت set_GPIO و... باشه.

        اگر هم چنین دستوری پیدا نکردین، بهتره که رجیسترهای GPIO رو تعریف کنین (منظورم هم رجیستر TRIS و هم رجیستر PORT هستش) و مستقیما با رجیسترها کار کنین. مثلا به صورت زیر:

        #include <16F1823.H>

        #fuses INTRC_IO,NOWDT,NOPROTECT,MCLR
        #use delay(clock=8M)

        #use fast_io(A)

        #byte PORTA = 0x00C
        #byte TRISA = 0x08C
        #byte ANSELA = 0x18C
        #byte LATA = 0x10C

        void main()
        {

        setup_oscillator(OSC_8MHZ|OSC_PLL_ON);
        //setup_oscillator(OSC_8MHZ | OSC_NORMAL | OSC_PLL_ON);

        ANSELA = 0x00;
        TRISA = 0b00000111;

        while(TRUE)
        {
        LATA = 0b00000000;
        delay_ms(1600);
        LATA = 0b00000111;
        delay_ms(1600);
        }

        }

        البته کد بالا برای 16F1823 هست.
        خویشتن را اصلاح کنید تا خداوند کارها را اصلاح کند. امیر المومنین علی (ع)

        دیدگاه

        لطفا صبر کنید...
        X