آیا میدانید فقط قورباغه های نر قور قور می کنند
اگر کمتر به غير ممکن عقيده مند باشيم خيلي کارها خواهيم کرد. از مال اشربر
Logo

حل تمرینات و پروژه های درس میکروکنترلر
کار با تایمر کانتر صفر AVR در حالت CTC به زبان سی کدویژن CodeVision

با سلام خدمت همه دوستان و همراهان

 مقدمات و نکات تایمر کانتر صفر از جمله مدها، رجیسترها و ... را در مطلب قبلی گفتیم و امروز در مورد مد CTC (مقایسه) تایمر صفر صحبت خواهیم کرد.

در حالت مقایسه رجیستر TCNT0 به طور دائم با رجیستر OCR0 مقایسه، و در صورت تطابق (مساوی شدن) رجیستر TCNT0 برابر صفر می شود. از این نتیجه مقایسه می توان برای تولید شکل موج روی پایه خروجی OC0 استفاده نمود که خود چهار حالت دارد:

  1. در صورت تطابق هیچ عملی روی OC0 صورت نگیرد. Disconnected
  2. در صورت تطابق وضعیت پین OC0 معکوس شود. Toggle
  3. در صورت تطابق پین OC0 فقط صفر شود. Clear
  4. در صورت تطابق پین OC0 فقط یک شود. Set


در هنگام تطبیق مقایسه در صورت فعال بودن وقفه و تولید پرچم OCF0 می توان یک وقفه مقایسه را ایجاد نمود و از روال وقفه برای بروزرسانی مقدار رجیستر OCR0 استفاده نمود. به هر حال تغییر رجیسیتر OCR0 به یک مقدار جدید در زمانی که تایمر در حال شمارش است باید با احتیاط انجام شود، زیرا که حالت CTC دارای بافر مضاعف نمی باشد.

 مثال: برنامه ای بنویسید که هر 30 میلی ثانیه پایه OCR0 را مکمل (معکوس سازی) کند؟

هدف ما ساختن یک شکل موج می باشد که طول هر نیم سیکل آن 30ms است. یعنی 30ms پین در وضعیت یک و 30ms دیگر در وضعیت صفر. البته چون 30ms عدد نسبتا بالایی است و با توجه به اینکه فرکانس نوسان ساز ما 8MHz می باشد پس ما N=1024 قرار می دهیم تا فرکانس کاری تایمر برابر 7.813KHz شود تا بتوانیم این تاخیر بالا را ایجاد کنم. همانطور که می دانید با انتخاب N بالا فرکانس کاری تایمر پایین خواهد آمد و درنتیجه زمان پر شدن رجیستر ها بالا می رود.

#include <mega16.h> 
#define xtal 8000000 

void main(void){ 
PORTB=0x00; 
DDRB=0x08; //H1
TCNT0=0x00; //H2
OCR0=0xEA; //H3
TCCR0=0x1D;//H4
while (1); //H5
} 

توضیحات برنامه:

  1.  H1: پین OC0 که روی پورت B می باشد به عنوان خروجی تعریف شده.
  2. H2: مقدار اولیه این رجیستر را برابر صفر قرار می دهیم.
  3. H3: عددی که باید محتوای TCNT0 با آن مقایسه شود تا در صورت تساوی تطابق صورت گیرد.
  4. H4: کلاک تایمر با تقسیم بر 1024 برابر با 7.813KHz خواهد شد. و همچنین مد CTC با عملکرد مکمل سازی OC0 انتخاب می شود.
  5. H5: یک حلقه بی نهایت 

نحوی محاسبه زمان 30 میلی ثانیه ای:

Time= (1024*(1+234))/8000000


234 برابر با EA هگز می باشد که باید در رجیستر ORC0 قرار بگیرد.

نحوی محاسبه با Codewizard :

Clock Source: System Clock
Clock Salue: 7.813kHZ
Mode: CTC top=OCR0
Output: Toggle on compare match 
0 Overflow Intrrupt
0 Compare Match Interrupt
Timer Value: 0h
Compare: EAh

 نکته: شما می توانید که مقدار رجیستر TCNT0 را نیز با عدد دلخواه حساب شده پر کنید مثلا اگر عدد 8 را وارد کردید در هنگام شروع کار، تایمر دیگر از صفر شروع به بالا رفتن نمی کند بلکه از 8 شروع می کند بنابراین با تغییر این عدد می توانید زمان های دقیق را داشته باشید.

سوالات و پیشنهادات خودتان را در نظرات همین صفحه اعلام کنید.

 این مقاله به صورت کاملا اختصاصی و به صورت متن باز تنها در وب سایت www.picpars.com منتشر می شود. کپی برداری از آن تنها با ذکر منبع به صورت کامل امکان پذیر می باشد.

منبع www.picpars.com  نویسنده: سید محسن قاسمیان

  منبع: www.picpars.com

  لطفا مقالات، آموزش‌ها و پروژه های خود را به آدرس ایمیل نمائید تا آن را با نام خودتان در سایت منتشر کنیم.




فایل های ضمیمه ( ورود - عضويت )

فایل شماره 103 | حجم 43 کیلوبایت | دانلود 502 بار

منبع www.picpars.com  نویسنده: سید محسن قاسمیان

منبع www.picpars.com  دانلود مثال کار با تایمر کانتر صفر AVR در حالت CTC

منبع www.picpars.com  پسورد: www.picpars.com


لینک ثابت این صفحه:   


© کپی برداری از مطالب این سایت تنها با ذکر منبع مجاز می باشد

در صورت داشتن هر گونه سوال، نظر و پیشنهاد راجب این مطلب می‌توانید در قسمت نظرات همین صفحه مطرح نمائید. همچنین با شرکت در نظر سنجی های سایت، ما را در بهبود بخشیدن به مطالب یاری کنید.


تطابق تطبیق مقایسه تایمر کانتر تاخیر دقیق رجیستر سریع تک دو شیب هشت بیتی پی-آیسی-پارس برنامه-نویسی-میکروکنترلرها میکرو میکروکنترلر میکروکنترولربرنامه زبان سی رایگان micro microcontroler avr C Proteus source free picpars picpars.com timer CodeVision v2.04.04a PWM fast codewizard attiny at90s attiny2313 attiny13 atmega8 atmega163 TCCR0 OCR0 TCNT0 TIFR TOVO CTC

ارسال شده در مورخه : يكشنبه، 9 آبان ماه، 1389 توسط مدیریت بازدید [5010]   پرینت

مرتبط باموضوع :

 معرفی میکرو کنترلرهای خانواده AVR  [ يكشنبه، 18 دي ماه، 1390 ] 854 مشاهده
 کار با LCD کاراکتری یا متنی به زبان C  [ پنجشنبه، 16 ارديبهشت ماه، 1389 ] 11573 مشاهده
 آموزش سریع میکروکنترلر AVR  [ پنجشنبه، 7 مرداد ماه، 1389 ] 3974 مشاهده
 شمارنده 4 رقمی با سون سگمنت و قابلیت کنترل زبان C و AVR  [ چهارشنبه، 13 مرداد ماه، 1389 ] 5454 مشاهده
نام شما:
ایمیل شما:

در مورخه : يكشنبه، 16 آبان ماه، 1389توسط
(مشخصات کاربر mskia | ارسال پیغام شخصی) (IP آدرس : )
ممنون از اینکه این مطالب خوب و مفید اگه امکان داره تایمر کانتر 1 و 2 و... هم آموزش بدید موفق و پیروز باشید
ارسال جوابیه ]

نام شما:
ایمیل شما:

در مورخه : سه شنبه، 18 آبان ماه، 1389 (IP آدرس : )
salam man sabt nam kardam ama maili daryaft nakardam ta sabt namamo taid bokone va name karbari va ramzam faal nist,chekari dg bayad anjam bedam ta betonam vard sistem besham?
ارسال جوابیه ]

نام شما:
ایمیل شما:

در مورخه : پنجشنبه، 27 آبان ماه، 1389توسط
(مشخصات کاربر SMGH-admin | ارسال پیغام شخصی) http://www.picpars.com (IP آدرس : )
با سلام خدمت دوستان عزیز دوستان عزیزی که موفق به دریافت ایمیل فعال سازی نمی شود باید به عرضتان برسانم که به علت مشکلاتی که در سرور جدید وجود دارد امکان دارد که سرور ایمیل ارسال نکند. و شما می توانید با یک نام کاربری دیگر یا همان نام بعد از 24 ساعت دیگر مجددا برای ثبت نام اقدام بفرمائید با تشکر
ارسال جوابیه ]

نام شما: سعید
ایمیل شما: hamidinezhad@gmail.com

در مورخه : جمعه، 23 دي ماه، 1390توسط
(مشخصات کاربر saeidhp | ارسال پیغام شخصی) http://www.picpars.com (IP آدرس : )

با سلام 

 

من در اینترنت سایتهای زیادی رو راجع به تایمرها جستجو کردم اما باید بگم که این بهترین سایتی هست که من دیدم که توضیحات بسیار خوبی داره 

اگه ممکنه نام کامل رجیستر ها رو بنویسید تا به طور کامل در ذهن بمونه 

مثلا OCR = Output Compare Register متاسفانه کتابی که من دارم هم اسم کمل رو ننوشته و به مخفف اکتفا کرده 

عدد 1+234 چطور بدست اومد ؟ 

اگه مثلا بخواهیم به عدد 5 میلی ثانیه برسیم چطور باید عمل بشه

برای رسیدن به زمان های بالاتر مثلا 500ms باید از تایمرهای دیگه استفاده بشه

با تشکر

ارسال جوابیه ]

نام شما: سید محسن قاسمیان
ایمیل شما:

در مورخه : جمعه، 23 دي ماه، 1390توسط
(مشخصات کاربر SMGH-admin | ارسال پیغام شخصی) http://www.picpars.com (IP آدرس : )

عدد 234+1 در فرمول time می باشد و اون عدد 1 ثابت هست. حال محاسبه 234 که قبلا توضیح دادیم. فرکانس کاری میکرو 7.813khz شد پس هر پله تایمر برابر با:

t=1/7813=128us خواهد شد. حال ما 30 میلی ثانیه زمان لازم دارم پس:

30ms/128us=234 خواهد شد.

برای رسید به اعداد بالاتر مثل 500 میلی ثانیه باید کلاک میکرو رو پایین تری بیارید یعنی 8mhz را به 1mhz کاهش دهید در این صورت سرعت اجرای عملیات هم پایین خواهد آمد اما شما می توانید با همان 8MHZ یک زمان پایه ایجاد کنید که ترجیحا عدد رندی باشد مثلا 50 میلی ثانیه و بعد با استفاده از یک حلقه for این 50 میلی ثانیه را چند بار تکرار کنید تا به عدد دلخواه برسید. (یعنی باید تابع تاخیری تایمر را در حلقه فراخوانی کنید)

ارسال جوابیه ]

 
نام شما: [ کاربر جدید ]

نام شما (ضروری): 
ایمیل شما : 
نظر:
کد امنیتی
کد امنیتی

  [ بازگشت ]
  • امتیاز بدهید
  • انتخاب ها
  • اشترک گذاری
آیا این مطالب مورد رضایت شما واقع گردید؟ لطفا با رای دادن به این مطلب ما را در بهبود بخشیدن به مطالب کمک کنید. با اینکار به سایر دوستان‌تان نیز کمک خواهید کرد.


 فایل پی دی اف فایل پی دی اف

 گرفتن پرينت از اين مطلب گرفتن پرينت از اين مطلب

 ارسال به دوستان ارسال به دوستان

 گزارش این پست به مدیر سایت گزارش این پست به مدیر سایت

پروژه های آماده
فرکانس متر صنعتی 0تا 500 ولت 20KHz

ورودی این فرکانس متر قادر است با ولتاژهای 12 تا 500 ولت AC کار کند. ماکزیمم فرکانس اندازه گیری 20KHz می باشد. همچنین با تعیین نرخ نمونه برداری می توانید فرکانس را تا دو رقم اعشار اندازه گیری نمائید. جزئیات...


عناوین مطالب
عناوین مطالب را در موضوعات مربوطه جستجو کنید!
یک موضوع انتخاب کنید:



لینک باکس مهم‌ترین‌ ها
  • پروژه‌ها
  • برترین‌ها
  • پر بازدید
  • بیشترین نظرات
cash10-H7

سالنامه فارسی
ش ی د س چ پ ج
  12345
6789101112
13141516171819
20212223242526
2728293031

دوشنبه

1

1 خرداد ماه، 1391
21/05/2012


رویداد ها:
روز بزرگداشت ملاصدرا - روز بهره وری و بهینه سازی مصرف

جستجو در تقویم ...
cash40-D1

آمار کاربران

نظرسنجی
نظر شما در مورد کیفیت سایت چیست؟

خیلی عالیه
میتونه بهتر باشه
جای کار داره
خوب نیست
نظری ندارم!



شما میتوانید در این مورد نظر مکتوب خود را بنویسید: مشاهد نتایج و ثبت نظر

نظرسنجی ها

تعداد آراء: 679    نظرات: 42

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

پیشنهاد ما

سفارش طراحی پروژه
مرورگر پیشنهادی ما
نرم افزار دانلود فایلها
برنامه فشرده سازی







امتیاز به سایت
امتیاز به این صفحه
با یک امتیاز مثبت از طریق Gmail تان از سایت حمایت کنید