تبلیغات
سایت تاکستان رباتیک - دستورات تاخیری و تعریف زیر برنامه به زبان C در میکرو ARM
 
سایت تاکستان رباتیک
بزرگترین و جامع ترین سایت رباتیک ایران
                                                        
درباره سایت


مدیر سایت : فرهاد رحمانی
نویسندگان
نظرسنجی
از کدامیک از مطالب سایت بیشتر استفاده می نمایید؟








آمار سایت
  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :

دستورات تاخیری و تعریف زیر برنامه به زبان C در میکرو ARM

گاهی موقع لازم است برنامه برای مدت زمانی اجرا نشود، برای این کار از دستورات تاخیر استفاده می شود. در Keil تابع برای تاخیر (در برنامه) وجود ندارد. و شما باید برای انجام تاخیر CPU را به کار دیگری مشغول کنید.  یکی از این کارها شمردن اعداد می باشد! پس با ما همراه باشید تا نحوه ایجاد زمان های دلخواه برای تاخیر و چگونگی ایجاد زیر برنامه و نحوه پرش به آن ها را به زبان C در میکروکنترلرهای ARM را به صورت کامل فراگیرید.


دستورات تاخیری و تعریف زیر برنامه به زبان C در میکرو ARM

ابتدا طبق آموزش های قبلی برنامه زیر را توسط نرم افزار Keil شبیه سازی کنید

# include <at91sam7x256.h>

# include <libe – at91sam7x256.h>

Void wait (void) ;

Int n ;

Int main (void) {

AT91F-PIO-CfgOutput (AT91C-BASE- PIOBx,AT91C-PIO-PB 19);

AT91F-PIO-ClearOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

Wait ( );

AT91F-PIO-SetOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

Wait ( );

}

Void wait (void) {

For ( n =0 ; n < 1843200 ; n++);

}

مشاهده می کنید که در هر نیم میلی ثانیه پایه b19 روشن و خاموش می شود. در این برنامه برای ایجاد تاخیر از فراخوانی تابع استفاده شده است.

تحلیل برنامه

توسط دستور زیر در اولین خط برنامه میکروکنترلر معرفی شده است. میکرو مورد استفاده ما at91sam7x256 می باشد که قبلا در مورد نحوه ی انتخاب میکرو توضیح داده شد.

# include <at91sam7x256.h>

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

# include <libe – at91sam7x256.h>

در خط سوم با استفاده از دستور زیر مقداری از فضای حافظه برای توابع فراخوانی رزرو شده است.

Void wait (void) ;

با استفاده از دستور زیر در خط چهارم برنامه یک متغیر از نوع int معرفی شده است. (متغیر n می تواند از 0 تا 2 بتوان 32 یعنی 4294967296 تغییر کند.)

Int n ;

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

Int main (void) {

در خط ششم به کمک دستور زیر پایه شماره 19 از پورت B میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را به عنوان خروجی پیکربندی می کنیم.

AT91F-PIO-CfgOutput (AT91C-BASE- PIOBx,AT91C-PIO-PB 19);

در خط هفتم به کمک دستور زیر پایه شماره 19 از پورت B میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را در سطح منطقی صفر 0 قرار می دهیم.

AT91F-PIO-ClearOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

در خط هشتم تابع تاخیر wait فراخوانی می شود با رسیدن CPU به این خط به میکروکنترلر at91sam7x256 به تابع زیر در خط دوازدهم برنامه پرش می کند.

Void wait (void) {

در زیر برنامه wait یک حلقه for وجود دارد در این حلقه مقدار اولیه متغیر n برابر 0 در نظر گرفته شده است. با دستور ++n مدام به متغیر n یک واحد اضافه می شود. هنگامی که n به 1843200 رسید CPU به خط بعد از شرط پرش می کند در آنجا یک آکولاد وجود دارد که CPU را به حلقه اصلی بر می گرداند و CPU برنامه را از خط بعد از wait ادامه می دهد.

سپس میکروکنترلر در خط نهم برنامه توسط دستور زیر پایه شماره 19 از پورت B میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را در سطح منطقی یک 1 قرار می دهد.

AT91F-PIO-SetOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

در خط نهم دوباره تابع تاخیر wait فراخوانی می شود با رسیدن CPU به این خط به میکروکنترلر at91sam7x256 به تابع زیر در خط دوازدهم برنامه پرش می کند.

Void wait (void) {

همانند دفعه قبل مقدار اولیه متغیر n برابر 0 در نظر می شود. با دستور ++n مدام به متغیر n یک واحد اضافه می شود. هنگامی که n به 1843200 رسید CPU به خط بعد از شرط پرش می کند در آنجا یک آکولاد وجود دارد که CPU را به حلقه اصلی بر می گرداند و CPU برنامه را از خط بعد از wait ادامه می دهد.

با رسیدن CPU به آکولاد { در خظ آخر برنامه، مجدادا برنامه دوباره از اول اجرا می شود و کلیه اعمال بالا از ابتدا انجام می شود.

نتیجه گیری

برای ایجاد تاخیر در برنامه شما باید یک تابع ایجاد کنید تا در هنگام تاخیر فراخوانی شود. برای ایجاد تابع باید ایتدا آن را توسط دستور زیر معرفی کنید:

Void wait (void) ;

wait (نام تابع) : در قسمت نام تابع شما باید یک نام مناسب بنویسید که در برنامه تابع با همین نام فراخوانی می شود. مثلا در این برنامه ما نام تابع زیر برنامه رو wait در نظر گرفته ایم در نتیجه هر گاه بخواهیم زیر برنامه wait را فراخوانی کنیم از نام wait استفاده می کنیم.

(void) یا نوع فضا : در قسمت نوع فضا، نوع ذخیره سازی تابع مشخص می شود شما می توانید از عناوین void (فضای خالی) یا جای خالی استفاده کنید.

با این حساب می توان گفت قالب کلی یک برنامه در زبان C به شکل زیر خواهد بود.

:: معرفی چیپ

:: فراخوانی فایل های هدر یا کتابخانه

:: معرفی متغیرها

:: معرفی زیر برنامه (توابعی که قرار است در برنامه فراخوانی شوند)

:: تابع اصلی برنامه

:: ورودی یا خروجی قرار دادن پورت ها

:: شروع حلقه اصلی

:: برنامه اصلی

:: فراخوانی توابع یا همان زیر برنامه

:: پایان حلقه

:: پایان تابع اصلی برنامه

:: نام تابعی که قرار است فراخوانی شود

:: شروع حلقه ی تابع فراخوانی شده

:: برنامه ای که فراخوانی می شود

:: پایان حلقه ی فراخوانی شده (با رسیدن برنامه به این خط به برنامه اصلی پرش می شود)

نکته : مقدار زمانی که می خواهید توسط شمارش ایجاد می شود از رابطه ی زیر به دست می آید:

زمان = (x*5)/(f)

X مقدار رقمی است که در حلقه ی for شمرده می شود و f مقدار فرکانس کریستال بر حسب هرتز می باشد.

مثال :

برنامه ای بنویسید که پایه b.19 میکروکنترلر at91sam7x256 از خانواده میکروکنترلرهای ARM را به مدت 20 ثانیه 0 کند. بعد به مدت 1/5 ثانیه 1 کند و سپس به مدت 2/5 ثانیه 0 کند و این حلقه مدام تکرار شود.

# include <at91sam7x256.h>

# include <libe – at91sam7x256.h>

Void wait (void) ;

Int n ;

Int main (void) {

AT91F-PIO-CfgOutput (AT91C-BASE- PIOBx,AT91C-PIO-PB 19);

AT91F-PIO-ClearOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

Wait( );

Wait ( );

Wait ( );

Wait ( );

AT91F-PIO-SetOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

Wait( );

Wait ( );

Wait ( );

AT91F-PIO-ClearOutput (AT91C-BASE- PIOB,AT91C-PIO-PB 19);

Wait( );

Wait ( );

Wait ( );

Wait ( );

Wait ( );

}

Void wait (void) {

For ( n =0 ; n < 1843200 ; n++);

}

برنامه بالا شاید ساده ترین برنامه برای سوال ذکر شده باشد در این برنامه ما زمان اصلی 500 میلی ثانیه را به وجود آورده ایم و در مکان مناسب به تعداد دفعات مناسب آن را فراخوانی کرده ایم.

چند نکته

واسط SAM-BA فقط از میکروکنترلرهای ARM زیر پشتیبانی می کند:

at91sam7s321

at91sam7s64

at91sam7s128

at91sam7s256

at91sam7s512

at91sam7x128 and at91sam7xc128

at91sam7x256 and at91sam7xc256

at91sam7x512 and at91sam7xc512

at91sam7se256

at91sam7se512

at91sam7a3

برای استفاده از واسط SAM-BA برای میکرو کنترلرهای at91sam7s مراحل زیرا انجام دهید:

1) Power Off The Board.

2) Set TST Pin To High Level.

3) Power On The Board.

4) Wait About 10 Seconds.

5) Power Off The Board.

6) Set TST Pin To Ground.

7) Power On The Board.





نوع مطلب : الكترونیك، 
برچسب ها :
لینک های مرتبط :




پنجشنبه 15 آذر 1397 02:12 ب.ظ

Awesome write ups, With thanks.
we recommend cialis best buy cialis 10 doctissimo online cialis when can i take another cialis cialis billig cialis online nederland cialis y deporte cialis generika in deutschland kaufen cialis generika side effects for cialis
چهارشنبه 14 آذر 1397 06:08 ب.ظ

With thanks, I like this!
wow cialis tadalafil 100mg cialis reviews cialis therapie generico cialis mexico cialis dosage recommendations cialis 20mg preis cf we choice cialis uk cialis pas cher paris cialis tablets for sale side effects of cialis
سه شنبه 13 آذر 1397 06:32 ق.ظ

This is nicely put! !
cialis generico in farmacia only best offers cialis use click now cialis from canada wow look it cialis mexico cialis 20 mg best price cialis preise schweiz cialis soft tabs for sale cialis pills in singapore cialis official site cialis official site
دوشنبه 12 آذر 1397 06:31 ب.ظ

Information effectively applied!!
sublingual cialis online non 5 mg cialis generici cialis patent expiration cialis cuantos mg hay buying cialis on internet generic cialis 20mg uk precios cialis peru buy online cialis 5mg how to purchase cialis on line buying cialis overnight
دوشنبه 12 آذر 1397 06:12 ق.ظ

Perfectly spoken really! !
cialis daily cialis dosage recommendations calis tadalafil 5mg only here cialis pills cialis taglich generic cialis at the pharmacy cheap cialis purchase once a day cialis cialis professional yohimbe
یکشنبه 11 آذر 1397 06:01 ب.ظ

Thanks, Loads of knowledge!

cialis lowest price are there generic cialis low cost cialis 20mg pastillas cialis y alcoho canadian drugs generic cialis ou trouver cialis sur le net we choice free trial of cialis cialis baratos compran uk buy name brand cialis on line cialis coupon
یکشنبه 11 آذر 1397 05:45 ق.ظ

You've made your position extremely nicely!!
cialis name brand cheap we recommend cialis best buy cialis per paypa cialis rckenschmerzen wow cialis tadalafil 100mg cialis pills price each click here take cialis click here take cialis cialis daily reviews 5 mg cialis coupon printable
شنبه 10 آذر 1397 06:26 ب.ظ

Wow all kinds of useful information!
cialis prezzo di mercato calis cialis with 2 days delivery cialis name brand cheap costo in farmacia cialis buy cialis sample pack cialis e hiv brand cialis nl cialis tablets australia no prescription cialis cheap
شنبه 10 آذر 1397 05:22 ق.ظ

Truly tons of terrific knowledge!
cialis 5mg billiger cialis cost tadalafil 20mg buy cialis online cheapest cialis patentablauf in deutschland cialis efficacit cialis pills price each the best choice cialis woman female cialis no prescription price cialis best
جمعه 9 آذر 1397 06:06 ب.ظ

You expressed that terrifically!
weblink price cialis cialis generico rx cialis para comprar generic cialis at walmart wow cialis 20 buy cialis online cialis 5 effetti collaterali cialis uk how much does a cialis cost brand cialis nl
جمعه 9 آذر 1397 06:21 ق.ظ

You actually explained that terrifically.
cialis generic availability buy cialis uk no prescription 5 mg cialis pharmacie en ligne look here cialis cheap canada we choice cialis uk legalidad de comprar cialis cialis generika in deutschland kaufen cialis alternative compare prices cialis uk cialis 20mg prix en pharmacie
پنجشنبه 8 آذر 1397 07:17 ق.ظ

Thank you! An abundance of content.

cialis cipla best buy cialis 30 day trial coupon we like it safe cheap cialis comprar cialis navarr cialis tablets where cheapest cialis canada discount drugs cialis buying brand cialis online low dose cialis blood pressure viagra vs cialis
چهارشنبه 7 آذر 1397 06:43 ق.ظ

You've made your position pretty clearly..
cialis rckenschmerzen what is cialis dosagem ideal cialis cialis price in bangalore cialis kamagra levitra sublingual cialis online cialis daily new zealand price cialis wal mart pharmacy achat cialis en europe cialis rezeptfrei
چهارشنبه 11 مهر 1397 01:20 ق.ظ

Fantastic stuff. Cheers!
generic cialis with dapoxetine purchase once a day cialis prices on cialis 10 mg buying cialis overnight when can i take another cialis cialis australia org cialis rckenschmerzen cialis 10mg prix pharmaci acheter cialis kamagra how to purchase cialis on line
چهارشنبه 28 شهریور 1397 01:22 ق.ظ

You actually mentioned this well.
precios cialis peru cialis 5 mg para diabeticos we recommend cheapest cialis usa cialis online bulk cialis cialis canada the best site cialis tablets canadian discount cialis order cialis from india only now cialis for sale in us
پنجشنبه 15 شهریور 1397 05:20 ب.ظ

You explained that effectively!
cialis billig cialis without a doctor's prescription online prescriptions cialis cialis online deutschland cialis generico milano cialis preise schweiz price cialis wal mart pharmacy cialis generico online prix cialis once a da we like it safe cheap cialis
چهارشنبه 14 شهریور 1397 08:43 ق.ظ

Many thanks! Good information!
canadian medications pharmacy canadian viagra drugstore online prescriptions from canada without canada drugs online buy viagrow pro canadian online pharmacies canadian drug canada drug pharmacy canadian online pharmacies reviews
دوشنبه 12 شهریور 1397 09:58 ق.ظ

Appreciate it! Ample stuff.

side effects for cialis cialis pills boards cialis baratos compran uk cialis without a doctor's prescription safe dosage for cialis cialis 20 mg effectiveness cialis herbs buy cialis online nz cialis italia gratis enter site natural cialis
دوشنبه 22 مرداد 1397 10:31 ب.ظ

You actually mentioned this adequately.
cialis arginine interactio cialis generico online we like it safe cheap cialis when can i take another cialis cialis kaufen wo cialis super acti cialis cipla best buy look here cialis order on line the best choice cialis woman cialis online
دوشنبه 7 خرداد 1397 10:25 ق.ظ

Good forum posts, Thank you!
cialis without a doctor's prescription cialis 5 mg schweiz cialis taglich viagra or cialis 40 mg cialis what if i take cialis qualitat generic for cialis price cialis best what is cialis cialis coupons
پنجشنبه 20 اردیبهشت 1397 11:10 ق.ظ

Truly a good deal of amazing tips.
cialis online deutschland cialis 20mg prix en pharmacie we recommend cialis info recommended site cialis kanada cialis per paypa cialis vs viagra look here cialis order on line buy cialis uk no prescription cialis generique where cheapest cialis
چهارشنبه 5 اردیبهشت 1397 03:12 ق.ظ

You actually expressed that effectively!
how do i get viagra online sildenafil prescription best place buy viagra online order viagra online usa sildenafil uk online viagra best buy where to buy viagra pills buy viagra 50mg cheap generic viagra sildenafil uk buy
شنبه 18 فروردین 1397 01:17 ب.ظ

Regards. Quite a lot of facts!

side effects for cialis cialis 5mg prix tadalafil 5mg cialis kamagra levitra buy cialis online nz cheap cialis cialis dosage amounts costo in farmacia cialis 5 mg cialis pharmacie en ligne buy cialis uk no prescription
شنبه 4 فروردین 1397 01:22 ب.ظ

Valuable posts. Thank you!
cialis daily tarif cialis france generico cialis mexico prix cialis once a da cialis tablets for sale import cialis cialis pills order generic cialis online walgreens price for cialis callus
چهارشنبه 13 دی 1396 04:13 ب.ظ
برای خرید اینترنتی لوازم آرایشی و بهداشتی با بهترین و ارزان ترین قیمت به فروشگاه اینترنتی مو تن رو یه سر بزن
از ویژگی های مهم مو تن رو اصالت کالا یا همون تأیید مجوز بهداشت ، گارانتی بازگشت ، ارسال رایگان و مشاوره تخصصیه .
مشاوره تخصصی که عالیه و البته رایگان هم هست !!
میتونی در ساعت های کاری با فروشگاه اینترنتی مو تن رو تماس بگیری (021-88542210 و یا خط ویژه 43389) و یا به وبسایت مو تن رو mootanroo.com بری و بصورت آنلاین با مشاوره صحبت کنی و سؤالاتتو بپرسی .
در موتن رو هر روز کالاهای جدید میاد و تخفیف هایی فعال میشه که میتونی ازش استفاده کنی و همیشه بهترین محصولات با بهترین قیمت و کیفیت تازه اونم از جایی مطمئن مثل مو تن رو بگیری.
خلاصه خیلی در مو تن رو جات خالیه ، منتظرت هستیم
یکشنبه 15 مرداد 1396 09:53 ب.ظ
Have you ever considered publishing an e-book or guest authoring
on other sites? I have a blog centered on the same ideas you discuss and would really like to have you share
some stories/information. I know my subscribers would appreciate your
work. If you are even remotely interested, feel free to send me
an email.
جمعه 13 مرداد 1396 09:18 ب.ظ
These are actually great ideas in on the topic of blogging.
You have touched some nice things here. Any way keep up wrinting.
پنجشنبه 15 تیر 1396 06:32 ب.ظ
Glad to be one of many visitors on this awesome web site :
D.
پنجشنبه 15 تیر 1396 06:27 ب.ظ
Glad to be one of many visitors on this awesome web site :
D.
سه شنبه 2 خرداد 1396 01:56 ق.ظ
Hi there to all, how is the whole thing, I think every one is getting more from this website, and your views are nice in support of new people.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


نمایش نظرات 1 تا 30