اطلاعیه

Collapse
No announcement yet.

پرسش و پاسخ آموزش کامپایلر XC8

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

    پرسش و پاسخ آموزش کامپایلر XC8

    ویرایش مدیر انجمن:
    (البته با عرض پوزش از جناب محمد دلفان که بدون اجازه دارم اینکار رو میکنم)
    سلام. تو این تاپیک هرکی سوال داره درباره ی کامپایلر XC8 و مخصوصا تاپیک آموزش کامل PIC تحت کامپایلر XC8 مطرح کنه تا دوست عزیزمون جناب abritco یا سایر دوستانی که تجربه دارن، بیان و جواب بدن. بنده رو معذور بدارین که خودم هم تو این کامپایلر تازه کار هستم.
    (ضمنا، با عرض پوزش از دوستانی که ارسالهاشون رو تو تاپیک آموزش کامل PIC تحت کامپایلر XC8 پاک کردم. :redface: )
    موفق باشیم.
    با سپاس-شاهرخ مستقیمی
    [hr]

    سلام دوستان میتونند در مورد کریستال خارجی و داخلی و نحوه استفاده از اونها یکم توضیح بدند.
    ممنون
    جدیدترین ویرایش توسط علی چمانی; ۱۷:۱۰ ۱۳۹۶/۰۶/۲۸.

    #2
    پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

    نوشته اصلی توسط محمد دلفان
    سلام دوستان میتونند در مورد کریستال خارجی و داخلی و نحوه استفاده از اونها یکم توضیح بدند.
    ممنون
    سلام شما ابتدا hlpPIC18ConfigSet.chm رو پیدا میکنید .(از طریق قسمت help یا توی محل نصب کامپایلر c18)سپس نگاه میکنید که میکرو شما چه حالت هایی رو برای اسیلاتور پشتیبانی میکنه مثلا برای 18f4550 یکی از حالاتی که داره FOSC = INTOSC_HS
    هستش که برای کریستال داخلی بیشتر از 4مگا هرتز کاربرد داره .بعد از اون شما در داخل mainتون رجیستر osc con رو مقدار دهی مکنید مثلا اگر OSCCON=0X66بگذارید میشود کریستال داخلی 4مگاهرتز.
    ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ‌فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
    شهید دکتر مصطفی چمران

    دیدگاه


      #3
      پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

      نوشته اصلی توسط phoenix2000
      سلام شما ابتدا hlpPIC18ConfigSet.chm رو پیدا میکنید .(از طریق قسمت help یا توی محل نصب کامپایلر c18)سپس نگاه میکنید که میکرو شما چه حالت هایی رو برای اسیلاتور پشتیبانی میکنه مثلا برای 18f4550 یکی از حالاتی که داره FOSC = INTOSC_HS
      هستش که برای کریستال داخلی بیشتر از 4مگا هرتز کاربرد داره .بعد از اون شما در داخل mainتون رجیستر osc con رو مقدار دهی مکنید مثلا اگر OSCCON=0X66بگذارید میشود کریستال داخلی 4مگاهرتز.
      سلام من از 18f2550 استفاده میکنم که اسلاتور داخلی داره اما من تا حالا تجربه عملی نداشتم سوال من اینه که وقتی ای سی رو پروگرم کنم و مدارمو ببندم دیگه نیازی به اسلاتور خارجی نیست همین اسلاتور داخلی کارمو راه میندازه
      در مورد تنظیم فرکانس هم ابهاماتی دارم اگه بیشتر راهنماییم کنید ممنون میشم

      دیدگاه


        #4
        پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

        نوشته اصلی توسط محمد دلفان
        سلام من از 18f2550 استفاده میکنم که اسلاتور داخلی داره اما من تا حالا تجربه عملی نداشتم سوال من اینه که وقتی ای سی رو پروگرم کنم و مدارمو ببندم دیگه نیازی به اسلاتور خارجی نیست همین اسلاتور داخلی کارمو راه میندازه
        در مورد تنظیم فرکانس هم ابهاماتی دارم اگه بیشتر راهنماییم کنید ممنون میشم
        اگر که تو تنظیمات پراگما که ابتدای برنامتون مشخص میشه اسیلاتور داخلی رو انتخاب کرده باشید مثلا برای همون مثالی که گفتم زده باشید:
        کد:
        #pragma config FOSC=INTOSC_HS
        دیگه نیازی نیست که از اسیلاتور خارجی استفاده کنید و کریستال بگذارید.بله کار راه انداز هست اما اگه پروژه صنعتی و حرفه ای باشه توصیه نمیشه کریستال داخلی بگذارید .ولی برای تست اشکالی نداره.
        در مورد تنظیم هم شما تو دیتاشیت میکروتون به دنبال اون رجیستری که گفتم باشید و با توجه به مقدارهایی که میتونید براش انتخاب کنید .مقدار کریستال داخلی تون رو تنظیم کنید .
        ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ‌فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
        شهید دکتر مصطفی چمران

        دیدگاه


          #5
          پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

          سلام
          با توجه به اینکه اگه اشتباه نکنم توابع delay_ms در حالتی که میکرو از اسیلاتور داخلی استفاده میکنه, کار نمیکنند!آیا راهکاری به جز کد نویسی و ایجاد حلقه های ساختگی برای ایجاد تاخیر وجود داره؟

          دیدگاه


            #6
            پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

            جناب دلفان عزیز توابع delay هیچ ربطی به اسیلاتور نداره،شاید شما اشتباه مینویسید اگر پست های قبلی همین تاپیک رو میخوندید متوجه میشدید که delay_ms رو دارید اشتباه مینویسید و دو تا اندرلاین رو نزاشتی.
            Someone who can change the world
            ELECTRONIC ENGINEER

            دیدگاه


              #7
              پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

              سلام

              این mplabبرای برنامه های زیاد هم جواب می ده رایگانه این یا کرک شدس

              دیدگاه


                #8
                پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                نوشته اصلی توسط abritco
                جناب دلفان عزیز توابع delay هیچ ربطی به اسیلاتور نداره،شاید شما اشتباه مینویسید اگر پست های قبلی همین تاپیک رو میخوندید متوجه میشدید که delay_ms رو دارید اشتباه مینویسید و دو تا اندرلاین رو نزاشتید،در اخر لطف کنید برای سوالاتتون تاپیک جدا بزنید.
                در مورد delay_ms درسته من اینجا اشتباه نوشتم اما تو برنامم درست نوشتم و با این خطا مواجه میشم
                newmain.c:73: error: (192) undefined identifier "_XTAL_FREQ"
                من اسیلاتور داخلی تعریف کردم با این خطا مواجه میشم هر وقت اسلاتور خارجی تعریف میکنم خطا برطرف میشه!خوب این معنیش چیه!!
                در مورد سوال هم بالای این تاپیک نوشته آموزش pic تحت xc8 فکر نکنم سوالم رو در تاپیک اشتباهی مطرح کرده باشم!تصور من این بود که واسه یه سوال جزیی یه تاپیک جداگانه نیاز نباشه و در همین تاپیک به این سوالات رسیدگی میشه!

                دیدگاه


                  #9
                  پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                  سلام من برای اولین بار یه برنامه برای pic18f2550 نوشتم و قصد دارم میکرو رو پروگرم کنم اما قبلش یه سری ابهامات دارم که اگه راهنماییم کنید ممنون میشم
                  1.در مورد مقداردهی و نحوه عملکرد رجیسترهایهای کنترلی اول برنامه مثل WDTE ,PWRTE,BOREN و....کلا مواردی که باید مدنظر قرار بدیم یه توضیحی بدید
                  2.در مورد اسیلاتور داخلی و خارجی و به خصوص نحوه استفاده از اسیلاتور داخلی اگه توضیح بدید ممنون میشم
                  3.در مورد نحوه پیاده سازی تاخیر هم ابهاماتی دارم
                  باتشکر

                  دیدگاه


                    #10
                    پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                    سلام.
                    برای فیوزبیت ها بهتره به دیتاشیت میکروکنترلرتون مراجعه کنید.
                    برای مثال wdte مخفف عبارت watchdog timer enable که تایمر واچداگ رو فعال میکنه.
                    یا lvp مخفف عبارت low voltage programming که بهتره صفر قرارش بدید و.....
                    برای مد های oscillator به صفحه 23 دیتاشیت مراجعه کنید به طور کامل توضیح داده.
                    برای تاخیرتون تو اسیلاتور داخلی از این عبارت استفاده کنید نتیجه رو گزارش کنید.
                    Delay10KTCYx(10) 1

                    Someone who can change the world
                    ELECTRONIC ENGINEER

                    دیدگاه


                      #11
                      پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                      میکرو ای که شما کار میکنید بسیار شبیه به میکرو 18F4550 میباشد و در یک گروه قرار میگیرند(با توجه به اینکه دیتاشیت هردو یکی است)
                      من کد زیر رو با این میکرو تست کردم .هم با کریستال داخلی و هم با خارجی .برای خارجی کردن کریستال تنظیم فیوزبیت مربوط به کریستال داخلی رو کامنت کنید و تنظیم بالاییش رو از حالت کامنت خارج کنید .OSCCON رو هم در main کامنت کنید.
                      کمپایلرمن xc8 1.32 هستش .اگر مشکلتون حل نشد کدتون رو در اینجا قرار بدید.
                      در ضمن در خصوص تنظیمات فیوز بیت هم در تاپیک آموزش xc8 مطلبی رو گذاشتم.
                      http://www.4shared.com/rar/Dc30SoQEba/xlcd_test.html
                      ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ‌فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                      شهید دکتر مصطفی چمران

                      دیدگاه


                        #12
                        پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                        نوشته اصلی توسط abritco
                        سلام.
                        برای فیوزبیت ها بهتره به دیتاشیت میکروکنترلرتون مراجعه کنید.
                        برای مثال wdte مخفف عبارت watchdog timer enable که تایمر واچداگ رو فعال میکنه.
                        یا lvp مخفف عبارت low voltage programming که بهتره صفر قرارش بدید و.....
                        برای مد های oscillator به صفحه 23 دیتاشیت مراجعه کنید به طور کامل توضیح داده.
                        برای تاخیرتون تو اسیلاتور داخلی از این عبارت استفاده کنید نتیجه رو گزارش کنید.
                        Delay10KTCYx(10) 1
                        سلام من برای اسیلاتور داخلی به این شکل عمل کردم
                        pragma config FOSC = INTOSC_EC
                        با توجه به دیتاشیت این مشخص کننده اسلاتور داخلیه اما دستور delay_ms خطا میده و میگه فرکانسی تعریف نشده با توحه به سرچی که در فروم میکروچیپ زدم باید فرکانس رو هم مشخص کنم به خاطر همین من دستور زیر رو هم ئارد کردم
                        #define _XTAL_FREQ 8000000
                        الان دیگه خطا نمیده برنامه رو کامپایل کردم مشکلی نداشت و کامل اجرا شد دیگه نمیدونم میکرو رو هم پروگرم کنم درست کار کنه یا نه چون هنوز الگوریتم موردنظر من آماده نشده و دارم روش کار میکنم
                        راستش تو کار با میکرو من آماتور حساب میشم چند ماهه دارم کار میکنم اونم فقط رو یه برنامه خاص مدنظر خودم
                        درمورد این دستور Delay10KTCYx(10) هم که فرمودید اصلا اشنایی ندارم که چجور کار میکنه فکر کنم کامپایلش کردم مشکلی نداشت الا سوالمن اینه چه فرقی با delay_ms داره؟

                        دیدگاه


                          #13
                          پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                          تو جلسه دوم اموزش xc8 به وضوح تاکید کردم روی موضوع دیفاین کردن XTAL_FREQ مشخصه اون جلسه رو نخوندید.
                          Delay_10KTCYx برای کامپایلر c18 و delay_ms برای کامپایلر xc8 میباشد با توجه به این که میکروی شما از خانواده 18 میباشد هر دوی این تاخیر ها براتون کار میکنه. فقط برای استفاده از کتابخوانه c18 باید delay.h رو اینکلود کنید.
                          Someone who can change the world
                          ELECTRONIC ENGINEER

                          دیدگاه


                            #14
                            پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                            نوشته اصلی توسط abritco
                            تو جلسه دوم اموزش xc8 به وضوح تاکید کردم روی موضوع دیفاین کردن XTAL_FREQ مشخصه اون جلسه رو نخوندید.
                            Delay_10KTCYx برای کامپایلر c18 و delay_ms برای کامپایلر xc8 میباشد با توجه به این که میکروی شما از خانواده 18 میباشد هر دوی این تاخیر ها براتون کار میکنه. فقط برای استفاده از کتابخوانه c18 باید delay.h رو اینکلود کنید.
                            چرا من اون جلسه رو خوندم آخه شما در اون جلسه تاکیدتون روی استفاده از کریستال خارجی بود!!مشکل من اینه که من که میخوام از اسیلاتور داخلی میکرو استفاده کنم چرا باید از دیفاین کردن XTAL_FREQ استفاده کنم؟اصلا همچین کاری نتیجه درستی میده؟
                            در مورد Delay_10KTCYx هم سرچ کردم ظاهرا این دستور بر اساس تعدا instruction cycles کار میکنه یعنی من باید ببینم با توجه به فرکانس سیستم یه دستور چقدر زمان میبره بعد تاخیر مورد نظرم رو بر حسب تعداد دستور محاسبه کنم

                            دیدگاه


                              #15
                              پاسخ : پرسش و پاسخ آموزش کامپایلر XC8

                              سلام
                              من سوالی داشتم درباره ی کامپایلر xc8
                              من با نسخه free کار کردم و هیچ مشکلی نبود تا وارد دستورهای i2c شدم
                              وقتی دستورای ()ReadI2C و ()WriteI2C رو می نویسم کامپایلر موقع کامپایل این خطارو میده
                              warning: (1273) Omniscient Code Generation not available in Free mode
                              و کد کامپایل نمیشه
                              اگر تجربه ای در این مورد دارید ممنون میشم که راهنمایی کنید

                              دیدگاه

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