اطلاعیه

Collapse
No announcement yet.

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

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

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

    با سلام

    نوشته اصلی توسط saeidmo
    یه سوال دیگه میشه در مورد اینتراپت خارجی و تایمر2 یه مثال بزنید او ل برنامه pragma# واسه اینتراپتم لازمه ؟
    استفاده از وقفه ها در C18 شکل خاصی دارد

    این کامپایلر به صورت خودکار روتین وقفه ( ISR ) را در جدول بردار وقفه قرار نمیدهد

    همان طور که میدانید بعد از رخ دادن وقفه , میکروکنترلر انجام کار های طبیعی خود را رها کرده و به آدرس خاصی از حافظه میپرد ( موقتا )
    این آدرس در میکرو های سری 18F در اولویت بالا 0x08 و در اولویت پایین 0x18 است

    پس چنانچه بخاهید در این کامپایلر از وقفه استفاده کنید باید ISR خود را در آدرس های مربوطه بنویسید

    این امر به وسیله #pragma code انجام میشود

    به صفحه های 68 و 76 پی دی اف زیر که دو برنامه نمونه هست دقت کنید


    http://fadak-srt.persiangig.com/other/mplab-d/MPLAB_C18_Users_Guide_51288j.pdf


    همچنین کتاب " میکروکنترلر های PIC برنامه نویسی اسمبلی و C " نوشته دکتر مزیدی , انتشارات نص توضیحات کاملی در این رابطه ارائه کرده است

    پیروز و موفق باشید &lt
    نا امیدی یه دروغ بزرگه که آدما به خودشون میگن
    تلاش یه حقیقت بزرگه که با صبر به ثمر میرسه

    دیدگاه


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

      سلام مرسی از جوابتون :bye یه سوال دیگه تو pic اگه بخوام رو یه پایه کلاک مشخصی مثلا 20 مگاهرتز ایجاد کنم باید چکار کنم ؟ راستش واسه راه اندازی دوربینم باید این کلاکو ایجاد کنم بدم به پایه کلاک دوربین

      دیدگاه


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

        سلام
        نوشته اصلی توسط saeidmo
        سلام مرسی از جوابتون :bye یه سوال دیگه تو pic اگه بخوام رو یه پایه کلاک مشخصی مثلا 20 مگاهرتز ایجاد کنم باید چکار کنم ؟ راستش واسه راه اندازی دوربینم باید این کلاکو ایجاد کنم بدم به پایه کلاک دوربین
        در صورتی که از همون میکرو PIC18f452 استفاده می کنین ساخت چنین فرکانسی برای شما در مد HS امکان پذیر نیست
        نهایت فرکانس کاری میکرو 40 مگاهرتز هست (ورودی ) و با تقسیم آن بر عدد 4 ، نهایت سرعت شما برای اجرا 10 مگاهرتز هست ، طبق آخرین تجربه ای که داشتم با فرکانس 1 مگاهرتز (ورودی 4 مگاهرتز)ماکزیمم فرکانسی که روی پایه میکرو ایجاد کردم 250 کیلوهرتز بود که با اسکوپ هم قابل دیدن هست.

        در مد HSPLL چنین فرکانسی هم برای ورودی بهتون جواب نمی ده چون نهایت فرکانس کاری میکرو Up to 10 MIPs operation هست و شما فرکانس زیاد و با انتخاب این مد هم وارد بشین امکان پذیر نیست

        پیشنهادم استفاده از تراشه های 32 بیتی تراشه های PIC هست که قدرت و سرعت بیشتری بر نمونه های 8 بیتی دارن
        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

        دیدگاه


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

          با سلام خدمت شما بازم مرسی از جواب کاملتون بنا به گفته شما تصمیم گرفتم از dspic30f4013 استفاده کنم ولی برای شروع میخوام با همون
          18f452 کلاک 10 مگاهرتز رو ایجاد کنم خواهشا میشه بگید چطور میشه این کارو کرد اگه یه مثال بزنید ممنون میشم

          اضافه شده در تاریخ :
          با سلام مجدد در مورد اسیلاتورهای خارجی است که با اعمال تغذیه به آنها، نوسان لازم را تامین می کنند چیزی می دونید اگه اره میشه اسم این اسیلاتورا
          رو بهم بگید؟

          اضافه شده در تاریخ :
          اقا این مشکل ما هم حل شد دمتون گرم تو سایت ایران میکرو پیداش کردم :bye
          http://iran-micro.com/index.php/cPath/284_62

          اضافه شده در تاریخ :
          اقا baby_1 دیتا شیت این میکرو خیلی برام جالب بود حیفم اومد اساتیدی مثل شما در مورد اون نظر ندن و اینکه تو ایرانم پیدا میشه اون چیزی که برام خیلی جالب بودرگولاتور داخلی 3.3 ولت و محدوده ولتاژ 1.5 تا 5.5 ولت. اسیلاتور داخلی تا 16 مگاهرتز. دیپم که هست و با ضرب کننده اگه اشتباه نکنم میشه
          فرکانسو به 64 مگا رسوند بازم اگه اشتباه کردم ممنون میشم اصلاحش کنید بی صبرانه منتظر جواب شما و دیگر دوستان هستم
          http://datasheet.octopart.com/PIC18F...t-10122143.pdf

          دیدگاه


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

            سلام
            شرمنده یه مدت کمتر می رسم بیام سایت
            با سلام خدمت شما بازم مرسی از جواب کاملتون بنا به گفته شما تصمیم گرفتم از dspic30f4013 استفاده کنم ولی برای شروع میخوام با همون
            18f452 کلاک 10 مگاهرتز رو ایجاد کنم خواهشا میشه بگید چطور میشه این کارو کرد اگه یه مثال بزنید ممنون میشم
            دیتاشیت تراشه PIC18f452 رو مطالعه فرمایید می بینین که Up to 10 MIPs operation با نهایت فرکانس 40 مگاهرتز شما می تونین با سرعت 10 مگاهرتز میکروتون کار کنه ، حالا اگر شما بخواین فرکانس 10 مگاهرتز رو تولید کنین باید 200 نانو ثانیه یک کنین خروجی و 200 نانو ثانیه صفر ، که با این فرض شما مشکلی نخواهین داشت برای درست کردم فرکانس 10 مگاهرتز
            اما وقتی پای دو فاکتور دیگه می یاد متوجه می شین که با pic18f452 نمی تونین فرکانس 10 مگاهرتز رو تولید کنین و دو فاکتور به شرح زیر هستن
            1-شما نباید به جز تولید فرکانس کار دیگه با میکروتون انجام بدین
            2-با وجود پرش ها که دو سیکل ساعت طول می کشن و همچنین معکوس کردن خروجی(یکبار خواندن وضعیت پورت و عکس کردن آن یا تغییر متغییر با یک شرط) به چند سیکل اضافه احتیاج خواهین داشت که این تاخیر های دستورات دیگر مانع از اجرا دستورات در زمان لازم برای تولید فرکانس 10 مگاهرتز می شن
            یعنی به صورت کلی شما نمی تونین با این میکرو فرکانس 10 مگاهرتز رو تولید کنین و باید از تراشه هایی با سرعت بالاتر استفاده کنین


            ممنونم از توضیحات تراشتون
            ولتاژ 3.3 ولت داخلی برای هسته در نظر گرفته شده است که توانایی کار با 3.3 ولت که به صورت داخلی تهیه می شود و همچنین اگر بخواین با فرکانس های بالاتر کنین می تونین از ولتاژهای 5 ولت نرمال استفاده کنین که آرایش استفاده از 3.3 ولت ورودی یا 5 ولت در دیتاشیت آمده شده است

            با سلام مجدد در مورد اسیلاتورهای خارجی است که با اعمال تغذیه به آنها، نوسان لازم را تامین می کنند چیزی می دونید اگه اره میشه اسم این اسیلاتورا
            رو بهم بگید؟
            نوسان سازهای مختلفی وجود داره که بسته به آرایش و قطعات به کار گرفته شده اسم و عنواین مختلفی دارند ، اگر نمونه خاصی مد نظرتون هست بفرمایید تا ان شالله بتوان کمک بهتری کرد

            هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

            دیدگاه


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

              سلام مهندس مرسی از جوابتون
              ولتاژ 3.3 ولت داخلی برای هسته در نظر گرفته شده است که توانایی کار با 3.3 ولت که به صورت داخلی تهیه می شود و همچنین اگر بخواین با فرکانس های بالاتر کنین می تونین از ولتاژهای 5 ولت نرمال استفاده کنین که آرایش استفاده از 3.3 ولت ورودی یا 5 ولت در دیتاشیت آمده شده است
              بینید ممنون میشم بیشتر توضیح بدید یعنی میگید اگه من بهش 3.3 ولت بدم نمیتونم از فرکانسهای بالا مثلا 64 مگا استفاده کنم اگه نه ماکزیمم
              فرکانسی که میتونم استفاده کنم چقدر می تونه باشه

              دیدگاه


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

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

                FMAX = (VDD – 1.72)/0.02 MHz

                هست یعنی اگر شما ولتاژ 1.8 ولت که مینیوم ولتاژ میکرو هست رو بدین نهایتا فرکانس کاریتون برای فعالیت مطمئن 4 مگاهرتز هست و برای بالاترین فرکانس کاری میکرو مینیوم ولتاژ باید 3 ولت باشه یعنی شما با 3.3 ولت مطمئن هستین که می تونین به راحتی در ماکزیمم سرعت میکرو کار کنین
                هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                دیدگاه


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

                  سلام، من کامپایلر MPLAB C رو نصب کردم گویا در انجمن مطرح شده بود که این کامپایلر خروجی فایل HEX ندارد ؟ چون من بعد از کامپایل مطالب یاد شده خروجی یاده شده را ندارم !
                  من در رابطه با همین موضوع رفتم کامپایلر HI-tech رو دانلود کردم گویا دستورات Delay وبعضی چیز های این کامپایلر فرق دارد از دوستان و بزرگواران ممنون میشم که بنده را راهنماییی نمایند .

                  اضافه شده در تاریخ :
                  دوستان من همین برنامه چشمک زن را نوشتم اما وقتی اجرا می کنی بدون هیچ اروری اصلا چشمک نمیزنه ؟ فایل رو هم چند بار کامپایل کردم درست مطابق نوشته حودتون!!
                  برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
                  یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

                  دیدگاه


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

                    سلام

                    نوشته اصلی توسط Fanoudi
                    سلام، من کامپایلر MPLAB C رو نصب کردم گویا در انجمن مطرح شده بود که این کامپایلر خروجی فایل HEX ندارد ؟ چون من بعد از کامپایل مطالب یاد شده خروجی یاده شده را ندارم !
                    من در رابطه با همین موضوع رفتم کامپایلر HI-tech رو دانلود کردم گویا دستورات Delay وبعضی چیز های این کامپایلر فرق دارد از دوستان و بزرگواران ممنون میشم که بنده را راهنماییی نمایند .
                    در ادیتور MPLAB بعد از کامپایل کردن پروژه آدرس قرار گیری فایل hex رو براتون نمایش می دهد(در عکس بیضوی سیاه رنگ) و سعی کنین حتما از کامپایلر c18 استفاده کنین نه hi-tech(چون آموزشها بر اساس c18 هست و توضیحات نصب هم بر این اساس بیان شده است)


                    نوشته اصلی توسط Fanoudi
                    دوستان من همین برنامه چشمک زن را نوشتم اما وقتی اجرا می کنی بدون هیچ اروری اصلا چشمک نمیزنه ؟ فایل رو هم چند بار کامپایل کردم درست مطابق نوشته حودتون!!
                    برنامه ها تمامی تست شده ان چک کنین که
                    کریستال مورد استفاده 4 مگاهرتز
                    میکرو pic18f452
                    و کانفیگ پایه های باید مطابق عکس همان پست صورت گرفته باشد

                    یادتون باشه پایه MCLR باید در سطح منطقی یک قرار گرفته باشد تا میکرو شروع به فعالیت کند
                    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                    دیدگاه


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

                      نوشته اصلی توسط baby_1
                      سلام

                      در ادیتور MPLAB بعد از کامپایل کردن پروژه آدرس قرار گیری فایل hex رو براتون نمایش می دهد(در عکس بیضوی سیاه رنگ) و سعی کنین حتما از کامپایلر c18 استفاده کنین نه hi-tech(چون آموزشها بر اساس c18 هست و توضیحات نصب هم بر این اساس بیان شده است)


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

                      یادتون باشه پایه MCLR باید در سطح منطقی یک قرار گرفته باشد تا میکرو شروع به فعالیت کند
                      با تشکر از شما :agree:
                      من همه کار ها رو کردم و موبه مو انجام شد ، یعنی همه چی درسته اما فایل شبیه سازی و سورس رو گذاشتم لطف کنید ببینید مشکل از چی هست من که موندم و دارم تعجب می کنم برنامه به این سادگی اجرا نمی شود ؛ ممنون می شوم راهنمایی کنید.

                      http://trainbit.com/files/3370149884/led-blink.X.zip
                      برای تغییر دادن در زندگی اول باید خودم تغییر کنم نه دیگران!
                      یک اشتباه جدید در زندگی بهتر از تکرار اشتباه قبلی است .

                      دیدگاه


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

                        سلام
                        برنامتون مشکل داره ، برنامه اولیه رو نگاه کنین باید برای مقدار دهی خروجی از ریجستر PORT استفاده کنین نه TRIS
                        برنامه به صورت زیر است

                        کد:
                        #include<p18f452.h>
                        #include <delays.h>
                        #pragma config OSC=HS
                        #pragma config PWRT=ON
                        #pragma config BOR=ON
                        #pragma config WDT=OFF
                        #pragma config LVP=OFF
                         
                        void main(void) {
                          TRISDbits.RD2=0;
                          while(1) {
                           PORTDbits.RD2=0;
                           Delay10KTCYx(10);
                           PORTDbits.RD2=1;
                           Delay10KTCYx(10);
                          }
                        }


                        ریجستر TRIS تنها بیان می کنه پورت رو به صورت ورودی تعیین کنین یا خروجی پس در برنامه شما همش داشتین سعی می کردین که پورت رو یه لحظه ورودی و لحظه دیگر خروجی تعریف کنین.در برنامه بالا پورت به صورت خروجی تعریف
                        TRISDbits.RD2=0
                        و سپس برای صفر یا یک کردن باید از دستور زیر استفاده کنین
                        PORTDbits.RD2=0;

                        PORTDbits.RD2=1;

                        هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                        دیدگاه


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

                          سعی کنین کمتر با پروتئوس کار کنین این نرم افزار خیلی از مشکلات عملی رو پوشش نمی ده یا خروجی برنامه مشکل داره.در اولین فرصت تراشه رو خریداری و نسبت به تست عملی اقدام کنین
                          هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                          دیدگاه


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

                            با سلام خدمت شما ببخشید میشه در مورد سیستمهای RTOS برای سری 16 بیتی یکم توضیح بدید تو مثال پایین اعداد تو پرانتز واسه چیه
                            کد:
                            [left][size=+2]
                              dsPICOS 1.03 is now released. It support dsPIC30F, and new PIC24F and dsPIC33F. Very easy to use, and same programming syntax for each family:
                             
                            void task1(void);
                            void task2(void);
                             
                            int main(void)
                            {
                            RTOS_Init();
                            RTOS_TaskCreate(task1, 64, 0, 1); //task, stack size, message queue size, priority
                            RTOS_TaskCreate(task1, 64, 0, 2);
                            RTOS_Start();
                            }
                             [/size][/left]

                            دیدگاه


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

                              سلام
                              متاسفانه من با سری 16 بیتی کار نکردم و بعد از 8 بیتی مستقیما به سراغ خانواده 32 بیتی رفتم ، برای این منظور که اطلاعات بیشتری پیدا کنین مستندات میکروچیپ و همچنین لایبراری های آن رو مطالعه کنین
                              هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

                              دیدگاه


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

                                سلام مهندس
                                RTOS سری 16 بیتی یا 32 بیتی با هم فرقی نمیکنه :nerd:من به راحتی نمیتونم از میکروچیپ دانلود کنم ولی 4 تا مثال تونستم گیر بیارم که هم از 32 بیتی ها و هم از 16 بیتی هاست. ولی یه مقدار تو تحلیلش کم اوردم :angry: بیشترم از این اعداد سر در نمیارم
                                RTOS_TaskCreate(task1, 64, 0, 1); //task, stack size, message queue size, priority
                                RTOS_TaskCreate(task1, 64, 0, 2
                                راستی این 32 بیتی ها رو میشه با pickit2 پروگرم کرد ؟
                                بازم شرمنده این قدر سوال می پرسم :wow:

                                دیدگاه

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