نویز | آموزش AVR | آموزش میکرو | میکروکنترلر

وبلاگ آموزشی احسان نوری ::: Ehsan Nouri's Weblog

نویز | آموزش AVR | آموزش میکرو | میکروکنترلر

وبلاگ آموزشی احسان نوری ::: Ehsan Nouri's Weblog

" نویز رسانه ای است برای آموزش آسان مفاهیم میکروکنترلر و الکترونیک "

دریافت مستندات
آخرین نظرات
  • ۲۰ خرداد ۰۰، ۲۰:۴۹ - حسام الدین سلطانی
    خعلی عالی
  • ۲ ارديبهشت ۰۰، ۱۸:۱۱ - حسام الدین سلطانی
    خیلی عالی

آشنایی با تایمر/کانتر میکروکنترلر AVR ؟ [13]

يكشنبه, ۳ آذر ۱۳۹۲، ۱۲:۲۰ ب.ظ

 

این بار مبحث شیرین تایمر/کانتر در میکروکنترلر AVR رو دنبال خواهیم کرد.

 

پس با ما در ادامه مطلب همراه باشید ...

سلام

بازهم با عذرخواهی مطلبو شروع میکنم،نمیدونم چرا اینقدر وقفه میوفته تو کارام و کلا برنامه ریزی بلد نیستم اگه بلد بودم که الان ... cool

پس ببخشید دیگه ...

تشکر و قدردانی هم میکنم از اون دسته دوستانی که با ارسال پیام و نظر به بنده دلگرمی میدند و تشویقم میکنند که مطالب رو ادامه بدم.

ازتون درخواست میکنم که با یه نظر هرچند کوچیک به بنده امید بدید که کارها رو با جدیت بیشتری پیش ببرم ! ممنونheart

 

بریم سراغ اصل مطلب ...

 

بحث امروز ما راجع به واحدی در میکروکنترلر به نام Timer/Counter هست که اگه یادتون باشه چندین بار تو پستهای قبلی ازش یاد کردیم و حالا دیگه وقتشه که بهتر بشناسیمش.

پس معرفی میکنم : دوستان،،،،تایمر/کانتر  ---   تایمر/کانتر،،،،،دوستان  laughcool

 

تایمر/کانتر چیست ؟

تو زندگی روزمره همه کارهامون با زمان هماهنگ میشه.فلان ساعت فلان کارو میکنم و n دقیقه ورزش میکنیم و ...

وظیفه واحد تایمر/کانتر هم همینجور کارهاست.

کلیه کارهایی که داخل برنامه،مربوط به محاسبات زمانی میشه،زیر نظر واحدی تحت عنوان Timer/Counter انجام میگیره.

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

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

 

به بلوک دیاگرام زیر هم بد نیست یه نگاهی بندازید :

 

میبینید که واحدها از هم مجزا هستند.

پس علت این مجزا بودن واحدها رو متوجه شدید که؟!

===>  دلیل اصلیش کاهش بار پردازشی CPU میکروکنترلرمونه !

همون تقسیم وظایف خودمونه که میایم به جای اینکه همه کارها رو خودمون انجام بدیم،چند نفر رو بکار میگیریم و تحت رهبری خودمون اون کارها رو برامون انجام میدند.

 

این واحد تایمر/کانتر کارش شمارش هم هست.

در واقع شاید درست ترش این باشه که بگیم کار اصلیش شمارشه !

 

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

 

پس بریم ببینیم که اوضاعش توی میکروکنترلر AVR چجوریه ؟!

 

تایمر مثل یه رجیستر میمونه که مقادیر داخلش بصورت اتوماتیک کم و زیاد میشه !!! (اصلا وظیفه شناسه و وظیفه اش هم همینه !)

میکروکنترلرهای AVR دارای تایمر بسیار دقیقی هستند.

 

نحوه کار یک تایمر/کانتر اینجوریه که از صفر (نه همیشه!) شروع میکنه به شمارش،و به ترتیب میشماره تا به مقدار ماکزیممی که براش تعریف شده برسه !

بعد که به اون مقدار ماکزیمم رسید Overflow میشه و اعلام میکنه که شمارش مورد نظر انجام شد.

حالا این که اون مقدار ماکزیمم چقدره رو بحث روش داریم.

 

در میکروکنترلرهای AVR دو نوع تایمر/کانتر وجود داره :

 

1.تایمر/کانتر 8 بیتی

2.تایمر/کانتر 16 بیتی

 

مفهوم 8 و 16 بیتی رو هم تو پست قبلی یادمه گفتم،بازم میگم : تو 8 بیتی طول داده 8 بیته،تو 16 بیتی طول داده 16 بیت !

 

در تایمر 8 بیتی شمارش از 0 شروع میشه و تا 255 میتونه ادامه پیدا کنه.

در تایمر 16 بیتی شمارش از 0 شروع میشه و تا 65535 میتونه ادامه پیدا کنه.

 

 

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

اما اگه اجازه بدید با یه مثال و 2 تا فرمول بحث رو ادامه میدم :

 

مثال :

فرض کنید یه چراغ چشمک زن داریم که بصورت متناوب چشمک میزنه !

حالا این چراغ چشمک زن میتونه هر چیزی باشه؛مثلا چراغ راهنمای اتومبیل !!!

شیوه ی کارش چجوریه ؟

 

با فرض تاخیر : یک ثانیه

 

1.روشن میشه

2.یک ثانیه روشن میمونه

3.خاموش میشه

4.یک ثانیه خاموش میمونه

5. ... ==> به همین ترتیب

 

همین روند متناوبا تکرار میشه.

 

اما اگه همینو بخوایم بصورت الگوریتمی بنویسیم؛اینجوری میشه :

 

1.روشن شو

2.یک ثانیه صبر کن ==> تاخیر

3.خاموش شو

4.یک ثانیه صبر کن ==> تاخیر

5 . ...  ==> به همین ترتیب

 

در مثال بالا با نحوه کار یک چراغ چشمک زن آشنا شدید.

اما حالا برای اینکه بحث علمی تر پیش بره،ما اون میزان تاخیری رو که در مثال بالا 1 ثانیه فرض کرده بودیم رو به 10 میلی ثانیه کاهش میدیم !

 

خب؛یه فرمولی اینجا داریم که مطمئنم همتون اینو بلدید ولی بازم میگم و مینویسمش :

 

 

مفهوم : این رابطه میخواد بگه که دوره تناوب(حوزه زمان) با فرکانس(حوزه فرکانس) رابطه عکس داره.

این رابطه برعکسش هم قاعدتا وجود داره که بنده روبروش نوشتم !

 

گفتیم با فرض اینکه فلاشر ما دارای تاخیر 10 میلی ثانیه باشه،معنا و مفهومش اینه که دارای دوره تناوب 10 میلی ثانیه هم هست ! OK ؟

یعنی هر 10 میلی ثانیه یکبار داره یه عملی متناوبا تکرار میشه.

خب با استفاده از فرمول بالا داریم :

 

 

پس میگیم فرکانس فلاشر 100 هرتزه !

 

بیاین تصور کنیم که فرکانس کاری میکرو رو روی 4MHz تنظیم کردیم ! (منظورم فرکانس اصلی میکروکنترلره که قبلا راجع بهش بحث کردیم.)

 

 

به این معنا که هر پالس میکرو 0.00025 میلی ثانیه طول میکشه تا انجام بشه !!!  (خیلی این عدد کوچیکه ها ، تو کفش برید !)

 

حالا بیاین تصور کنید که مقدار شمارنده ما صفره و قراره بشماره و زیاد بشه و به اون مقدار ماکزیمم خودش برسه !

 

وقتی از مقدار 0 میره به مقدار 1 میگیم یه پالس اعمال شده (یا طول کشیده).

وقتی از مقدار 1 میره به مقدار 2 میگیم یه پالس دیگه اعمال شده (یا طول کشیده) !

و به همین ترتیب ...

 

حالا هر پالس ما هم تو حوزه زمان طبق فرض بالا 0.00025 میلی ثانیه طول میکشه و این میشه اصل ماجرای ما ...

 

یعنی ما اگه بخوایم زمان بسازیم باید مقدار متناظرش رو به تعداد پالس(که بشه همون شمارش) بدست بیاریم.

از یه فرمول جدید رونمایی میکنم با این قیافه :

 

 

TimerCount : همون تعداد شمارشیه که باید تایمر/کانتر انجام بده.(مجهول)

Duration : مدت زمانیه که میخوایم تایمر/کانتر برامون بسازه.

Period : دوره تناوبی که بدست آوردیم.

1- : این 1- هم بخاطر اینه که شمارش همیشه از 0 شروع میشه نه 1 .

 

بیاین همون مثالی که گفتیم میخوایم 10 میلی ثانیه تاخیر بسازیم رو حل کنیم.

دقت کنید که 10 میلی ثانیه برای ما خیلی زمان ناچیزیه اما برای میکرو یه زمان بسیار بزرگه !!!

اینجوری اعداد رو در فرمول جایگذاری میکنیم :

 

 

میبینید که عدد 39999 در خروجی ظاهر میشه و معنای این عدد اینه که تایمر/کانتر باید از صفر تا 39999 رو به ترتیب بشماره،وقتی رسید به این عدد     10 میلی ثانیه طی شده ! چون هر شمارش 0.00025 میلی ثانیه طول میکشه.

 

اگر به عدد 39999 دقت کنید متوجه خواهید شد که تنها میتونیم از تایمر/کانتر 16 بیتی برای ساختنش استفاده کنیم.

چون تایمر/کانتر 8 بیتی تنها میتونست تا عدد 255 رو بشماره در حالیکه تایمر/کانتر 16 بیتی قابلیت شمارش تا عدد 65535 رو داره و عدد بدست آمده از مثال(39999) در بازه تایمر/کانتر 16 بیتی قرار دارد.

با یه محاسبه متوجه میشیم که حداکثر زمانی که میتونیم با یه تایمر/کانتر 16 بیتی بسازیم 16.384 میلی ثانیه است !

 

حالا اومدیم و دلمون خواست که یه تاخیر بزرگتر،مثلا 20 میلی ثانیه ای ایجاد کنیم،اونوقت اوضاع از چه قراره ؟

خب،اینجا به بعد دیگه بحث تکنیکیه !!!

 

اگه یادتون باشه اومدیم و فرکانس کاری میکرو رو 4 مگاهرتز در نظر گرفتیم.

اگه بیایم و این مقدار رو به 0.5 مگاهرتز کاهش بدیم،اون موقع T=0.002 ms میشه و TimerCount= 9999 میشه.

حالا نتایج رو باهم مقایسه کنید.

 

F_CPU=4 MHz ,T=0.00025 ms ,TimerCount=39999

F_CPU=0.5 MHz ,T=0.002 ms ,TimerCount=9999

 

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

خیلی دقت کنید به اعداد و تفاوتهاشون !

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

 

اگه دقت کنید تو فرکانس 0.5 مگاهرتز،دوره تناوب بیشتر شده (تقریبا 10 برابر) و مقدار TimerCount هم کمتر شده!

 

این کم شدن مقدار TimerCount چه مفهومی داره ؟

یعنی اینکه تو حالت 4 مگاهرتز برای رسیدن به مدت زمان 10 میلی ثانیه 39999 پالس نیاز بود.

اما در حالت 0.5 مگاهرتز تعداد پالس ها کم شده و به 9999 رسیده !

یعنی همین مدت زمان رو با تعداد پالس های کمتری ساختیم و نتیجه اش اینکه با تایمر/کانتر 16 بیتی (مثلا !) که حداکثر مقدارش  65535 پالس هست میتونیم با فرکانس کمتر،مدت زمان بیشتری بسازیم.چون تایمر/کانتر با پیمودن 9999/65535 تونست 10 میلی ثانیه بسازه پس باید با 65535/65535 زمان بزرگتری نسبت به فرکانس 4 مگاهرتز بسازه !

جالبه بدونید که حداکثر زمانی که میشه با فرکانس 0.5 مگاهرتز و تایمر/کانتر 16 بیتی ساخت 131.072 میلی ثانیه است !

 

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

 

حالا حتما میگید که میایم و فرکانس کاری میکروکنترلر رو هرچی هست کمش میکنیم !!!

نه دیگه ! نه عزیزم ... surprise

این کارو بکنی که دیگه همه چی بهم میریزه،سرعت پردازش میکرو هم کم میشه !

تازه واحد های دیگه هم داریم مثل : ADC,USART,... اونا هم هرکدوم تنظیم شده فرکانسهاشون !

نمیشه که !!!

دیگه از این حرفا نزنیا !؟ وگرنه به وبلاگمون دیگه رات نمیدم ! تازه بستنی هم برات نمیخرم ! ههههه laugh

 

پس چه کنیم ؟

یادتون باشه تو بخشی که ADC ها رو توضیح میدادم راجع به تقسیم فرکانسی صحبت کردم. یادتونه ؟!

الان هم میایم و دقیقا همین کارو میکنیم !

میایم یه مقدار تقسیم شده ای از فرکانس اصلی میکرو رو به واحد تایمر/کانتر میدیم ! (نگرفتی چی شد حتما برو بخش ADC رو بخون )

به این تکنیک که شرکت Atmel برای واحد تایمر/کانتر و دیگر واحد ها در نظر گرفته اصطلاحا prescaling میگند.

 

میکروکنترلر مورد نظر ما که فعلا ATmega 32 هست دارای تایمر/کانتر هایی به قرار زیر است :

 

1.تایمر/کانتر 0 ==> 8 بیتی

2.تایمر/کانتر 1 ==> 16 بیتی

3.تایمر/کانتر 2 ==> 8 بیتی

 

پس مطالب آینده ما که توضیح این تایمر/کانترها و مدهای فعالیت اونهاست رو از دست ندید.

پاینده و پیروز باشید ...

واقعا دمتون گرم.
پاسخ:
دم شما گرم که نظر میدید !
دوست من باورت نمیشه اما سه چهار بار من بخش تایمر کتاب پرتوی فرو خوندم اما چیز زیادی دستگیرم نشد به پیشنهاد یکی از دوستان اول اومدم نوشته های شما رو بخونم الان که این نوشته شما رو خوندم داره یه جرقه هایی میزنه!!!(تازه داره جرقه میزنه ;-) ) این نوشته واقعا عالی بود. تشکر میکنم و منتظر نوشته های بیشتر از شما هستم.
پاسخ:
کتاب استاد پرتوی فر که بهترین کتاب در زمینه AVR هست و شاید بشه گفت کتاب ایشون منو در میکروکنترلر راه انداخت !
سلام بنده رو هم به دوست گرامیتون برسونید.

موفق باشید
عالی یود.
از زحمات شما سپاسگذارم.
پاسخ:
سپاسگذارم.
زحمت نیست،وظیفه است !

موفق باشید
عالی بود،ولی من بستنیشم میخوام!!! راستی زود باش دیگه کدنویسیشم یادمون بده پسر جان :-)
پاسخ:
چشم.
سرم شلوغه یکم.
کد نویسی داریم حتما اونم تا جاییکه بشه بصورت عملی !
برنامه دارم برای وبلاگ !!!
salam,
It was wonderful
be successful!!
پاسخ:
Thanks
سلام دوست عزیز
اول تشکر برای توضیحاتت
بعدش یه سوال داشتم : برای پروتکل 1wire می شه کلاک جدایی از میکرو براش گرفت چون از تابع هاش که توی codevision هست که استفاده می کنم برای خوندن دیتا  یه زمان 3 ثانیه ای تاخیر داره تا اطلاعات رو بخونه و توی این سه ثانیه میکرو منتظر دیتا هست و کارمو خراب کرده به نظرت می شه کلاک جدایی داد تا خودش به صورت جدا اطلاعات رو بخونه (مثل قسمت تایمر که جدا از کلاک cpu کارشو می کنه برای شمارش) 
یه چند تا هم pdf در مورد ارتباط یک سیمه دانلود کردم ولی رجیسترهاش رو بد توضیح دادن یا اصلا معلوم نیست که تقسیم کلاکی می شه براش گذاشت یا نه
راستی اگر هم نمیشه کاری برای این تاخیر خواندن سه ثانیه کرد به نظرت با پروتکلi2c بهتر نمی شه این کارو کرد (کلاک مجزا داره ؟ )

با تشکر فراوان !!!!!
پاسخ:
سلام

در مورد 1Wire تا اونجایی که بنده اطلاع دارم،نمیشه روی کلاک مانور داد.
حداکثر سرعت این پروتکل 2 کیلوهرتزه !

این که این 3 ثانیه تاخیری که میفرمایید از کجا اومده رو با این توضیحات مختصر و بدون مشاهده سورس اصلی برنامه،نمیتونم نظری راجع بهش بدم.
اما اگر دستتون بازه در انتخاب پروتکل،میتونید از همین I2c که فرمودید و یا حتی spi هم استفاده کنید.
منتهی این برمیگرده به اینکه کاری که میخواین انجام بدین چیه و آیا محدودیتی وجود داره یا نه !

امیدوارم تونسته باشم کمک کنم.
موفق باشید
۲۷ دی ۹۲ ، ۲۳:۱۵ امید کلانتری
مهندس واقعا سپاس گذارم...
واقعا کارامد هستن و مفید...
امیدوارم خیر این نوشتن های جالبتون رو ببینید :D
پاسخ:
پاینده باشی مهندس !
سلام مهندس
خیلی عالیه
ان شاالله ادامه داشته باشه.....
ممنون.
پاسخ:
انشاالله !
خستنه نباشید
ممنون از مطالب ساده و قابل فهمتون.
راستی من پروگرمر دارم ولی بلد نیستم باهاش برنامه تو آی سی بریزم میشه در مورد پروگرمر های تقریبا تازه (نه stk200-300)توضیحاتی بدین.ممنون میشم.
پاسخ:
ممنون
لطفا سوالاتتون رو بصورت واضح و کامل در انجمن مطرح کنید.
چقدر خوبه که اطلاعاتتون را به اشتراک می گذارید
ممنونم
پاسخ:
سپاسگذارم.
مرسییییییییییییییییییییییییییی نجاتم دادین وگرنه امتحان شاید میفتادم خدا خیرت بده
پاسخ:
موفق باشید.
ممنون از آموزش خوبتون
پاسخ:
ممنون
خوب بود
پاسخ:
ممنون
سلام و عرض ادب وبلاگ پر محتوایی داری تبریک میگم به شما 
خیلی عالی و ساده همه چیز رو ساده توضیح میدید
دست شما درد نکنه
پاسخ:
ممنونم.

موفق باشید.
۲۶ اسفند ۹۲ ، ۱۳:۴۴ علی حبیب زاده
جالب بود. من تایمر  کانترها رو خیلی خوندم و باهاشون کار کردم ولی این نوشته شما جزو چندتا نوشته معدوده که خیلی واضح شرح داده
قسمت های دیگه رو هم توضیح بدید که دوستان استفاده کنند،موفق باشید.
پاسخ:
ممنون
انشاالله ...
سلام
درقسمت محاسبه

F_CPU=0.5 MHz ,T=0.002 ms ,TimerCount=9999


تایمرکانتر4999میشه
پاسخ:
سلام
داداش برای تاخیر 20 میلی ثانیه مقدار 9999 در میاد و برای تاخیر 10 میلی ثانیه 4999 !
دو خط قبل ترش گفتم برای تاخیر 20 میلی ثانیه ای.

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

موفق باشید.
دمت گرم آخرشی 
تنت سلامت 
من از مطالب شما خیلی استفاده بردم، واقعا دمتون گرم

پاسخ:
موفق باشید ...
واقعا ممنون
فوق العاده خوب،ساده و دقیق توضیح دادین واقعا ممنون. 
واقعا ساده و عالی بود.ممنون
دمت گرم عااالی توضیح دادی... آخر یکی پیدا شد به زبون خودمون توضیح بده  :)
سلام اقای احسان نوری
       خیلی ممنون به خاطر مطلبتون.واقا مفید بود و سایتتون رو به همه ی دوستام معرفی میکنم.
پاسخ:
ممنون
salam
kheyili mrc mofid bud
خیییییییییییییییییییییییییییییلی خوب توضیح میدی انشالا هر جا هستی موفق باشی
متشکر و ممنونم خیلی زیاد


پاسخ:
Mer30
;)
سلام
 واقعا عالی بود هم از نظر توضیحات شفاف و مو به مو هم از نظر طنز امیز بودن مطالب
با اجازتون من این مطلب رو توی وبلاگم با ذکر منبع میزارم.
بازم تشکر
پاسخ:
ممنون
خوشحال میشم !
خیلی عالی بود
مرسی

کاش تو همین صفحه لینکی برای  مطلب قبلی و بعدی تعبیبه میکردید

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

سلام

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

فقط یکم بیشتر درمورد این پالس تایمر/کانتر توضیح میدین؟

پاسخ:
یه مقدار جزئی تر سوالتونو بپرسین لطفا !
سوالتون دقیقا در مورد چیه !؟
salam
mazerat babate inke labtopamfarsi nadareh
l
tashakkorefaravan baraey sabke bahali ke dar amozesh darin

alave bar matlabeton mansabke amozesh ro ham az shoma yaad gereftam
وای خدای من عالی بود حرف نداشت اموزشتون  


بسیار ممنونم ازتون :)       اینکه زحمت کشیدین 2باره ممنونم :|
خیلی ممنون.

عالی بود

مرسی دم شما گرم
salam, besiar ali o ravoon bood :)
پاسخ:
تشکر
با عرض سلام وخدا قوت 
واقعا ممنون وسپاس گذارم که زحمت میکشی واین مطالب رو روی وبلاگت میذاری 
ایشالا توی زندگیت خیر ببینی 
خیلی به من کمک کرد
پاسخ:
موفق باشید.
واقعا عالی بود Its good
پاسخ:
:)
دمت گرم آقا خیلی حال کردم
پاسخ:
مررررررررسی
ینی خداوکیلی نمیدونم چجوری ازتون تشکر کنم
ولی ازخداوند خواستم که در تمام مراحل زندگیت حامی و پشتیبانت باشه
یه دنیا ممنون
پاسخ:
من نیازی به تشکر ندارم.
همیییین دعا که میکنید برااااام بسه !

ممنون :)
مرسی واقعا خوب بود.شما تایمر ها رو در 8253/4 هم توضیح دادید؟
پاسخ:
خواهش.
چی ؟؟؟؟؟؟؟
با سلام و خسته نباشید,گفتید که شمارش از صفر شروع میشه منظورتو متوجه نشدم.مثلن اگه بخوام یه تاخیر 10s با فرکانس 1Hz بدم اگه از صفر شروع کنه به شمردن اینطوری میشه دیگه:از 0تا1(1ثانیه شمرده),وقتی برسه به 2(2ثانیه شمرده),برسه به 3(3ثانیه شمرده),برسه به 4(4ثانیه شمرده),برسه به 5(5ثانیه شمرده),برسه به 6(6ثانیه شمرده),برسه به 7(7ثانیه شمرده),برسه به 8(8ثانیه شمرده),برسه به 9(9ثانیه شمرده!!!!!!) و در نهایت برسه به 10(10ثانیه شمرده).ینی تایمر باید به 10 برسه تا 10تا بشمره نه 9!!!! لطفن راهنمایی کن.اصن گیج شدم....:(((((
پاسخ:
فرکانس 1 هرتز ؟
اصن مگه داریم ؟

میکروکنترلر داره در واحد مگاهرتز کار میکنه !
اگه میشه راجع به رجیستر TCNTn هم توضیح بده
پاسخ:
داخلش یه عدد معادل 0 تا 255 ذخیره میشه که مقدار لجظه ای تایمر/کانتره !
خیلی عالی بود .... ممنووووووون
پاسخ:
:)

استاد فن بیان

پاسخ:
خخخخخخ....
۲۴ دی ۹۳ ، ۱۲:۴۵ رضا محمدزاده
خاک توسرت بااین وبلاگت

پاسخ:
شرمندمون نکن !!!
واقعا عالی بود.ممنون
پاسخ:
تشکر
   عالی بود ,   لایکککککککککککککککککککککککککککککککک  
پاسخ:
مرسی
۲۰ بهمن ۹۳ ، ۱۳:۲۹ علی اکبر صالحه
عالی بود
پاسخ:
ممنون
بسیار جالب و قشنگ توضیح دادید دم شما گرم
پاسخ:
ممنون
خیلی عالی بود 
خدا خیرتون بده 
ممنون
پاسخ:
:)
داداش ممنونم خیلی مطالب مفیدی در سایت قرار دادی :-)
پاسخ:
خواهش
سلام من بیشتر از بحث تایمر از روش آموزشتون یاد گرفتم ...بی نهایت تشکر
پاسخ:
لطف دارید.
خیلی عالی بود خدا خیرت بده 
ممنون

پاسخ:
ممنون
خیلی خیلی ساده و واضح گفته شد...
دقیقا مشکل من بود که حل شد ((:
پاسخ:
خدا رو شکر ...
اقا عالی بود
پاسخ:
تشکر
سلام. خوبید من تعدای پالس تولید شده دارم میخوام تعدادش با لبه بالا رونده شمرده شه، فقط همین کاری هم با زمان ندارم. میتونید راهنمایی کنید ممنون
پاسخ:
بهتره برید سراغ استفاده از وقفه خروجی !
سلام مرسی بابت مطلب خیلی خوبتون ببخشید من میخوام بدونم میتونم از تایمر استفاده کنم برای تولید موج سینوسی ا مگا هرتز ؟؟؟؟؟ خیلی ممنون میشم اگر مطلبی میدونید بهم بگید
پاسخ:
سلام
بله،ساخت موج سینوسی با AVR امکان پذیره.
خیلی آموزنده و عالی
مرسی واقعا
پاسخ:
سپاس
ایولا
پاسخ:
ممنون
مرسی عزیزم
امید وارم همیشه سالم و پیروز باشی
پاسخ:
ممنون
دستت درد نکنه واقعا عالی بود...
خیلی خوب توضیح داده بودی دمت گرم
پاسخ:
خواهش
راستی یه سوال:
از تابع Delay که در کدویژن هست استفاده کنیم. اونم از همین تایمرها استفاده میکنه دیگه؟ 
اونم به همین اندازه دقیق هست؟ مثلا میخوایم بگیم 10 میکرو ثانیه تاخیر بنداز
پاسخ:
تقریبا دقیقه
ولی نه اینکه ازش بعنوان ثانیه شمار ساعت استفاده کنیم.
سلام. با تشکر از اطلاعات خوبی که میدید.
یه سوالی دارم.
میخوام تعداد پالس های وارد شده به میکرو رو بشمارم.
و هر وقت خواستم ریستش کنم.
از چه دستوری استفاده کنم؟
پاسخ:
این کاری که شما میخواین انجام بدین،سخت نیست.
ولی در حیطه مسائل آموزش داده شده نیست !
من چند روز دیگه امتحان میکرو دارم هیچی بهم کمک نکرد جز وبلاگ شما..
بعدشم اینکه خیلی باحالی  :دی
پاسخ:
ممنون
اصن اشکم در اومد انقد خوب توضیح دادین... موفق باشیییین
پاسخ:
ممنون 
سلام
ممنون از توضیحات خوب تون و ممنون از اینکه آموخته هاتون رو به اشتراک میذارید
در پناه حضرت حق موفق باشید

پاسخ:
تشکر
salam khaste nabashid.....manzor az rah andaziye timer chiye ....chetor rah andazi bayad kard
پاسخ:
سلام

آدرس بدین کجای مطلبو متوجه نشدین ؟!

salam khaste nabashid.

manzor az tiner rah andazi she chiye...?????

chetori bayad kard...

پاسخ:
؟
میخوام وقتی ledخاموش شد timerشروع کنه به راه اندازی...همین
 چطور باید راه اندازی شه 
خیلی باحالی
دمت گرم به نظر من از ECA بهتر ه وبلاگت
و قربانت سلف خازن بچینی مدار ببندی  پیشرفت کنی
سلام مررسی از وبلاگ خوبتون یه سوال داشتم 
تو کتاب جابر الوندی تو یک مثال مشابه البته برای تایمر کانتر صفر همین مراحل رو انجام داده ولی اخرش عدد کل تایمر کانترو از عدد بدست اومده برای شمارش کم کرده مثلا فرضا در اینجا اومده برای مقدار دهی به تایمر کانتر 65535 رو از 39999 کم کرده و بعد  حاصل رو در tcnt مربوطه قرار داده میشه یک توضیح مختصر راجع بهش بدین ؟ با تشکر ...
عالیه 
دمت گرررررررررررم

سلام

مگه هر مگاهرتز برابر با 1000000 هرتز نیست! اگه اینطوره 0.00025 که در بالا بدست آوردید نمیتونه درست باشه و حاصل تقسیم میشه 0.00000025  شاید هم من دارم جایی رو اشتباه می کنم.

بسیار عالی. ممنون
با سلام
ممنون از مطالب خوبت
یه سوال داشتم...یه جا گفتی:با فرض اینکه فلاشر ما دارای تاخیر 10 میلی ثانیه باشه،معنا و مفهومش اینه که دارای دوره تناوب 10 میلی ثانیه هم هست !

دوره تناوبش مگه 20 میلی ثانیه نمیشه؟
سلام،خیلی ممنون،مطلب مفیدی بود
اما همون اولش یه ایراد جزئی داره در مثال چراغ چشمک زن.بذارید اول مثال خود شما را کپی/پست کنم:

1.روشن شو

2.یک ثانیه صبر کن ==> تاخیر

3.خاموش شو

4.یک ثانیه صبر کن ==> تاخیر

5 . ...  ==> به همین ترتیب


شما گفتین دوره تناوب 10 میلی ثانیه هست،در صورتی که این زمان،زمان دیوتی سایکله،نه دوره تناوب.دوره تناوب میشه مجموع زمان دیوتی سایکل و زمان غیر اون،و در این مثال یعنی مجموع زمان روشن و خاموش شدن چراغ که میشه 10+10=20

mersi mofid bod
عالی بود
ممنون از زحمتی که کشید.

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

میخوایم این کار رو با میکروکنترلر AVR Mega2560 انجام بدیم

چکار باید بکنیم؟

ممنون میشم راهنمایی بفرمایید

سلام تو قسمت محاسبه با فرکانس 0.5 مگاهرتز اشتباه نکردید چون هرچی من محاسبه میکنم میشه 4999 اما شما9999 بدست اوردید
سلام..توضیحات خیلی خوب هستند و مهم تر از همه اینکه کاملن.
با تشکر و آرزوی موفقیت برای شما
عااااااااااااااااااااااااااااااااااااااالییییییییییییییییییییییییییییی 

F_CPU=4 MHz ,T=0.00025 ms ,TimerCount=39999


به نظرم عدد مربوط به تایمرکانت 49999 میشه.
تشکر داش احسان
۱۲ دی ۹۴ ، ۰۰:۱۲ عاشق وبلاگتم

سلام .مرسی واقعا به خاطر وبلاگتون

خیلی دعاتون کردم:)

مممننننننوووننن خیلی قشنگ گفتی
سلام
واقعا عالی توضیح دادین .
ممنون که از تایپ این همه توضیحات هم خسته نمیشین.
دمت گرم خدایی..... خیلی مردی. مرسی مطالب وبلاگت عااالیه
با سلام و عرض ادب وخدا قوت
آب در کوزه و من تشنه لبی میگشتم
سلام،
آقا دمت گرم، خیلی باحال توضیح میدی آدم شیرفهم میشه. :)
انشاالله موفق باشی...
داداش دمت گرم حسابی ترکوندی
خیلی مقاله توپی بود ;)
ایشالا همیشه تو زندگی موفق باشی
Tashakor. vaqean baram komak kard ta mafhoom counter mcu ro befahmam. omidvaram bazam be neveshtan edame bedid. chon matalebton ro donbal khaham kard. 

movafaq bashin
واقعا عالی هستی خسته نباشی فقط میشه پشته یا stack رو هم توضیح بدی دست گلت درد نکنه
عالی بود 
سلام
ایشالله هرجا هستی موفق باشی خییلییییییییییییی عالییییییییییی توضیح میدی       ممنونننننننننننننننننننن
سلام.من ی خازن سنج ساختم.تو قسمت برنامه نویسی بسکامش ی دستور بود ب نامgetrc .استاد گفت کارش چیه من گفتم دوره تناوب( یعنی زمان )رو اندازه میگیره.گفت چطوری اندازه میگیره گفتم نمیدونم.گفت جوابش در حد ی جملس.شما میتونید بهم کمک کنید؟گفت تایمر توش استفاده میشه،کدوم تایمره بازم گفتم نمیدونم.اگه میشه برام توضیح بدید
سلام.آقا عالی ساده وکاربردی.دمت آتشین
عالی بود خدا خیرت بده پاینده و شاد باشی
مرسی مرسی مرررررررررررررررررررررررررررررررررررررررررررررسی
عالی بود ممنون
دستت درد نکنه ،  خدا قوت
عالی عالی
دستت درد نکنه
خیلی عالی بود
ایشالا به حق 5 تن پیر شی مادر , عالی بود
با سلام و آرزوی سلامتی و موفقیت
من توی کلاس میکروکنترلر AVR شرکت می کنم ولی این واحد تایمر کانتر رو متوجه نشده بودم
واقعا عالی بود.
با تشکر
سلام ممنون از مطالب خبتون
یه سوال داشتم از مطالب این سایت با ذکر منبع می شه استفاده کرد؟
سلام دوست عزیز. 
اینقدر استادمون این قسمتو بد به ما توضیح داد که داشت باورم میشد که نمیتونم این مطالبو یاد بگیرم.
خییییییییییییییلی مفهومی و عالی توضیح دادی. دمت گرم

شمام موفق و پیروز باشی

ممنون از مطالب مفیدت اصن نفهمیدم کی خوندم تموم شد خخخ خیلی عالی

مهندس دمت گرم 
واقعا که زکات علم رو خوب میپردازید
هکیشه موفق باشید
۰۷ مهر ۹۵ ، ۱۰:۱۲ یزدخواستی
خوب توضیح دادید موفق باشید
داش دمت گرم
خدا قوت عالی بود 
سلام و خسته نباشید میخوام به کمک تایمر کانتر یه برنامه به زبان basic بنویسم که بتونه یه موج مربعی با فرکانس 10khz و D=40% تولید کنه
و قسمت بعدش میخوام موج مربعی باشه اما فرکانس وD قابل تنظیم باشه
ممنون میشم پاسخ بدید خیلی مهمه
به نام خدا
سلام

خیلی عالیه. ممنون
واقعا زیبا توضیح دادید ممنونم
سلام
مطالبتون  رو خیلی خوب متوجه شدم ممنون.
تشکر
خدا خیرتون بده
برای مکانیکی ای مثل من مفید بود
Damet garm pesar. Ali boooood. Age mice matlabhayi merle in vaghti edmasho mizari link kon ke rahat beshe peyda kardd :)
بی نهایت ممنون. ظاهرا دیگه نمیاید به وبلاگتون. خبری ازتون نیست. فقط میتونیم براتون دعا کنیم هر جا که هستید خوشبخت شاد و سالم باشید......
خیلی سرچ کردم هیچکس به این خوبی توضیح نداده.
ممنونم 
مطالبتون عالی بود.فقط ی سوال داشتم ک فکر نکنم ج بدین.اخه خیلی وقته نظرات دوستان رو ج ندادین.
سلام
خیلی ممنون
خیلی قشنگ توضیح دادی
سلاااااااااااااااام و خسته نباشید ویژه عالی بود
فقطط یه سوال شما با این همه معلومات تونستین ازش درآمد داشته باشین؟
شغلتون و منبع درآمدتون چیه؟
آخه من خیلی نا امیدم به نظرتون این همه زحمتی مه برای گرفتن لیسانس دانشگاه سراسری می کشم آخرش جواب میده؟؟؟؟؟؟؟؟؟

عالی بود واقعا نمیدونم چی در مورد مطلبتان بگم
خدا خیرتون بده

سلام

ممنون بابت مطالبتون عالین.

فقط اگه زمان تاخیر رو به 10ms کاهش بدیم دوره تناوب میشه 20MS چون 10 میلی روشنه 10 میلی خاموشه

۱۵ مرداد ۹۶ ، ۰۶:۵۰ محسن سیف اله زاده
خ.خ.خ.خ. = خداییش خیلی عالی بود خدا خیرت بده : )
سلام.
خیییییلی عالی بود ، ممنون ، واقعا بیان تون عالیه .
خیلی ممنون، ساده وروان توضیح دادید متشکرم
ممنون از اطلاعات مزایده ای که قرار دادید
خیر ببینی جون

با عرض سلام خسته نباشید اگر امکان داره مطالب بیشتری از صفر تا صد AVR بذارین همراه با نهوه پروگرم کردن پروژ په های کاربردی
۰۸ دی ۹۶ ، ۰۸:۴۵ محمد عباسی
دوست عزیز، سلام، خدا فوت
خیلی شیوا و رسا می نویسی که باعث میشه درکش آسون بشه
درود بر شرفت
عالی
ممنون

سلام
من اینا رو بلد نبودم و شما با جزئیات به من آموزش دادید
واقعا ممنونم از لطفتون
سلطانی سلطان....
واقعا میگم ساده و مفید
مرسیییییییییییییییییییی
خیلی عالی بود، پاینده و پیروز باشید.
 
                     ممنون
دمت گرم

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

ممنون از این که علمتون رو به اشتراک گذاشتین

سلام و وقت یه خیر

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

عالی بود تازه کم‌کَمَک می‌فهمم چی می‌شه.

انشالله که دستت برسه ضریح نجاتم دادی

۲۱ دی ۹۸ ، ۱۷:۰۶ سید مخسن

این وبلاگ صالحات و باقیات برات موند.....خدا خیر دنیا و آخرت  بهت بده ننه. دمت گرم که در سطح باغچه بان مساعل رو مطرح میکنی....

هیچی دیگه دمت چونان حدیث آشنایت گرم...

خیلی خوب توضیح دادی...

کانال تلگرامی یا ایسنتاگرامی هم داری؟

دمت گرم

ایشالله عاقبت بخیر شی.

عالی دمت گرم.مرسی خیلی خوب فهمیدی و فهموندی

عالی بود عالیییییی

فوق عاااالی بود داداش

خیلی خیلی ممنونم.خسته نباشی

خیل عالی . خسته نباشید ممنون از زحماتتون

سلام وقت بخیر ممنونم از توضیحات خوبتون

سوالی داشتم این که نوشتید این مطالب برای atmega32 هست

آیا برای atmega16  این توضیحات صادقه؟

 

با سلام عالیه مطالبتون مث همیشه😊😊

ممنون از توضیحات کامل و مفیدی که دادین

۳۰ ارديبهشت ۰۰ ، ۱۸:۵۸ حسام الدین سلطانی

سلام واقعا مطالب جویده شده و خوب و خوش پخت هستن

مهندس جان برای افراد مبتدی یا حتی حرفه ای بد نبود یک مدار هم بارگذاری میکردی تا بهتر مطلب درک بشه مثلا مداری از آیسیMC14017CPکه یک تراشه کاربردی در بحث کانتر است واین آیسی پنج کاناله هستش.دستتون درد نکنه که مطلب رو ساده وباذکر مثال عنوان میکنید.باز هم سپاس گذاریم.موفق باشید .مهندس الکترونیک حمید رضا شناور از شیراز۰۹۳۹۴۴۱۱۶۸۰

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی