اطلاعیه

Collapse
No announcement yet.

مشکل با PIC16F84A

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با PIC16F84A

    سلام. من برای اولین دفعه است که با یک PIC16F84A و کلا با PIC برنامه می نویسم. یک برنامه ساده نوشتم جواب نمیده
    #
    #include "C:\Documents and Settings\k1\Desktop\pic\main.h"


    void main()
    {

    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    output_high(PIN_B0);
    output_low(PIN_B1);
    // TODO: USER CODE!!
    output_bit( PIN_B0, 0);
    output_bit( PIN_B1, 1);


    }

    اما جواب نمیده(B.1 هنوز صفر ولت) نمی دونم چرا؟
    ایا نیاز به کریستال داره؟
    در ضمن من برنامه رو با PIC C Compiler نوشتم و برای پروگرام کردن از MPLAB IDE v8.43 استفاده می کنم.
    اگر نیاز به تنظیم کریستال داخلی داره چطور باید این کار رو انجام بدم.

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

    نوشته اصلی توسط کیوان جافرزاده
    سلام. من برای اولین دفعه است که با یک PIC16F84A و کلا با PIC برنامه می نویسم. یک برنامه ساده نوشتم جواب نمیده
    #
    #include "C:\Documents and Settings\k1\Desktop\pic\main.h"


    void main()
    {

    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
    output_high(PIN_B0);
    output_low(PIN_B1);
    // TODO: USER CODE!!
    output_bit( PIN_B0, 0);
    output_bit( PIN_B1, 1);


    }

    اما جواب نمیده(B.1 هنوز صفر ولت) نمی دونم چرا؟
    ایا نیاز به کریستال داره؟
    در ضمن من برنامه رو با PIC C Compiler نوشتم و برای پروگرام کردن از MPLAB IDE v8.43 استفاده می کنم.
    اگر نیاز به تنظیم کریستال داخلی داره چطور باید این کار رو انجام بدم.
    سلام.
    مدار ریست میکرو رو بستی؟ اینا مثل AVR نیستند که اگر مدار ریستشون رو نبندی هم کار کنن.
    یک چیز دیگه، من الان درست یادم نمیاد که به صورت پیش فرض، پورت ها ورودی بودن یا خروجی، در هر حال شما پورت B رو هم روی خروجی تنظیم کن.

    دیدگاه


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

      موقعی که پروژه جدید رو ایجاد کردم پورت B رو به عنوان خروجی تعریف کردم. مدار ریست رو هم بستم به این صورت که مقاوم 10کیلو رو به 5 ولت به پیاه ریست زدم و از اون طرف هم زمین رو از طریق یک شاسی به ریست دادم.اما باز کار نمیکنه :angry:

      دیدگاه


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

        نوشته اصلی توسط کیوان جافرزاده
        موقعی که پروژه جدید رو ایجاد کردم پورت B رو به عنوان خروجی تعریف کردم. مدار ریست رو هم بستم به این صورت که مقاوم 10کیلو رو به 5 ولت به پیاه ریست زدم و از اون طرف هم زمین رو از طریق یک شاسی به ریست دادم.اما باز کار نمیکنه :angry:
        خوب بیا آخر برنامه ات یک
        کد:
        while(true){}
        هم اضافه کن ببین فرقی میکنه؟
        بعدش هم، نیازی نبود اصلا تایمر رو تنظیم کنی.

        دیدگاه


          #5
          پاسخ : مشکل با PIC16F84A

          سلام.من با PIC basic بیشتر کار کردم ولی خب تا حدی هم از C سردرمیارم.به برنامه ات نگاه کردم.احتمالا یه نکته ی کوچولو رو یادت رفته. :nerd:بین دستورهایی که به خروجی صفر و یک میدی یه وقفه حداقل 300میلی ثانیه بزار تا بتونی روشن و خاموش شدن LED رو ببینی. :agree:

          دیدگاه


            #6
            پاسخ : مشکل با PIC16F84A

            نوشته اصلی توسط شاهرخ
            سلام.من با PIC basic بیشتر کار کردم ولی خب تا حدی هم از C سردرمیارم.به برنامه ات نگاه کردم.احتمالا یه نکته ی کوچولو رو یادت رفته. :nerd:بین دستورهایی که به خروجی صفر و یک میدی یه وقفه حداقل 300میلی ثانیه بزار تا بتونی روشن و خاموش شدن LED رو ببینی. :agree:
            آخه ایشون اصلا چرخه استفاده نکرده که بخوان روشن و خاموش شدن متناوب رو ببینن.
            فقط یک برنامه است که باید خروجی رو روی مقدار مورد نظر ببره و همون جا هم وایسه، برای همین هم به Endless Loop احتیاجه.
            یعنی کلا همه برنامه ها این Endless loop رو میخوان چون در غیر اینصورت PC از حدود برنامه خارج میشه و میره روی فضای آدرسی که اصلا برنامه ای روش ریخته نشده.
            البته توی کامپیوتر اگر این اتفاق بیفته Trap رخ میده اما در مورد PIC نمیدونم سیاست طراحاش چی بوده.

            دیدگاه


              #7
              پاسخ : مشکل با PIC16F84A

              #include "C:\Documents and Settings\k1\Desktop\pic\main.h"


              void main()
              {
              output_bit( PIN_A0, 1);
              output_bit( PIN_A1, 1);
              output_bit( PIN_A2, 1);
              output_bit( PIN_A3, 1);
              output_bit( PIN_A4, 1);
              output_bit( PIN_B1, 1);
              output_bit( PIN_B2, 1);
              output_bit( PIN_B3, 1);
              output_bit( PIN_B4, 1);
              output_bit( PIN_B5, 1);
              output_bit( PIN_B6, 1);
              output_bit( PIN_B7, 1);
              while(true){}
              // TODO: USER CODE!!

              }
              برنامه رو به صورت زیر اصلاح کردم بازم نشد
              غیر از پایه های Vdd,Vss,Reset نیاز به اتصال پایه های دیگه هم هست؟

              دیدگاه


                #8
                پاسخ : مشکل با PIC16F84A

                نوشته اصلی توسط کیوان جافرزاده
                #include "C:\Documents and Settings\k1\Desktop\pic\main.h"


                void main()
                {
                output_bit( PIN_A0, 1);
                output_bit( PIN_A1, 1);
                output_bit( PIN_A2, 1);
                output_bit( PIN_A3, 1);
                output_bit( PIN_A4, 1);
                output_bit( PIN_B1, 1);
                output_bit( PIN_B2, 1);
                output_bit( PIN_B3, 1);
                output_bit( PIN_B4, 1);
                output_bit( PIN_B5, 1);
                output_bit( PIN_B6, 1);
                output_bit( PIN_B7, 1);
                while(true){}
                // TODO: USER CODE!!

                }
                برنامه رو به صورت زیر اصلاح کردم بازم نشد
                غیر از پایه های Vdd,Vss,Reset نیاز به اتصال پایه های دیگه هم هست؟
                نه، البته اگر نوسان ساز داخلی استفاده میکنید.
                یک چیزی، یک مقاومت پول پ خودتون اضافه کنید به پایه ای که میخواید یک باشه ببینید تفاوتی حاصل میشه؟

                دیدگاه


                  #9
                  پاسخ : مشکل با PIC16F84A

                  چطور نوسان ساز داخلی رو فعال کنم؟
                  موقع نوشتن برنامه یا پروگرام کردن؟

                  دیدگاه


                    #10
                    پاسخ : مشکل با PIC16F84A

                    با سلام
                    دوست عزیز اولا میکروهای سری PIC16 اوسیلاتور داخلی ندارن و واسه راه اندازیشون باید از اوسیلاتور خارجی استفاده کنی. در ضمن شما از کامپایلر CCS استفاده کردین باید اولا فایل هدر میکروتون رو وارد کنید دوما اوسیلاتور رو تنظیم کنید سوما فایل زیر رو دانلود کنید که فک کنم همه مشکلاتتون تو این ضمینه حل میشه

                    http://www.4shared.com/file/TaAdq_5V/TEST.html

                    موفق باشید

                    دیدگاه


                      #11
                      پاسخ : مشکل با PIC16F84A

                      من نمیدونستم سری ۱۶ نوسان ساز داخلی نداره، چون فقط با سری ۱۸ کار کرده بودم.
                      اما در مورد بقیه اش، احتمالا فایل هدر میکرو توی main.h هستش چون در غیر اینصورت اصلا کامپایل نمیشه.
                      اما اون تصحیحاتی هم که گفتم رو بگذارید توی پروژه تون باقی بمونه (مثل حلقه بدون انتها و ...، البته میتونید کل برنامه رو توی حلقه بدون انتها بنویسید به جای اینکه حلقه در پایان برنامه باشه)، در مورد مقاومت پول پ هم، خود پورت B یک پول پ ضعیف داره که البته باید فعال شه (با نرم افزار) برای اینکه ببینید چطور باید فعالش کنید، خود دیتاشیت میکرو رو نگاه کنید قسمتی که پورت B رو توضیح داده (یا برای پورت A قسمتی که مال این پورت هست رو ببینید تا مطمئن شید اصلا پورت A پول پ داخلی داره یا نه) خودش گفته که چه رجیستر ها و بیت هایی باید تغییر کنن.

                      دیدگاه


                        #12
                        پاسخ : مشکل با PIC16F84A

                        عرض سلام و خسته نباشید
                        دوستان اسیلاتور داخلی کاری به سری میکرو نداره، در هر سری از این pic ها تراشه هایی هست که اسیلاتور داخلی ندارند بعضی ها هم هست دارند مثلا در همین سری 16 تراشه 16F630 اسیلاتور داخلی داره و در بازار هم هست.
                        از آنجا که گاهی فرصت بازخوانی پست نیست، بابت غلط های املایی و نگارشی احتمالی معذرت میخوام.
                        هیچیک از پاسخ هایی که میدم را کاملا تایید نمیکنم و ممکن هست اشتباه کرده باشم، اگر من به نوشته ام مطمئن هستم شما مشکوک باشید.
                        اگر در حل مشکل من کمک کردید و دکمه تشکر رو نزدم حتما فراموش کردم کوچکترین کمک شما برایم ارزشمند است!
                        اگر به هر طریقی از من ناراحت شدید حتما با یک پیام خصوصی تذکر بدهید تا مشکل رو حل کنیم و رابطه ی صمیمانه، پایدار بماند.
                        شاد و موفق باشید

                        دیدگاه


                          #13
                          پاسخ : مشکل با PIC16F84A

                          اقا یه سوال : PIC ها User Manual یا چیزی شبیه به این ندارن ؟ آخه توی دیتا شیت هیچی ننوشته . اصلا دیتا شیتاش به پای اتمل نمیرسه . احتمالا باید برای سری های مختلف یه چیزی تو مایه های User Manual داشته باشند مثلا برای 16 و 18 و 24 و dSها و ... .
                          بگذارعشق خاصیت تو باشد نه رابطه خاص تو باکسی
                          موفقیت پیش رفتن است نه به نقطه ی پایان رسیدن
                          نلسون ماندلا

                          دیدگاه


                            #14
                            پاسخ : مشکل با PIC16F84A

                            سلام

                            اول اینکه اصلا چرا TIMER0 v رو ست کردی می خوای ازش چه استفاده ای کنی.
                            دوم اینکه شما یه پایه رو صفر کردی بعد پشت سرش یک و یه پایه دیگه رو هم برعکس اونم بدون لوپ معلومه که باید آخرین حالت رو بهتون نشون بده .یعنی
                            PIN_B0, 0
                            PIN_B1, 1
                            سوم اینکه این حرف که سری 16 اسیلاتور داخلی ندارن اشتباهه مثلا 16f88/89 یا 16f818/819 یا....
                            چهارم اینکه این برنامه رو تست کن برای خاموش و روشن کردن LED


                            #include <16f877A.h> //micro name
                            #use delay(Clock=20000000) // oscillator frequency
                            void main()
                            {
                            set_tris_b(0x00); //set port b as outputs
                            port_b_pullups(true);
                            while(true)
                            {
                            delay_ms(1000); //wait 1
                            output_low(PIN_B0); //set portb.0 ( turn on led)
                            delay_ms(1000); //wait 1
                            output_high(PIN_B0) ; //reset portb.0 ( turn off led)
                            }
                            }

                            و در آخر اینکه در میکرو های سری 16 میکروی 16f877 به عنوان یک میکروی مبتدی شناخته می شه که بهتره از اون شروع کنید
                            یه تاپیک تو چنتا صفحه اول همین فروم PIC هست که کلی در مورد کریستال صحبت کرده

                            اینم دستورات برای فعال سازی نوسان ساز داخلی به شرط وجود داشتن
                            SETUP_OSCILLATOR( )

                            و با دستور
                            #fuse options
                            می تونی کلی پارامتر رو تنظیم کنی

                            موفق باشی

                            دیدگاه


                              #15
                              پاسخ : مشکل با PIC16F84A

                              با سلام
                              من هم به این مشکل برخورد کرده ام که پس از تکمیل اتصلات حال آی سی روشن نمی شود . کار پروگرام را با پروگرامر شرکت نوآوران انجام دادم ولی آی سی هیج عکس العملی نشان نمی دهد کریستال مورد استفاده 12 مگ و خازن های آن 33 پیکو می باشد و یک برنامه ساده چشمک زن پلود کرده ام ولی به هیچ عنوان کار نمی کند لطفا کمک کنید.

                              دیدگاه

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