اطلاعیه

Collapse
No announcement yet.

آموزش برنامه نویسی ARM سری SAM7 از 0 تا 100

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

    #16
    پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

    [code]
    کد:
    #include <AT91SAM7X256.H>            /* AT91SAMT7X256 definitions */
    فراخوانی فایل هدر
    کد:
    #include <lib_AT91SAM7X256.h>
    فراخانی فایل هدر
    کد:
    void wait(void);
    در خط دوممقداری فضا حافظه برای توابع فراخونی رزرو شده است.
    کد:
    int main (void) {
    شروع حلقه اصلی برنامه
    کد:
     AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
    b19 به عنوان خروجی تعریف میشود
    کد:
       AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
    b19صفر می شود
    کد:
       wait();
    تابع تاخیر فراخوانی میشود
    بارسیدن cpu به این خط به تابع پرش میشود

    کد:
       AT91F_PIO_SetOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19);
    پایه b19 یک میشود
    کد:
       wait();
    تابع تاخیر فراوانی میشود
    کد:
    }
    پایان حلقه اصلی
    کد:
    void wait (void) {
     unsigned int n;
     for (n = 0; n < 7372800; n++);
    }
    تابع تاخیر است
    آدلان پایا متخصص در حوضه ربات های پرنده
    https://adlanpaya.ir/

    دیدگاه


      #17
      پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

      مقدار زمانی که توسط روش بالا ایجاد میشود از رابطه زیر به دست می اید
      کد:
      زمان=(x*5)(f)
      Xمقدار رقمی است که در حلقه ی forشمرده می شود و fمقدار فرکانس کریستال بر حسب هرتز میباشد

      در برنامه زیر پایه b19میکرو را به مدت2 ثانیه 0میکند.بعدبه مدت 1.5ثانیه 1 می کند و سپس به مدت 2.5 ثانیه . می کند و این حلقه مدام تکرار می شود.
      کد:
      #include <AT91SAM7X256.H>            /* AT91SAMT7X256 definitions */
      #include <lib_AT91SAM7X256.h>
      void wait(void); 
      int main (void) {
       AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
         AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
         wait();
         wait();
         wait();
         AT91F_PIO_setOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19);
         wait();
         wait();
         wait();
         wait();
         AT91F_PIO_clearOutput (AT91C_BASE_PIOB, AT91C_PIO_PB19);
          wait();
       wait();
       wait();
       wait();
      wait();
      }
      void wait (void) {
       unsigned int n;
       for (n = 0; n < 1843200; n++);
      }
      برنامه بالا بسیار واضح و ساده می باشد
      و دیگه فکر نمی کنم نیازی به توضیح اون باشه
      حالا نوبت شماست :agree:
      برنامه ای بنویسید که با زدن کلید ال ای دی بعد از 2 ثانیه روشن شود و باقطع کلید بعد از 4 ثانیه خاموش شود(جواب رو تو تایپک سوالات بزارید)
      آدلان پایا متخصص در حوضه ربات های پرنده
      https://adlanpaya.ir/

      دیدگاه


        #18
        پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

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

        کد:
        At91f_pio_cfgoutput(at91c_piox,at91c_pio_pxy)
        شما می تونید به جای piox,at91c_pio_pxy از ادرس پایه یا پایه های مورد نظر استفاده کنید.
        کد:
        At91f_pio_cfgoutput(at91c_base_px,y)
        روش دوم:
        برای پیدا کردن پایه هایی که قرار است خروجی شوند یک و برای بقیه صفر اختصاص می گیرد:



        در تصویر بالا هر ledنشانگر یک پایه است سیزدهمین led نشانگر b.12است(تنها 17 پایه رسم سده)
        کد:
        00001000000000000
        عدد به دست امده آدرس پایه مورد نظر در مبنای باینری است،با بردن این عدد در مبنای هگژ ادس پورت به دست می اید(در کییل ادرس ها باید در مبنای هگز باشد
        0x نمایانگر مبنای هگز میباشد،0x1000یعنی 1000 در مبنای هگز.

        ادمه در تایپک بعد
        آدلان پایا متخصص در حوضه ربات های پرنده
        https://adlanpaya.ir/

        دیدگاه


          #19
          پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

          پیکربندی پایه به عنوان ورودی:
          روش اول:

          کد:
          At91f_pio_getinput(at91c_piox,at91c_pio_pxy)
          شما می توانید به جای at91c_pio_pxy از ادرس پایه یا پایه ها استفاده کنید
          کد:
          At91f_pio_getinput(at91c_base_px,y)
          روش دوم:
          کد:
          (at91f_pio_gatinput(a91c_base_pioa),0xf0);
          آدلان پایا متخصص در حوضه ربات های پرنده
          https://adlanpaya.ir/

          دیدگاه


            #20
            پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

            این قضیه کار با پورت ها رو خیلی کشش نمی دم فقط این رو هم بگم که برای صفر و یک کردن پایه هم می تونید از روش های بالا استفاده کنید
            اضافه کاری:

            شما هم می توانید مقدار یک متغییر را در پورت بریزید:
            کد:
            #include <at91sam7x256>
            #include <lib_at91sam7x256>
            int main (void) {
            int a;
            a=1023
            At91f_pio_cfgoutput(at91c_base_pa,a)
            At91f_pio_clearoutput(at91c_base_pa,a)
            }
            در برنامه ی بالا مقدار 1024(در مبنای دیسمال)در aقرار گرفته
            عدد1024 به هگز تبدیل شده و در پورت a ریخته میشود
            با این عمل 10 پایه اول روشن خواهد شد.
            اگه کسی نرم افزار تبدیل مبنا سراغ داره به من pmبده

            آدلان پایا متخصص در حوضه ربات های پرنده
            https://adlanpaya.ir/

            دیدگاه


              #21
              پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

              راه اندازی مقاومت های pullup داخلی:
              کد:
              At91f_pio_cfgpullup(at91c_base_px,y)
              کد:
              یا
              کد:
              At91f_pio_cfgpullup(at91c_piox,at91c_pio_pxy)
              مثال:
              به پایه b.1 یک کلید و به پایهb.0 یک led متصل است،برنامه ای بنویسید که با تحریک کلید ledروشن و با قطع کلید خاموش شود:

              کد:
              #include <at91sam7x256>
              #include <lib_at91sam7x256>
              int main (void) {
              At91f_pio_cfgoutput(at91c_base_pB,0)
              At91f_pio_getinput(at91c_base_pb,1)
              At91f_pio_setoutput(at91c_base_pB,0)
              if((at91c_pio_pb1)==0)
              {
              At91f_pio_clearoutput(at91c_base_pb,0)
              }
              }
              با استفاده از برنامه بالا شم باید از b.0یک مقاومت 220 اهم یه مثبت وصل کنید ولی با فعال کردن مقاومت pullupنیازی به قرار دادن مقاومت خارجی نیست
              کد:
              #include <at91sam7x256>
              #include <lib_at91sam7x256>
              int main (void) {
              At91f_pio_cfgoutput(at91c_base_pB,0)
              At91f_pio_getinput(at91c_base_pb,1)
              At91f_pio_setoutput(at91c_base_pB,0)
              At91f_pio_pullup(at91c_base_pB,0)
              At91f_pio_setoutput(at91c_base_pB,0)
              if((at91c_pio_pb1)==0)
              {
              At91f_pio_clearoutput(at91c_base_pb,0)
              }
              }
              آدلان پایا متخصص در حوضه ربات های پرنده
              https://adlanpaya.ir/

              دیدگاه


                #22
                پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

                این هم نرم افزار تبدیل مبنا:
                http://www.uplooder.net/cgi-bin/dl.c...1ccf43ef1b6ccf
                این رو اقای mahan.rafiee معرفی کردن
                ممنونmahan.rafiee
                آدلان پایا متخصص در حوضه ربات های پرنده
                https://adlanpaya.ir/

                دیدگاه


                  #23
                  پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

                  کتاب خانه تاخیرdelay.h:
                  در قبل با نحو ایجاد تاخیر اشنا شدیم در ادامه قصد داریم تا کتابخانه تاخیر رامعرفی کنیم:
                  برای استفاده از این کتاب خانه ابتدا باید ان را در برنامه فراخوانی کنید،برای این کار از دستور زیر استفاده میشود:

                  کد:
                  #include <delay.h>
                  دستور زیر تاخیر xمیکرو ثانیه به وجود می اورد
                  کد:
                  delay_us(x);
                  دستور زیر تاخیر xمیلی ثانیه به وجود می اورد
                  کد:
                  delay_ms(x);
                  دستور زیر تاخیر xثانیه به وجود می اورد
                  کد:
                  delay_s(x);
                  x بین 1 و 4294967295
                  آدلان پایا متخصص در حوضه ربات های پرنده
                  https://adlanpaya.ir/

                  دیدگاه


                    #24
                    پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

                    راه اندازی lcdکارکتری (8بیت):
                    تمام lcd ها دارای 16 پایه اند:
                    1:زمین
                    2:پنج ولت
                    3:تنظیم روشنایی پیکسل ها
                    4:rs
                    5:rw
                    6:e
                    7:db0
                    8: db1
                    9b2
                    10b3
                    11b4
                    12b5
                    13:db6
                    14:db7
                    15:پنج ولت
                    16:پنج ولت
                    برای استفاده از کتاب خانه lcdکارکتری باید ان را فراخوانی کنید

                    کد:
                    #include "lcd.h"
                    مشخص کردن پایه های lcd:
                    کد:
                    lcd_rs(x,y)
                    lcd_e(x,y)
                    lcd_data(x,y)
                    xمیتواند 1یا 2 باشد 1مشخص کننده پورت a و2 مشخص کننده پورت b است y هم ادرس پایه ها میباشد
                    مثال:

                    کد:
                    lcd_rs(2,0x1);
                    lcd_e(2,0x2);
                    lcd_data(2,0x3fc);
                    بعد از پیکر بندی lcd با استفاده از دستورات تایپک بعد می توان با lcd کار کرد
                    آدلان پایا متخصص در حوضه ربات های پرنده
                    https://adlanpaya.ir/

                    دیدگاه


                      #25
                      پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

                      کد:
                      lcd_gotoxy(x,y)
                      دستور بالا مکان نما را به سطرx و ستون y می برد
                      کد:
                      lcd_putsf(x)
                      دستور بالا میتواند رشته x را نمایش دهد
                      کد:
                      lcd_puts(x)
                      دستور بالا میتواند متغیر را نمایش دهد
                      کد:
                      display_off()
                      دستور بالا lcd را خاموش می کند
                      کد:
                      display_on()
                      دستور بالا lcd را روشن می کند
                      کد:
                      cursor_off()
                      دستور بالا مکان نما را خاموش می کند
                      کد:
                      cursor_on()
                      دستور بالا مکان نما را روشن می کند
                      کد:
                      cursor_blink()
                      دستور بالا مکان نما را چشمک زن می کند
                      کد:
                      shift_right(x)
                      دستور بالا موارد نوشته شده را x خانه به سمت راست جابجا می کند
                      کد:
                      shift_left(x)
                      دستور بالا موارد نوشته شده را x خانه به سمت چپ جابجا می کند
                      کد:
                      lcd_clear()
                      دستور بالا lcd را پاک می کند
                      آدلان پایا متخصص در حوضه ربات های پرنده
                      https://adlanpaya.ir/

                      دیدگاه


                        #26
                        پاسخ : آموزش برنامه نویسی ARM از 0 تا 100

                        راه اندازی مبدل انالوگ به دیجیتال:
                        در میکرو های arm تعدادی ریجستر برای کار با adc وجود دارد که در زیر به شرح ان ها پرداخته ایم،در صورتی که قصد نوشتن کتاب خانه یا...را دارید انها را بخوانید در غیر این صورت به ادامه موضوع و کتبخانه adc بروید: (حالم بد شد از بس کتابی حرف زدم :-&amp


                        این رجیستر مخصوص راه اندازی adcاست و با setکردن ان واحد adcراه اندازی میشود
                        کد:
                        at91c_adc_cr
                        این رجیستر کانال دلخواه را روشن می کند
                        کد:
                        at91c_adc_cher
                        این رجیستر مد adc را مشخص می کند(single یا free)
                        کد:
                        at91c_adc_mr
                        این رجیستر مربوط به راه اندازی وقفه adc میباشد.
                        کد:
                        at91c_adc_idr
                        مقدار اندازه گیری شده توسط adc در این رچیستر ریخته میشود
                        کد:
                        at91c_adc_data
                        این رجیستر پرچم تبدیل داده adc میباشد.
                        کد:
                        at91c_adc_cdr0
                        آدلان پایا متخصص در حوضه ربات های پرنده
                        https://adlanpaya.ir/

                        دیدگاه


                          #27
                          پاسخ : آموزش برنامه نویسی ARM سری SAM7 از 0 تا 100

                          هدر adc(مبدل آنالوگ به دیجیتا):
                          برای اسان تر شدن عملیات راه اندازی adc اقدام به نوشتن یک هدر نموده اند،شما می توانید با مطالعه این فایل با نحو راه اندازی adc بیشتر اشنا شوید.
                          توسط این هدر شما به راحتی می توانید با adc های میکرو کار کنید و مقدار خوانده شده توسط انها را در مکان های دیگر برنامه استفاده کنید.
                          برای استفاده از این کتاب خانه ابتدا باید ان را در برنامه فراخوانی کنید برای این کار از دستور زیر استفاده می شود:

                          کد:
                          #include "adc.h"
                          با فراخوانی این کتبخانه ،دستورات زیر به نرم افزار کیل اضافه می شود که شرح انها در زیر اوردهشده است:
                          فعال سازی کانال های دلخواه از adc:
                          کد:
                          config_adc(x);
                          شروع تبدیل:
                          کد:
                          start_adc();
                          خواندنadc:
                          کد:
                          x=read_adc(ch)
                          x از نوع int است
                          ch شماره کانال مورد نظر است

                          این کتاب خانه دارای توابع دیگری نیز می باشد که از توضیح ان ها صرف نظر کردم
                          آدلان پایا متخصص در حوضه ربات های پرنده
                          https://adlanpaya.ir/

                          دیدگاه


                            #28
                            پاسخ : آموزش برنامه نویسی ARM سری SAM7 از 0 تا 100

                            با سلام فکر می کنم تا این جای کار نیاز های اولیه رو برای برنامه نویسی اموزش دادم
                            اگه کسی مطلب جا افتاده ای به ذهنش میرسه بهم pm تا اموزش بدم
                            آدلان پایا متخصص در حوضه ربات های پرنده
                            https://adlanpaya.ir/

                            دیدگاه


                              #29
                              پاسخ : آموزش برنامه نویسی ARM سری SAM7 از 0 تا 100

                              لطفا نحوه تعیین کردن کریستال رو هم بگید که کامپایلر تاخیراش درست از آب دراد
                              آدلان پایا متخصص در حوضه ربات های پرنده
                              https://adlanpaya.ir/

                              دیدگاه


                                #30
                                پاسخ : آموزش برنامه نویسی ARM سری SAM7 از 0 تا 100

                                با سلام به همگی من شارژ اینترنتم تموم مشه و دیگه تا تابستان نمی تونم بیام تو انجمن از همه معذرت می خوام :cry2:
                                امیدوارم تا این جای کار از من راضی باشد و مطالب من مفید واقع شده باشه
                                ادامه ی تایپک رو به دوستان می سپارم
                                و از اقای بهنام فر هم تشکر می کنم
                                برم نشینم درسمو بخونم بلکه یه چیزی بشم
                                معذرت :redface:
                                آدلان پایا متخصص در حوضه ربات های پرنده
                                https://adlanpaya.ir/

                                دیدگاه

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