اطلاعیه

Collapse
No announcement yet.

آموزش میکروکنترولر PIC با MPLAB C

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

    #91
    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

    سلام به همه مهندسین گرامی.
    دوستان من با کامپایلر c18 در محیط mplab x یه برنامه نوشتم که غلط زیر رو میگیره .باید چیکارش کنم.ممن.ن از کمکتون
    Error - section '.idata_main.o' can not fit the section. Section '.idata_main.o' length=0x000001db
    Errors : 1

    دیدگاه


      #92
      پاسخ : آموزش میکروکنترولر PIC با MPLAB C

      سلام دوستان.
      تصمیم جدی گرفتم که با کمک خدا و آموزشهای استاد گرانقدر جناب baby_1 کار با MPLABX رو یاد بگیرم و دست از تنبلی بردارم! ( با اینکه جناب baby_1 معلوم نیست کی بیان یا اصلا بیان یا نه؟ :cry: :cry2: و از کمک های ایشون بی بهره هستیم و نمیدونم تا کجا میتونم کار رو جلو ببرم.به هر حال مثل ایشون نمیشه! ) خلاصه...
      اومدم از اول شروع کردم قدم به قدم کار هایی که تو صفحه اول هست رو انجام دادم.با این تفاوت که میکروی 18F452 نداشتم و به جاش از همون اول 18F4550 گذاشتم که یه دونه دارم م چشم امید دارم بهش! اول بسم الله ایراد گرفت و بعد از کلی زیر و رو کردن متوجه اشکال کار شدم.با توجه به نوع میکرو تنظیمات رجیسترها رو باید تغییر بدیم و این کاملا طبیعیه و MPLABX اومده کار رو راحت کرده.کافیه یه سر به Help بزنین و متوجه این قضیه بشین.تصاویر تا حد زیادی گویا هست:






      بعد از انتخاب شماره ی ابتدایی میکرو، میریم و نوع میکرو رو انتخاب میکنیم که تو دوتا عکس تفاوت اولیه بین رجیسترهای 18F452 و 18F4550 مشخص هست:





      پس خیلی ساده، توی کد به جای دستور
      کد:
      #pragma config OSC = HS
      طبق همین جدول قرار میدیم:
      کد:
      #pragma config FOSC = HS
      میدونم خیلی ساده بود، اما فعلا تا همینجا فرصت کردم انجامش بدم و تست کنم! :redface:

      دیدگاه


        #93
        پاسخ : آموزش میکروکنترولر PIC با MPLAB C

        سلام جناب مهندس شاهرخ
        از اینکه زحمت ادامه آموزش این بخش رو میکشید کمال تشکر را از شما دارم
        اما بهتر نیست به جای کامپایلر c18 از xc8 استفاده کنید؟

        دیدگاه


          #94
          پاسخ : آموزش میکروکنترولر PIC با MPLAB C

          نوشته اصلی توسط yadegari
          سلام جناب مهندس شاهرخ
          از اینکه زحمت ادامه آموزش این بخش رو میکشید کمال تشکر را از شما دارم
          اما بهتر نیست به جای کامپایلر c18 از xc8 استفاده کنید؟
          سلام.خواهش میکنم.یکی از علل به تأخیر افتادن ادامه ی کار همین هست.میخوام از C18 سوئیچ کنم به XC8 که جامع تر هست و هر نوع میکروی 8بیتی رو ساپورت میکنه.لذا اومدم آخرین ورژن MPLABX که میشه1.7 رو دانلود کردم و کنارش فقط کامپایلر XC8 رو نصب کردم تا به هر زوری که شده با XC8 کار کنم. :rolleyes:
          فعلا با مشکلات فنی!! رو به رو شدم...
          ضمنا از همینجا اعلام میکنم که بنده یه آدم معمولی هستم و فقط میخوام همت بکنم تا این کامپایلر رو یاد بگیرم و خودتون هم بهتر میدونین که واسه آموزش این کامپایلر مرجع مناسب فارسی وجود نداره.منم یه آدم تازه کار هستم و چون شروع کردم به قرار دادن تجربیاتم تو کنکاش این کامپایلر دلیل نمیشه که از همه چیزش سردر بیارم و هرجایی که بلد نبودم اعلام میکنم که بلد نیستم و از دوستان کمک خواهم خواست.هر جایی هم که مطمئن نبودم جلوی توضیحی که نوشتم علامت سوال میزارم به این شکل (؟) تا اگه کسی بیشتر اطلاعات داره تذکر بده و اصلاحش کنم.
          خب...و اما...!!
          بیاین کمک!
          فعلا تا اینجا متوجه شدم که اول هر برنامه باید این کد رو داشته باشیم(؟) :
          کد:
          #include<xc.h>
          اما یه جای قضیه مورد داره.میخوام تاخیری بین برنامه داشته باشم.با زیر و رو کردن help متوجه شدم که این دستورات واسه ایجاد تاخیر هست:
          کد:
          __delay_ms(x) // request a delay in milliseconds
          __delay_us(x) // request a delay in microseconds
          اما وقتی یکی از این دستورات رو استفاده میکنم Error میده که باید فرکانس میکرو رو بر حسب هرتز مشخص کنی با این دستور
          کد:
          _XTAL_FREQ
          اما راهنمایی درست و حسابی ای راجع به این دستور ندیدم.فقط یه قطعه کد دیدم که اومدم اون رو وارد برنامه کردم به این شکل:
          کد:
          #define _XTAL_FREQ=(4000000L)
          اما اینبار این Error ها وجود دارن:
          expression syntax
          too few function arguments
          &quot" expected
          expression syntax
          تمامی Error ها هم به همون خط تاخیر مربوط میشه...
          این هم کل کدی که نوشتم:
          کد:
          #include<xc.h>
          #include<p18f4550.h>
          #include <delays.h>
          #pragma config FOSC = HS
          #pragma config PWRT=ON
          #pragma config BOR=OFF
          #pragma config WDT=OFF
          #define _XTAL_FREQ=(20000000L)
          
          void main(void) {
            TRISD = 0;
            while (1) {
              PORTD = 0;
              __delay_ms(100);
              PORTD = 255;
              //__delay_ms(800);
            }
          }

          دیدگاه


            #95
            پاسخ : آموزش میکروکنترولر PIC با MPLAB C

            خب فعلا بعد از کلی گشتن این PDF رو پیدا کردم و با ترفندهای مناسب!! از سایت میکروچیپ دانلودش کردم.لینک فایل پلود شده خدمت دوستان گرامی:
            http://s4.picofile.com/file/77399025...piler.pdf.html
            طبق صفحه ی 25 این فایل باید عبارت

            کد:
            #include<xc.h>
            تو ابتدای هر کد بیاد.

            2.5.1 Generic Header File
            A single header file <xc.h> must be used to declare all compiler- and device-specific
            types and SFRs. You must include this file into every module to conform with the CCI.
            Some CCI definitions depend on this header being seen.
            2.5.1.1 EXAMPLE
            The following shows this header file being included, thus allowing conformance with the
            CCI, as well as allowing access to SFRs.
            #include <xc.h>

            دیدگاه


              #96
              پاسخ : آموزش میکروکنترولر PIC با MPLAB C

              کد شما بدین صورت تصحیح شد
              کد:
              #include<xc.h>
              #include<p18f4550.h>
              #include <delays.h>
              #pragma config FOSC = HS
              #pragma config PWRT=ON
              #pragma config BOR=OFF
              #pragma config WDT=OFF
              #define _XTAL_FREQ 20000000L
              
              void main(void) {
                TRISD = 0;
                while (1) {
                  PORTD = 0;
                  __delay_ms(20);
                  PORTD = 255;
                  //__delay_ms(800);
                }
              }

              دیدگاه


                #97
                پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                بسیار ممنونم.بله منم تازه متوجه شدم قضیه از کجا آب میخورد.فقط یه مطلبی واسم مبهم هست. اگه من بخوام یه تاخیر 1 ثانیه ای یا بیشتر ایجاد کنم باید چیکار کنم؟
                چون تابع
                کد:
                 __delay_ms(20);
                با کریستال 4 مگاهرتزی فقط تا 197میلی ثانیه میشه تاخیر ایجاد کرد.بیشتر از اون رو ایراد میگیره.

                مورد بعدی به این لینک و تصاویر نگاه کنین:

                http://microchip.wikidot.com/mplab:h...iguration-bits







                با این کدهای تولید شده واسه Config میکرو چیکار میشه کرد؟
                من اومدم اول برنامه این کد رو نوشتم و ایرادی نگرفت:
                کد:
                #include "config.h"
                البته فایل رو با همین اسم config.h تو مسیر پروژه ذخیره کرده بودم...

                دیدگاه


                  #98
                  پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                  http://www.ohio.edu/people/uijtdeha/...13_c_part1.pdf

                  http://www.ohio.edu/people/uijtdeha/...13_c_part2.pdf

                  این فایل هم که خداوکیلی خیلی باحاله! خلاصه و مختصر و مفید... بسی لذت بردم! :nerd:

                  دیدگاه


                    #99
                    پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                    دوستان من مشکله خاصی با sprintf دارم
                    کتابخانه lcd 4 بیت رو پس از ویرایش شخصی درست کردم
                    و مشکلی در نمایش ندارد
                    اما همین که خروجی به شکل زیر به برنامه میدم lcd قاطی میکنه
                    کد:
                    sprintf(buf,"%d",a);
                    هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                    بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                    میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                    تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                    دیدگاه


                      پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                      آقا با اجازه همه مخصوصا جناب baby
                      من همه آموزش هائی که دادند تبدیل به فایل chm کردم برای راحتی کار هر کسی میخواد میتونه دان کنه :mrgreen:
                      http://wdl.persiangig.com/pages/down...angig.com/MPLA


                      لینک دوم
                      MPLAB.rar - 60 KB

                      دیدگاه


                        پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                        سلام.از زحمتی که کشیدین ممنونم.فقط لینک دانلود ایراد داره.

                        دیدگاه


                          پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                          یک لینک دیگه اضافه کردم بهش . لینک اولم دیشب خوب بود؟؟؟

                          دیدگاه


                            پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                            نوشته اصلی توسط jonbakhsh
                            یک لینک دیگه اضافه کردم بهش . لینک اولم دیشب خوب بود؟؟؟
                            می توانیدازاینجادانلودکنیدhttp://proton.rozblog.com/post/60
                            برای ورود علم ، تکنولوژی ، پیشرفت به اجازه کسی احتیاج نیست !

                            دیدگاه


                              پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                              تمامی کامپایلر ها کامل با لینک مستقیم
                              http://www.eca.ir/forum2/index.php?topic=77705.new
                              موفق و شاد باشید .
                              if all men are the same
                              then
                              why do women take so long to choose one ?

                              دیدگاه


                                پاسخ : آموزش میکروکنترولر PIC با MPLAB C

                                با سلام خدمت دوستان.
                                من با میکرو 18f452 برنامه یک سنسور جریان و تو mplab نوشتم و برای خروجیش از یکlcd استفاده کردم.چ
                                یک عدد بزرگ(6رقمی) که int تعریف شده و در sprintf که دارای متغیر رشته ای است میخوام قرار بدم که رو lcd نمایش بدم چطور اینکارو بکنم؟
                                چون فقط 0 رو نشون میده. :cry:

                                دیدگاه

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