برنامه نویسی با زبان C

به نام خدا.می خواهم در اول زبان برنامه نویسی خودم را به شما معرفی کنم.زبان برنامه نویسی من زبان C است که با نرم افزار CodeVisionAVR برنامه نویسی می شود.بعد از برنامه نویسی ما میتونیم کد های خود را در نرم افزار Proteus شبیه سازی کنیم.شما می توانید این دو نرم افزار را از Google دانلود کنید.

دوره آموزش الکترونیک و برنامه نویسی میکروکنترلر AVR

دوره آموزش الکترونیک و برنامه نویسی AVR در سال تحصیلی 93-94 در دانشگاه صنعتی قم برگزار شد و با استقبال نسبتا خوب دانشجویان همراه بود.

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


منتظر دوره های بعدی آموزشی با کیفیت بهتر باشید ...

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 1

 

مبدل آنالوگ به دیجیتال

اگر به PORTA.0  تا  PORTA.7  نگاه کرده باشید کنارشون یه کلماتی هست : ADC0 تا ADC7 که با استفاده از این پورت( PORTA ) میتونیم سیگنال آنالوگ رو دیجیتال کنیم.

وقفه در AVR

توجه مهم : وقفه به معنی تاخیر زمانی نیست.

بزارید با یه مثال توضیح بدم ، مثال : ما میخایم یه LED   رو با یه کلید روشن و خاموش کنیم ؟

1) روش سرکشی (Polling)
ما تو تابع MAIN   میایم و میگیم هر موقع که ما کلید رو زدیم فلان پایه ی میکرو فعال شد (یا همون 1منطقی شد) ، اون وقت جنابعالی (منظور میکروکنترلر هستش) هم فلان پایه میکرو رو فعال کن تا LED روشن بشه. حالا مشکل زمانی هستش که ما هنوز کلید رو نزدیم و جناب میکروکنترلر مجبوره که هی بره و ببینه که آیا فلان پایه فعال شده یا نه و هی میره و هی برمیگرده (بیچاره خسته نمیشه این همه راه رو میره !!! ) البته تا حالا من خودم از همین روش استفاده کردم !!! و از روش زیر استفاده نکردم.(آخه چه کاریه گره ای که با دندون باز میشه چرا با دست بازش کنی !!!)

2) روش وقفه ( Interrupt )
تو این روش برخلاف روش قبلی به جای این که ما هی بریم و برگردیم تا بفهمیم که آیا فلان پایه فعال شده یا نه میاییم یه کاری میکنیم : یه موبایل برا دو طرف میخریم و هر موقع که اون پایه هه فعال شد زنگ میزنه به میکرو و میگه دادا بدو بیا که فعال شدم !!!لپ کلوم ای که تو این روش اگه پایه فعال شد خودش ما رو خبر میکنه و دیگه لازم نیس که هی بریم و هی برگردیم و هی بریم و هی … حالا چطور میاد ما رو خبر میکنه رو بعدا یا در ادامه میگم …


انواع وقفه

1) وقفه داخلی :  تقریبا تمام امکانات داخلی میکرو دارای وقفه بوده مانند تایمر –کانترها و پروتکل های ارتباطی و مقایسه کننده ها و مبدل آنالوگ به دیجیتال .

2) وقفه خارجی : در میکرو پایه هایی به نام INTx وجود دارد که زمانی تحریک شوند ، میکرو به زیر برنامه وقفه پرش می کند و کار تعیین شده را انجام می دهد.این وقفه ها می توانند با یک لبه بالا رونده یا پایین رونده و یا یک منطقی تحریک شوند.

نکته : هنگامی که یک پایه به عنوان وقفه استفاده شود دیگر نمی توانیم از آن پایه به عنوان ورودی یا خروجی استفاده کنیم. این یه میکرو کنترلر avr از نوع atmega16 هستش که توش پایه های وقفه صفر-وقفه1 و وقفه 2 رو مشخص کردم.


آموزش جامع avr

 

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

1) ریجستر SREG

ریجستر SREG

بیت 7 ( I ) :  با یک کردن این بیت ، وقفه سراسری یا کلی فعال میشود.(یعنی میتونیم از وقفه استفاده کنیم.)

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

 

2) ریجستر GICR

ریجستر GICR

 تو این ریجستر ما فقط با 3 بیت آخرش کار داریم (البته فعلا ! )

بیت 7 (INT1 )  : با یک کردن این بیت وقفه 1  فعال میشود.  متناظر با پایه PORTD.3 میباشد.(اون عکس  میکروکنترلر avr که در بالا هستش رو نگاه کنید)

بیت 6 (INT0 )  : با یک کردن این بیت وقفه 0 فعال میشود. متناظر با پایه PORTD.2 میباشد.(اون عکس  میکروکنترلر avr  که در بالا هستش رو نگاه کنید)

بیت 5 (INT2 )  : با یک کردن این بیت وقفه 2  فعال میشود. متناظر با پایه PORTB.2 میباشد.(اون عکس  میکروکنترلر avr  که در بالا هستش رو نگاه کنید)

 

 

3) ریجستر GIFR

ریجستر GIFR

اگه وقفه مورد نظر(وقفه صفر-یک یا دو) و وقفه سراسری فعال بود و در صورت تحریک شدن (فعال شدن/غیر فعال شدن)
این ریجستر با توجه به شرایط موجود تصمیم میگیره که دستور اجرای  وقفه رو بده یا نده.

برای این که این قدرت تصمیم گیری رو به این ریجستر بدیم باید بیت های لازم و مورد نیازمون از یان ریجستر رو یک کنیم.
مثلا اگه دارید از وقفه صفر استفاده میکنید باید بیت 6 رو یک کنید.

بیت 5 این ریجستر مربوط به وقفه 2»»»بیت 6 این ریجستر مربوط به وقفه 0»»»»بیت 7 این ریجستر مربوط به وقفه 1

 

4) ریجستر MCUCR

ریجستر MCUCR

این ریجستر هم ریجستر مهمی هستش O_o

ما با نحوه مقدار دهی این ریجستر (که در ادامه میگم) میتونیم نحوه فعال و غیر فعال شدن (نحوه تحریک شدن) وقفه رو تعیین کنیم.
مثلا طوری تعیین کنیم که اگه صفر منطقی شد(0 ولت) فعال بشه (Falling Edge)
یا طوری تعین کنیم که با یک منطقی (5 ولت) فعال بشه (Rising Edge)

توجه مهم : این ریجستر برا دو وقفه صفر و یک هستش و ریجستر بعدی برای وقفه دو هستش.
(یکی از علش هم اینه که اگه تو کد ویژن تو قسمت کد ویزاردش و تو قسمت!
تعیین وقفه ها و تو قسمت MODE رو نگاه کرده باشید
وقفه صفر و یک 4 تا حالت داره  اما وقفه 2 ، فقط دو حالت داره.)

نحوه مقدار دهی ریجستر MCUCR

جدول زیر که انواع  مقدار دهی بیت های ISC01   و  ISC00   رو نشون داده که مربوط به وقفه صفر هستش.

فعلا فقط دوتای آخر  رو توضیح میدم و بقیه برای بعدا :
3) اگه 1=ISC01   و  0=ISC00  شد یعنی : با صفر منطقی (همون 0 ولت خودمون)  فعال میشه.
4) اگه 1=ISC01   و  1=ISC00  شد یعنی :  با یک منطقی (همون 5 ولت خودمون)  فعال میشه.

isc00-01

 جدول زیر هم مربوط به وقفه یک هستش.
که دیگه من توضیح نمیدم ، چون مثل حالت بالا هستش.

ریجستر MCUCR

5) ریجستر MCUCSR

ریجستر MCUCSR

با توجه به توضیحاتی که در بالا دادم ، نحوه تحریک این وقفه که وقفه 2 هست بر خلاف وقفه 1 و 0 که 4 تا حالت داشت ولی وقفه 2 فقط دو حالت دارد لذا دیگر از جدول مدول خبری نیست.

اگه بیت 6 (ISC2) این ریجستر رو صفر کنی   با صفر منطقی (همون 0 ولت خودمون)  فعال میشه.
اگه بیت 6 (ISC2) این ریجستر رو یک  کنی   با  یک  منطقی (همون 5  ولت خودمون)  فعال میشه.

 

فعال کردن وقفه در کدویژن

تو کد ویژن وقتی یه پروژه جدید ایجاد میکنی و میری تو قسمت کد ویزارد ، میتونی وقفه رو از همون جا فعال کنی و دیگه کد مد ننویسی.

با توجه به عکس زیر وقفه ها رو میبینید (وقفه 0 ،  وقفه 1   ،   وقفه2)  که با تیک زدنشون فعال میشن.
تو قسمت mode 4 تا حالت داریم که در بالا توضیح دادمش.
فعال کردن وقفه در کدویژن
این کدی که در زیر میبینید من با کد ویزارد ایجاد کردم.
سه تا وقفه رو فعال کردم و حالت MODE هر سه رو گزاشتم رو گزینه آخر و بعد …
توجه : البته کدهایی که برنامه تولید کرد خیلی بیشتر از این بود که من کد های اضافه و غیر مربوط به این موضوع (وقفه) رو حذف کردم تا مرتب تر بشه.

 

 

آموزش کد نویسی تابع وقفه

یه توضیحی در مورد کد نویسی وقفه بدم و اون این که به صورت زیر نوشته میشه
همون طور که اگه کد های قسمت “فعال کردن وقفه در کدویژن” رو دیده باشین ، یه تابع برا وقفه نوشته شده که بعد از تعریف کتاب خانه اومده و …
حالت کلی این تابع به صورت زیر هستش:
کد EXT_INT0 یعنی این تابع مربوط به وقفه صفر هستش. ( EXT_INT1 یعنی   وقفه 1—–EXT_INT2  هم یعنی  وقفه 2 )

البته به جای EXT_INT0  میتونستیم عدد 2 رو قرار بدیم .
و به جای EXT_INT1  میتونستیم عدد 3 رو قرار بدیم .
و به جای EXT_INT2  میتونستیم عدد 19 رو قرار بدیم .

تــمـــارین ایـــن مـــطـــلـــب (تــمـــاریـــن وقـــفـــه)

 

پروژه avr یک

این هم یه  پروژه ساده هستش که اگه رو کلید کلیک کنی LED روشن و دوباره اگه کلیک کنی خاموش میشه و ….
که با وقفه صفر  نوشته شده است.

آموزش AVR

فایلش رو در زیر گزاشتم…..

پروژه avr سه

مدار پروژه

پروژه avr

کدهای پروژه
تنظیمات کد ویزارد



 پروژه avr

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 2

انواع تبادل اطلاعات

ارسال و دریافت اطلاعات به دو روش کلی انجام می شود:

1) موازی  ( parallel)
۲) سری (serial)

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

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


تبادل (اطلاعات به صورت) موازی :

همون طور که در بالا بیان شد (  n بیتی در خط (پایه)   )   میشه نتیجه گرفت که تو این روش مثلا برا تبادل اطلاعات دومیکروکنترلر avr با هم همانند عکس زیر این دو رو به هم وصل میکنیم
و میکروکنترلر 1 (فرستنده) که مثلا قرار است اطلاعات بفرستد ، PORTC (الزامی ندارد که حتما PORTC باشد ) آن را به صورت خروجی تعریف میکنیم.( چون قرار است اطلاعات ارسال کند.)
و میکروکنترلر 2 (گیرنده) که مثلا قرار است اطلاعات بگیرد ، PORTC (الزامی ندارد که حتما PORTC باشد ) آن را به صورت ورودی تعریف میکنیم.( چون قرار است اطلاعات دریافت کند.)

حالا اگه مثلا  در میکروکنترلر 1  ، PORTC.0=1 شود آنگاه در میکروکنترلر 2 هم  PORTC.0=1 میشود.

انواع تبادل سریال

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

۱) ارسال و دریافت اطلاعات سریال به صورت سنکرون( USRT )

در این روش دیتای مورد نظر بر روی یک خط همراه با یک خط کلاک همزمان کننده ارسال می شود و گیرنده نیز می تواند دیتا را بر روی یک خط توسط کلاک همزمان کننده که از طرف فرستنده ارسال می شود ، دریافت نماید. به طور مثال اطلاعاتی که Keyboard یا Mouse کامپیوتر به خروجی ارسال می کنند به همین روش می باشد.

میکرو کنترلرهای AVR در روش سنکرون می توانند به صورت چند پردازنده ای به شکل Master و Slave  (منظور همون فرستنده گیرنده هستش) کار نمایند.

این ویژگی فقط در بعضی از میکرو کنترلر های AVR حمایت شده است که البته ATmega16 قابلیت تبادل سریال در مد سنکرون را دارد.

2)  ارسال و دریافت اطلاعات سریال به صورت آسنکرون(  UART )

در این روش دیتای مورد نظر بر روی یک خط ارسال ( TXD ) یا یک خط دریافت( RXD ) منتقل می شود و به همراه دیتا کلاکی ارسال نمی گردد بنابراین به اصطلاح می گوییم فرستنده و گیرنده غیر همزمان عمل می کنند.

پس در چنین روشی باید دیتای مورد نظر با قالب بندی خاصی به صورت بیت به بیت با فواصل زمانی تعریف شده برای فرستنده و گیرنده منتقل شود ، که به این فواصل زمانی در این نوع ارتباط نرخ انتقال داده یا Baud rate گفته می شود.

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

به طور مثال می توان ارتباط با ماژول GSM ، ماژول GPS ، ماژول فرستده و گیرنده RF و… را از کاربردهای مهم این روش برشمرد.

3) ارتباط جانبی سریال ( SPI )

4) ارتباط سریال دو سیمه ( TWI )

ریجسترها در ارتباط سریال USART

تو این جلسه که عنوانش  ” ارتباط سریال USART ” هست یه 5 تا ریجستر داریم با نام های UCSRA – UCSRB – UCSRC – UBRRL – UBRRH  که در ادامه توضیح میدمشون.بریم سراغ آموزش avr مون و این بار با موضوع قشنگ و زیبا USART !!!

1) ریجستر UCSRA :

 آموزش avr

بیت 0 : میکروکنترلر avr به حالت ارتباط سریال چند پردازنده ای میرود ؛ مربوط به اتصال چند میکروکنترلر به صورت سریال.

بیت 1 : فقط در حالت آسنکرون کاربرد داره ، در حالت سنکرون باید صفر شود ، با یک کردنش تقسیم فرکانسی (برا تولید نرخ انتقال داده) از 16 به 8 تغیر میکند.

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

بیت 3 : اگه بافر دریافت پر شده باشه و بازم اگه اطلاعات جدیدی بهش داده شه ، اطلاعات جدید از بین میروند.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)

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

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

بت 6 : اگه داده جدیدی برا ارسال موجود نباشه این بیت یک میشه.(موقع مقدار دهی به این ریجستر ، این بیت را باید صفر کرد.)

بیت 7 : زمانی که داده دریافتی در بافر دریافت موجود باشه و این بافر هنوز خونده نشده باشه.

 

2) ریجستر UCSRB :

میکروکنترلر

بیت 0 : اگه فریم داده ارسالی رو 9 بیت انتخاب کنیم ، این بیت به عنوان بیت 9 ام عمل میکند لذا باید این بیت رو یک کنیم.

بیت 1 : اگه فریم داده دریافتی رو 9 بیت انتخاب کنیم ، این بیت به عنوان بیت 9 ام عمل میکند لذا باید این بیت رو یک کنیم.

بیت 2 : این بیت به همراه بیت 1 و 2 ریجستر UCSRC مربوط به تعیین تعداد بیت داده هستش که با توجه به جدول زیر میتونید تعیینش کنید.

بیت 3 : برا تعیین قطعه مورد نظر (مثلا میکرو) به عنوان ارسال کننده داده باید این بیت یک شود.(با این کار عملکرد عادی پایهPORTD.1 قطع شده و نقش دومش یعنی TXD فعال میشه.)

بیت 4 : برا تعیین قطعه مورد نظر (مثلا میکرو) به عنوان دریافت کننده داده باید این بیت یک شود.(با این کار عملکرد عادی پایهPORTD.0 قطع شده و نقش دومش یعنی RXD فعال میشه.)

بیت 5 : با یک کردن این بیت وقفه خالی بودن بافر دریافتی فعال میشه.(البته به شرطی که بافر کلی(یا همون سراسری!) هم فعال باشه)

بت 6 : با یک کردن این بیت وقفه کامل شدن ارسال فعال میشه.(البته به شرطی که بافر کلی(یا همون سراسری!) هم فعال باشه)

بیت 7 : با یک کردن این بیت وقفه کامل شدن دریافت فعال میشه.(البته به شرطی که بافر کلی(یا همون سراسری!) هم فعال باشه)

 

میکروکنترلر avr

 

3) ریجستر UCSRC :

آموزش جامع میکروکنترلر AVR جلسه5

بیت 0 : در مد سنکرون کاربرد دارد.

بیت 1 , 2 : توسط این دو بیت به همراه  بیت 2 ریجستر UCSRB میتوان تعداد بیت داده رو تعیین کرد. که با توجه به جدول بالا میتونید تعیینش کنید.

بیت 3 : تعیین تعداد بیت های STOP  (اگه صفرش کنیم>>یک بیت STOP و اگه یکش کنیم>> دوبیت STOP )

بیت 4 و 5 : تعیین بیت توازن ارسالی توسط ارسال کننده.با توجه به عکس(جدول!) زیر این کار رو کنید.

آموزش جامع میکروکنترلر AVR جلسه5

بیت 6 : انتخاب مد ارتباط سریال ؛ 0»»مد اسنکرون   و   1»»مد سنکرون

بیت 7 : انتخاب دسترسی به یکی از ریجستر های UCSRC یا UBRRH  ، برای دسترسی به UCSRC باید این بیت یک شود.

 

4) ریجستر های  UBRRL و UBRRH :

آموزش avr

آموزش avr

بیت 0 تا 11 : این 12 بیت برا تعیین نرخ انتقال داده استفاده میشوند.(توسط جدول زیر—جدول زیر رو از دیتاشیت مگا16 گرفتم)

روی عکس ها کلید کنید و در اندازه اصلی ببینیدشون

 ارتباط سریال USART

 

 

 ارتباط سریال USART

 

 آموزش AVR

 

 آموزش AVR

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 3

توضیح : مبحث SPI هم کارش تقریبا مثل USART هستش فقط یه کم باهاش تفاومت داره>>>هر کدوم از این روش ها کاربرد خاص خودشون رو دارند>>>مثلا برا اتصال SD CARD به میکرو باید از روش SPI استفاده کنید و برا بیشتر ماژول ها از USART >>>در کل هر کدوم جای خودشون کاربرد هایی دارند.

منم اصلا نمیخواستم این مطلب رو بزارم>>>ولی مجبور شدم>>>چون برا کار با LCD گرافیکی های بزرگ >>اگه بخوای توشون تصویر نشون بدی>>>با توجه به این که میکروکنترلر حافظش کم و محدود هستش ما میایم و به میکرو یه SD CARD وصل میکنیم و تصاویر رو در SD CARD ذخیره میکنیم و از این طریق تصاویر رو تو LCD نشون میدیم.
و به احتمال زیاد مطلب بعدی در مورد “آموزش اتصال SD CARD به میکرو” هستش.>>>و مطلب بعدی در مورد LCD گرافیکی های سری توشیا >>> انشاالله.

پایه های ارتباط سریال SPI در AVR

پایه های ارتباط سریال SPI در AVR


این عکسی که مشاهده میکنید مربوطه به mega16  و اون 4 تا پایه که تو شکل مشخص کردم مربوطه به بحث ارتباط سریال SPI ، در زیر پایه ها رو مختصرا توضیح میدم.

SS : انتخاب SLAVE مورد نظر (با صفر فعال میشه.>>یعنی اگه پایه SS یه SLAVE رو صفر کنی>>به حالت انتخاب در میاد)

MOSI : پایه انتقال اطلاعات از MASTER به SLAVE

MISO : پایه انتقال اطلاعات از  SLAVE به MASTER

SCK : خط کلاکی که توسط MASTER ایجاد میشه

توجه : در کد نویسی باید ورودی خروجی بودن این پایه ها رو (مثل بقیه پایه ها) تعیین کنیم.

ورودی خروجی بودن پایه ها باید بر طبق جدول زیر باشد. (اگه 4-5 خط بالا رو بخونید و تصویر زیر رو نگاه کنید و نیم ثانیه فکر کنید >>کار جدول زیر رو میفهمید.)

ارتباط سریال SPI در AVR

 

مقدمه ای در مورد  مبحث SPI

مبحث SPI هم زیاد با USART فرق نداره (اه اه اه دماغم چرا داره بزرگ میشه؟؟؟) >>> هر کدوم جای خودشون کار برد هایی دارند.

تو مبحث USART میگفتیم فرستنده گیرنده اما در SPI میگیم Master_slave یعنی :

دستگاهی که فرستنده هستش رو میگن Master  و دستگاهی که گیرنده هست رو میگن Slave (نامردا اسم فرستنده گیرنده رو عوض کردن…^_^)

توجه : ما میتونیم با یک master شونصد تا (تعداد زیادی) slave رو کنترل کنیم و بهشون اطلاعات بدیم.

 

ریجستر های SPI

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

ریجستر SPCR

 آموزش avr

 

 

بیت0 و 1 : تعیین تقسیم فرکانسی(تعیین فرکانس کاری SPI)>>>در جدول زیر بیت 0 ریجستر SPSR رو هم ابردم(اگه یک بشه>>فکانس دوبرابر میشه)

 آموزش avr

 

 

 

 

 

 


بیت2 :
 نمونه برداری از پایه های MOSI و MISO >>>صفر : لبه بالا رونده ___ یک : لبه پایین رونده

بیت3 : وضعیت اولیه پایه ی SCK >>> صفر : پایه SCK صفر میشه ___ یک : پایه SCK یک میشه (البته اینا در صورتی هستن  که پالسی ارسال نمیشه)

بیت4 : صفر : انتخاب مد SLAVE __ یک : انتخاب مد MASTER

بیت5 : یک : ابتدا بیت LSB ارسال میشه  ___ صفر : ابتدا بیت MSB ارسال میشه

بیت6 : یک : فعال کردن SPI ___ صفر : غیر فعال کردن SPI

بیت7 : فعال شدن وقفه SPI (البته به شرط فعال بودن وقفه همگانی) >>> با یک شدن بیت SPIF واقع در ریجستر SPSR

 

ریجستر SPSR

 آموزش ساده avr

 

 

بیت 0 :  با یک کردن این بیت>>فرکانس SCK در MASTER دو برابر میشه.

بیت 1تا5 :  رزرو شده(یعنی شما نمیتونید از این بیت ها استفاده کنید و باید بجاشون صفر قرار بدید.)

بیت 6 :  اگه در حین انقال دیتا در ریجستر SPDR ، دیتای جدیدی نوشته بشه>>این بیت یک میشه.

بیت 7 :  زمانی که دیتا به طور کامل ارسال شود >> این بیت یک میشه.

 

ریجستر SPDR

 آموزش ساده avr

 

 

خواندن و نوشتن دیتا توسط این ریجستر انجام میشود.

 

توجه توجه : عمل دریافت فرستادن اطلاعات(تو کد نویسی منظورمه)با تابع زیر صورت میگیره :

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 4


آموزش تایمر به صورت پروژه محور

این تقریبا پروژه مربوط به جلسه 3 لینک بالا هستش که من یه کم ویرایشش کردم و…

کار این پروژه اینه که هر 20ms یه led رو روشن خاموش میکنه.>>>led به PORTB.0 وصل هستش.

1) فرکانس کاری میکرو 8MHZ هستش.

2) فرکانس کاری تایمر/کانتر : ما تقسیم فرکانسی 256 رو براتایمر/کانتر انتخاب میکنیم.>>>لذا 8 مگا هرتز(فرکانس کل) رو بر 256 تقسیم میکنیم و عدد حاصل فرکانس کاری تایمر/کانتر هستش.

3) به دست ابردن تعداد کلاک مورد نیاز برای تولید زمان مورد نیاز ما : >>>>زمان مورد نیازمون رو بر فرکانس تایمر/کانتر تقسیم میکنیم(یا زمان مورد نیازمون رو بر دوره تناوبتایمر/کانتر ضرب میکنیم)>>>و بعد مقدار به دست اومده رو منهای 1 میکنیم>>>و بعد عدد رو رند میکنیم.>>>عدد حاصل در این پروژه تقریبا میشه 249 تا کلاک.

توجه : تایمر/کانتر 0  هشت بیتی فقط میتونه از 0 تا 255 تا کلاک رو بره.


تایمر/کانتر در کدویزارد نرم افزار کدویژن

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

1) انتخاب Timer0

2) Clock Source : انتخاب منبع فرکانسی…>>>>ما فرکانس کاری میکرو رو انتخاب کردیم.

3) Clock Value : فرکانس کاری تایمر هستش>>>با فرض این که تقسیم فرکانسی 256 هستش و فرکانس کاری میکرو 8 مگا هرتز هستش.

4) Mode : انتخاب مد نرمال. (جلسات بعد در مورد بقیه مد ها پروژه هایی رو میزارد انشاالله)

5) Output : گفتم که خروجی تغییر نکنه (منظور PORTB.0 یا همون T0 در میکروکنترلر هستش)

6) Overflow Interrupt : وقفه سر ریز رو فعال کردم>>>>یعنی هر موقع به کلاک 255 رسیدیم >>>وقفه رخ میده.

اگه در مورد وقفه چیزی نمیدونید مطلب مقابل رو بخونید : آموزش جامع میکروکنترلر AVR جلسه۳

 

تایمر/کانتر در کدویزارد نرم افزار کدویژن

 

 

پروژه 1 >>>مد نرمال>>>تقسیم فرکانسی 256>>خروجی تغییر نمیکند>>>فرکانس کل میکرو 8 MHZ

تولید 1 ثانیه واقعی با تایمر

توضیح پروژه : تو کد به میکرو میگم هر موقع تایمر/کانتر 125 بار به کلاک 255 رسید(شمارش کلاک ها از 7 آغاز میشود) شما! led رو اگه خاموشه  روشن کن و اگه روشنه خاموشش کن.تو این پروژه led هر 1 ثانیه روشن میشه(البته اگه خاموش باشه و اگه خاموش باشه روشن میشه)

 

اینم از مدار پروژه

آموزش جامع میکروکنترلر AVR جلسه25

 

اینم از کد های پروژه

 پروژه 2 >>>مد نرمال>>>تقسیم فرکانسی 256>>خروجی تغییر نمیکند>>>فرکانس کل میکرو 8 MHZ

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 5


اگه در کدویژن روی دکمه ی زیر ( Chip Programmer ) کلیک کنید.

Untitled-2

 

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

11111111111

 


 

در زیر میخوام به ترتیب شماره ای که در عکس بالا گزاشتم….تمام مواردش رو توضیح بدم.
(توضیح اون 16 تا مورد که تو عکس بالا داخل اون مستطیل آبی میبینید)

 

توجه : فیوزبیت ها با 1 غیر فعال و با 0 فعال میشوند.

 

1) فیوز بیت های CKDEL2 ، CKDEL1 ، CKDEL0

عمل کرد : با این 4 تا فیوز بیت ما فرکانس کاری میکرو رو تعیین میکنیم…..که هر چی عدد بزرگتری رو انتخاب کنید ….پروژتون سریع تر عمل میکنه.

توجه1 : 

  • فرکانس پایین : فرکانس کمتر از 3 مگاهرتز
  • فرکانس متوسط : بین 3 الی 8 مگاهرتز
  • فرکانس بالا :   و 8 الی 16 (ویا 20 )

توجه 2 : مقدار فرکانس پیش فرض 1Mhz میباشد.(در حالتی که فیوز بیت ها رو تغییر ندید ، مقدار فرکانس پیش فرض 1Mhz هستش)

به نظر من : بهتره که رو 8Mhz تنظیم کنید.

منبع فرکانس و اندازش CKDEL3..0
1Mhz – داخلی 0001
2Mhz – داخلی 0010
4Mhz – داخلی 0011
8Mhz – داخلی 0100

 

2) فیوز بیت های STU0 , STU1

 عملکرد : زمان شروع به کار میکروکنترلر بعد از اتصال به منبع تغزیه.تو حالت پیشفرض SUT0 فعال و STU1 غیر فعال هستش.

به نظر من : بهتره که تو حالت عادی دست بهش نزنید و بزارید رو حالت پیش فرض بمونه

Delay SUT1..0 CKSEL0
4.1ms 00 0
65ms 01 0
10 0
4.1ms 11 0
65ms 00 1
01 1
4.1ms 10 1
65ms 11 1

 

3) فیوز بیت BDEN و BODLEVEL

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

به طور پیش فرض فیوز بیت BDEN فعال و BODLEVEL غیر فعال هستش.

عملکرد BODLEVEL BODEN
اگه VCC کمتر از 4v بشه ، میکرو ریست میشه 0 0
غیر فعال 1 1
اگه VCC کمتر از 2.7v بشه ، میکرو ریست میشه 1 0

 

4) فیوز بیت BOOTRST

این فیوز بیت برا انتخاب بردار RESET هستش.تو حالت عادی اگه میکروکنترلر AVR ریست بشه بردار RESET از 0X0000 شروع میشه (زمانی که این فیوز بیت غیر فعال هستش) ولی اگه این فیوز بیت رو فعال کنیم بردار RESET از جایی شروع میشه که توسط 2 فیوز بیت BOOTSZ1 و BOOTSZ0 تعیین کردیم.(یعنی اگه زمانی میکرو ریست شد ؛ بردار ریست از 0X0000 دیگه شروع نمیشه و مثلا از 0X00FF شروع میشه.)>>>>اگه نفهمیدید بگید تا بیشتر توضیح بدم.

 

5) فیوز بیت BOOTSZ1 و BOOTSZ0

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

توضیح : این فیوز بیت میزان حافظه اختصاص داده شده به BOOT رو تعیین میکنند.

Boot Loader چیست

  • در بعضی میکرو کنترلر ها قابلیت پروگرام حافظه فلش توسط هسته خود میکرو وجود دارد.
  • این  قابلیت برای تولید کنندگانی که Firmware تولیدات خود را Update می کنند بسیار کار آمد است.
  • برای اطلاعات بیشتر جدول Boot Size Configuration را در دیتاشیت چیپ مورد نظر مطالعه کنید.

(تو حالت عادی هر دو فیوز بیت فعال هستند…یعنی هر دو صفر هستن)

(×_×) اینم از جدول مقدار دهی این دو فیوز بیت.

 میکروکنترلر avr

6) فیوز بیت EESAVE

وقتی میکرو رو اطلاعاتش رو پاک میکنی هم اطلاعات توی FLASH پاک میشه و هم اطلاعات روی EEPROM

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

(تو حالت عادی این فیوز بیت غیر فعال هستش)

 

7) فیوز بیت CKOPT

با فعال شدن این فیوزبیت مقدار توان مصرفی افزایش یافته ولی در عوض سطح نوسان توسط آمپلی فایر افزایش می یابد و باعث بهبود عملکرد در محیط نویزی خواهد شد.(در حالت پیش فرض این  فیوز بیت غیر فعال هستش)

 آموزش avr

 

8) فیوز بیت JTAGEN

این فیوز بیت به طور پیش فرض فعال هستش و پایه های PC2 تا PC5 غیر فعال هستند (MEGA16) و نمیتونید ازشون به عنوان ورودی/خروجی (I/O) استفاده کنید.

این فیوز بیت برا پروگرام کردن میکرو در حالت JTAG هستن.

لذا اگه میخواین از PORTC در پروژتون استفاده کنید ، حتما این فیوز بیت رو غیر فعال کنید.

 

9) فیوز بیت OCDEN

لپ کلوم : این فیوز بیت برا پیدا کردن عین برنامه به صورت آنلاین هستش.

اگه JTAGEN فعال باشه برنامه میکرو هم قفل نشده باشه ، با فعال کردن این فیوز بیت میشه پروژه مون رو به صورت آنلاین از طریق نرم افزار AVR STDIO مشاهده کرد.

 

در شکل زیر قسمت فیوز بیت ها (مستطیل آبی رنگ) رو توضیح دادم و بقیه قسمت هاش هم بمونه برا بعد (الان حسش نیست که بگم. ×_×)

تنظیمات کدوِیژن

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 6


انواع تایمر/کانتر در avr

تو avr و تو میکرو کنترلر مگا ۱۶ ما ۳ تا تایمر کانتر داریم که به اولی میگن “تایمر/کانتر ۸ بیتی صفر” و به دومی میگن “تایمر کانتر ۱۶ بیتی ۱” و به سومی میگن “تایمر کانتر ۸ بیتی ۲”

پس ۲ تا تایمر/کانتر ۸ بیتی داریم و یه دونه ۱۶ بیتی…… 

آموزش کار با DAC یا همون PWM در AVR

همون طور که تو عکس زیر میبینید تو  میکروکنترلر avr  یه ۴ تا پایه هستش که میشه به عنوان پایه های pwm  یا همون DAC  ازشون استفاده کرد…..مثلا اگه از تایمر کانتر ۸ بیتی ۰ یا ۲ استفاده کنید فقط یه پایه برای این کار وجود داره(هر تایمر یه دونه پایه) ولی تو تایمر/کانتر ۱۶ بیتی ۱ دو پایه به برای این کار وجود داره….که ما تو کنترل سرعت موتور مخصوصا برا ساخت ربات ها که معمولا به ۲ موتور و ۲ چرخ برا رباتشون نیاز دارن میان و از تایمر/کانتر ۱۶ بیتی ۱ استفاده میکنن تا سرعت ۲ تا موتور رو کنترل کنن….لذا دیگه از تایمر ۰ یا ۲ استفاده نمیکنن….

آموزش کار با PWM در AVR

 

توجه ۱ : تایمر کانتر ۰ و ۲ هشت بیتی هستن و تایمر/کانتر ۱ شانزده بیتی هستش.

توجه ۲ : تو حالت ۸ بیت ماکزیمم مقدار۰XFF  هستش که یعنی ۲۵۶ و تو حالت ۱۶ بیت ماکزیمم مقدار ۰XFFFF هستش که یعنی ۶۵۵۳۶ ولی باید توجه کرد که چون شمارش کلاک (و کلا شمارش هر چیزی تو AVR ) از صفر شروع میشه و نه یک ، لذا تو حالت ۸ بیت ماکزیمم مقدار ۲۵۵ هستش و تو حالت ۱۶ بیت ماکزیمم مقدار ۶۵۵۳۵ هستش.

منابع کلاک میکرو

همون طور که تو عکس زیر میبینید(تمام عکس ها از دیتاشیت مگا ۱۶ گرفته شده است) ما ۵ تا منبع کلاک برا میکرو داریم که در زیر مشاهده میکنید و در ادامه هر ۵ تا مورد زیر رو تقریبا کامل توضیح میدم.

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

مورد ۲ و ۳ زیاد کاربرد ندارن، مورد ۴ هم تامین کننده کلاک داخلی میکرو هستش و نیازی به استفاده از کریستال خارجی در این حالت نیست، اگه میخواین از کریستال خارجی استفاده نکنید این گزینه مناسب شماس.

مورد ۵ هم کاربرد های خاص خودشو داره و هر جایی استفاده نمیشه ازش.

منابع کلاک میکرو

توجه ۱ : این مطلب بر اساس مگا ۱۶ هستش، اگه اشتب نکنم برا مگا ۸ و مگا ۳۲ هم همین طوره، ولی این که برا میکرو های دیگه مثلا سری ATINY یا سری XMEGA یا همین سری MEGA مدل های دیگه اش!!! منابع کلاکش به همین صورته یا نه و این که فیوز بیتاش همینا هستن یا نه و این که شاید فرقایی داشته باشن یا نه و… رو من دقیقا نمیدونم.
  ولی اگه شما با غیر از این ۳ تا میکرو(مگا۸-۱۶-۳۲) میخواین کار کنید برا اطمینان میتونید دیتاشیت میکرو مورد نظرتون رو یه کوچولو نگاه کنید ببینید جدول مدولاش مثل همین مطلب(مثل مگا۱۶) هستش یا نه.

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

آموزش AVR

 

 

کلاک پیشفرض میکرو ( Default Clock Source )

کلاک پیشفرض میکرو ۱MHz اسیلاتور داخلی RC هستش که با تنظیم فیوز بیت ها به صورت “CKSEL = “0001”  و  “SUT = “10 حاصل میشه، این دو تا فیوز بیت تو حالت عادی همین مقدار رو دارن، مگه این که تغییرشون بدید.(وقتی میکروی جدیدی همون نو ایی میخرید این کلاک رو داره)

توجه : طولانی ترین زمان راه اندازی میکرو مربوط به این کلاکه (طبق گفته دیتاشیت مگا ۱۶ و فهم من!!!)

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 7


۱) کریستال خارجی ( External Crystal/Ceramic Resonator )

نحوه اتصال کریستال خارجی به میکرو : مثل شکل زیر کریستال رو وصل کنید به میکرو.

اتصال کریستال خارجی به میکرو

توجه ۱ : خازن های C1 و C2 باید با هم برابر باشند و مقدار این خازن ها تو جدول زیر اومده.

توجه ۲ : توی این حالت وقتی فیوز بیت CKOPT فعال میشه، دامنه نوسانات افزایش پیدا میکنه و میشه کلاک خارجی بیشتری به میکرو اعمال کرد(با فعال بودن این فیوز بت تا سقف ۱۶MHz و با غیر فعال بودنش تا سقف ۸MHz)، وقتی CKOPT فعال باشه توان مصرفی افزایش پیدا میکنه و بیشتر بدرد محیط های صنعتی (که محیط پر نویزی هستش) میخوره.

 

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

منابع کلاک میکرو

توجه ۳ : همون تور که در ته عکس میبینید، برا سطر اول باید از Ceramic Resonators به جای Crystals استفاده کرد، یعنی اگه بخواین فرکانس بین ۰٫۹ – ۰٫۴ به میکرو اعمال کنید باید از Ceramic Resonators به جای کریستال استفاده کنید، در ضمن تو این مورد نیازی به استفاده از خازن نیست(اون طوری که من از جدول فهمیدم، چون مقداری برا این حالت برا خازن ها ذکر نکرده.)

توجه ۴ : تو سطر آخر میتونیم فرکانس های بین ۱MHz تا ۱۶MHz به میکرو اعمال کنیم(همون طور که در نکات بالا گفتم اگه فیوز بیت CKOPT فعال باشه میشه تا ماگزیمم فرکانس ۱۶ میگ هم به میکرو داد) و مقدار CKOPT = 0 (فیوز بیت ها با صفر فعال و با ۱ غیر فعال میشن) و CKSEL3..1 هم یکی از مقادیر ۱۰۱, ۱۱۰, ۱۱۱ رو میتونه بگیره(که فرق نداره کدومش رو به این ۳ تا فیوز بیت بدید.)

توجه ۵ : اگه توجه کنید تو جدول بالا خبری از CKSEL0 نیست، چون تو جدول زیر به همراه SUT1..0 برا تعیین start-up times (زمان راه اندازی) مورد استفاده قرار گرفته.

 

خوب تو جدول زیر ما start-up times رو تعیین میکنیم،

  1. و اینم بگم(به نقل از یکی از دوستان) که منظور از CK همون کلاک هستش، مثلا تو سط اول نوشته ۲۵۸CK که یعنی ۲۵۸ تا کلاک که این تعداد کلاک از نظر زمان چقدر طول میکشه بستگی به فرکاس میکرو داره؛
  2. و اون جایی که نوشته BOD enabled یعنی همون فیوزبیت BODEN (کارش اینه که اگه ولتاژ تغزیه میکرو از حدی پایین تر اومد میکرو رو ریست کن) که تو مطلب جلسه ۱۰ دربارش گفتم؛
  3. power-down و power-save هم به ترتیب حالت ولتاژ پایین و حالت ذخیره انرژی، که ستون سوم زمان راه اندازی میکرو رو وقتی که میکرو تو یکی از این دو حالت فوق باشه رو نشون میده.

اتصال کریستال خارجی به میکرو

  1. این گزینه باید تنها زمانی استفاده شود که “عمل نکردن” نزدیک ماکزیمم فرکانس دستگاه و تنها اگه ثبات فرکانسی در هنگام راه اندازی Avr مهم نیست برا برنامه، این گزینه برا crystals مناسب نیست.
  2. این گزینه برا استفاده از ceramic resonators در نظر گرفته شده و ثبات فرکانسی در هنگام شروع رو تضمین میکنه، آنها همچنین میتونن مورد استفاده قرار بگیرن با crystals وقتی که “عمل نکردن” نزدیک ماکزیمم فرکانس دستگاه و اگه ثبات فرکانسی در هنگام راه اندازی Avr مهم نیست برا برنامه.

 

 

۲) کریستال خارجی فرکانس پایین ( Low frequency Crystal Oscillator )

وقتی بخواین با میکرو یه ساعت بسازید میتونید از کریستال ۳۲٫۷۶۸kHz به عنوان منبع کلاک میکرو استفاده کنید و برا این کار باید فیوز بیت CKSEL3..0 رو برابر ۱۰۰۱ قرار بدید؛ نحوه اتصال این کریستال به میکرو همانند شکل بالا هستش(اولین عکس بعد از تیتر “کریستال خارجی”)

جدول زیر هم مربوط به تعیین start-up times هستش، مقدار ۱۱ برا SUT1..0 رزو شده(Reserved) هستش و نمیشه این مقدار رو به این ریجستر داد که این مورد در سطر آخر نمایش داده شده.

آموزش AVR

نکته : اون Note زیر عکس(عکس بالا) میگه : این این گزینه ها تنها باید زمانی استفاده بشن که ثبات فرکانسی در شروع کار(در هنگام راه اندازی) میکرو مهم نیست برا برنامه.

 

۳) اسیلاتور RC خارجی ( External RC Oscillator )

  1. فرکانس تولیدی توسط فرمول مقابل محاسبه میشه : (f = 1/(3RC
  2. مقدار خازن C باید حداقل ۲۲pF باشد.
  3. با فعال کردن فیوز بیت CKOPT یه خازن داخلی به مقدار ۳۶pF بین پایه های XTAL1 و GND فعال میشه، لذا دیگه نیازی به قرار دادن خازن خارجی(C در مدار زیر) نیست.
  4. تو این حالت محدوده فرکانس بین ۱۰۰kHz الی ۱۲MHz هستش.

نحوه پیکربندی RC خارجی و اتصال به میکرو رو در شکل زیر میبینید(منظور از NC یعنی به جایی وصل نیست)

اسیلاتور RC خارجی

 

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

اسیلاتور RC خارجی

 

نحوه تعیین Start-up Times برا این منبع کلاک رو هم تو جدول زیر مشاهده میکنیید :

آموزش AVR

 

۴) اسلاتور RC کالیبره شده داخلی ( Calibrated Internal RC Oscillator )

این منبع کلاک، فرکانس های ۱، ۲، ۴ و ۸ مگا هرتز رو تولید میکنه.(این فرکانس ها در ولتاژ ۵ ولت و دمای ۲۵ درجه سانتی گراد هستش.)

اگه این مورد انتخاب بشه دیگه نباید به پایه های XTAL1 و XTAL2 چیزی وصل کرد.

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

نحوه انتخاب فرکانس و تنظیم فیوز بیت CKSEL3..0 و تنظیم Start-up Times تو ۲ جدول زیر مشاهده میکنید :

اسلاتور RC کالیبره شده داخلی

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

 

۵) کلاک خارجی ( External Clock )

این حالات زمانی رخ میدهد که به فیوز بیت CKSEL مقدار ۰۰۰۰ داده شود.

این منبع کلاک توسط تایمر میکروی دیگه ای یا مثلا آی سی ۵۵۵ و… میتونه تامین بشه.

با فعال کردن فیوز بیت CKOPT یه خازن داخلی با مقدار ۳۶pF بین پایه های XTAL1 و GND فعال میشه.

نحوه اتصال کلاک خارجی به میکرو به صورت زیر است.

کلاک خارجی

در جدول زیر هم زمان راه اندازی رو مشاهده میکنید :

کلاک خارجی میکرو

در زیر نرم افزار ای سی ۵۵۵ رو میزارم براتون، که همون طور که تو عکس زیر میبینید میشه D.C (دیوتی سایکل، Duty Cycle >>>> لپ کلوم : تعیین میزان یک و صفر بودن موج) مورد نظر رو انتخاب کرد و فرکانس رو داد و مدار و خازن و مقاومت مورد نظر رو دریافت کرد و مدار تولید کلاک با آی سی ۵۵۵ رو ساخت.

نرم افزار ای سی 555

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی

آموزش AVR جلسه 8

محاسبه فرکانس و D.C در مد FAST PWM

خب رسیدیم به بحث جالبی، تو دیتاشیت مگا ۱۶ برا محاسبه فرکانس تایمر تو مد FAST PWM مثل این که دو تا فرمول دارم، یکی برا تایمر ۱۶ بیتی(تایمر۱) و یه فرمول هم برا تایمر های ۸ بیتی(تایمر ۰ و ۲)، حالا این که چرا دو تا فرمول دارم و نه یه دونه و این که از کجا اومدن این فرمول ها، در ادامه میخوام دربارش صحبت کنیم.

محاسبه فرکانس در مد FAST PWM

تو تایمر ۰ و ۲، تو مد FAST PWM تایمر از BOTTOM (همون ۰) میشموره تا MAX (همون ۲۵۶) و بعد دوباره مقدار تایمر ۰ شده و از BOTTOM میشموره ….

و تو این شمارش هر موقع مقدار تایمر (TCNTn) با مقدار ریجستر های مقایسه (OCRn) برابر بشه، پایه مقایسه ای(OCn) تغییر حلت داده(البته اگه روی toggle تنظیمش کرده باشین.) و تایمر به شمارش خودش ادامه میده و…


فرمول محاسبه فرکانس در PWM

تو بالا یه فرمولی(عکس) گزاشتم که در زیر هم میبینیدش، حالا میخوام نحوه محاسبه این فرمول رو بگم و این که این فرمول از کجا اومده و…

محاسبه فرکانس در مد FAST PWM

۰ نظر موافقین ۰ مخالفین ۰
محمد کرمی