میکروکنترلرهای AVR

محمد فرزانه

عضو جدید
من پیشنهاد میکنم در کنار بحث هایی که اینجا میکنیم ، بحثای علمیرو که احسان شروع کرده ، تو یه موضوعات کاربردی تر دیگه هم ادامه بدیم ،
میکروکنترلر AVR چطوره ؟
با اینکه میدونیم همین الان هم اگه به AVR مسلط باشیم ، بازم از بازار و صنعت جهانی عقبیم ، ولی باید در نظر داشته باشیم که بازار ما تازه میکرو AVR رو داره با 8051 عوض میکنه ، اینو اگه از چند تا کارخونه بازدید کنید ، مشاهده میکنید ، و یه دلیل دیگه اینکه ، AVR الان تو دانشگاه ما. مهندس رحمانیان که تدریس میکنه و دکتر جباری ه پروژه درسی AVR داده و آز میکرویی که 8051 تدریس شده و AVR کار میشه
پس حالا که قراره به چند دلیل یه میکرو را انتخاب کنیم و یاد بگیریم ، بهتره سرسری باهاش برخورد نکنیم و یه 15 ، 16 ازش نگیریم و از سرمون ردش کنیم ، بیاین در کنار دانشگاه یه قدم فراتر از دانشگاه کار کنیم
پیشنهاد میکنم هر جا مطلب مفیدی از این میکرو دیدیم اینجا بزاریم بقیه هم استفاده کنند ، به هر حال دوستانی هستند که اینو قبلا کار کردند .سوالاتی که پرسیده بشه برای تسلط دوستانی که قبلا کار کردن می تونه مفید باشه . پس تو این تاپیک به هر ریتمی روی AVR مانور بدیم ، موضوعات دیگه هر کی دوست داره اضاف کنه تا این تالار یواش یواش داد بزنه دانشجوهاش مهندسن ، مهندسایی متفاوت با اونایی که دانشگاه آزاد هر سال یه رقم نجومی ازشون میده بیرون
 

محمد فرزانه

عضو جدید
یه بار که داشتم دنبال پروژه میگشتم ، به طور تصادفی با یه سایتی برخورد کردم که جالب بود ، این سایت حاوی پروژه های زیادی از میکروکنترلر AVR بود که براحتی میشد دانلودشون کرد
http://cappels.org/dproj/Home.htm
 

محمد فرزانه

عضو جدید
کلاسی که تابستون امسال در مورد ابزار دقیق برگزار شد، با چند مورد عملی از ابزار دقیق آشنا شدیم ، ولی اصلا وارد تئوریات نشدیم
، مهندس فروزانتبار یه کلاس ابزار دقیق داره که محاسبات مربوط به ابزار دقیق رو تدریس میکنه ، و اونجا بود که من پی بردم که توجه به هر دو بحث کار عملی و تئوری چقدر میتونه مفید باشه ، برای همین پیشنهاد میکنم که اگه می خواهیم بحث کنیم هر دو مورد را در نظر بگیریم ،
 

محمد فرزانه

عضو جدید
یه متن برای آشنایی ابتدایی با میکرو​
کلمه میکرو به دو منظور استفاده شده منظور اول و مهم سرعت عمل میکروکنترلر است که میتواند تا یک ملیونیوم ثانیه باشد و دستوارتی که به اون میدیم با این سرعت انجام بده به همین خاطر واژه میکرو رو به اون اختصاص دادن البته معنی دوم آن شاید کوچیکی این قطعه باشد که تا یک ملیونیوم متر کوچیک شده شاید باور کردنی نباشه ولی در یک تراشه ممکنه بیش از یک ملیون تراتزیستور به کار رفته باشه. این کلمه وقتی اهمیتش کامل میشه که با واژه کنترلر عجین بشه تا معنیش کامل بشود .

حالا نحوه انجام دادن کار میکروکنترلر را به صورت کلی بررسی میکنیم
:

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

کار میکروکنترلر دقیقا مشابه این است میکرو کنترلر بر مبنای یک سری ورودی که به اون داده میشه مثلا این ورودی از یک سنسور دما باشه که درجه حرارت رو میگه یا از هر چیز دیگه مثل صفحه کلید بر مبنای این ورودی ها و برنامه ای که قبلا ما به اون دادیم خروجیشو تنظیم میکنه که ممکنه خروجیش یک موتور باشه یا یک lcd یا هر چیز دیگری که با الکتریسیته کار بکند. حالت دیگری هم میتونه باشه که فقط میکروکنترلر بر مبنای برنامه ای که به اون دادیم عمل کند و خروجیش رو فقط بر اساس برنامه بگیرد.

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

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

تفاوت میکروپروسسور و میکروکنترلر:

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

آیا میکروکنترلر چیز جدیدی را با خود آورده است ؟

جواب منفی است تمام کارهایی که ما با میکروکنترلر میتوانیم انجام بدهیم با قطعات دیگر هم میتوانیم انجام بدهیم چون ما قبلا هم تایمر داشتیم هم کانتر هم حافظه هم پردازنده و.... در واقع میکروکنترلر قطعه ای است با تمام این امکانات که به صورت یک آی سی آماده شده است و هزینهپیچیدگی و حجم را به نحوه قابل ملاحضه ای کاهش میدهد.

عیب میکروکنترلر:

میکروکنترلر با این همه مزایا که گفتیم دارای یک عیب کوچیک است .و آن سرعت پایین ! است آیا سرعتی معادل یک ملیونیوم ثانیه سرعت کمی است ؟ سرعت کمی نیست ولییک مثال شاید بحثو بهتر باز کند

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

دستوراتی که بهش داده میشه در یک سیکل کلاک انجام میده در صورتی که این سیکل کلاک برای 8051 باید تقسیم بر12شودو برای PIC باید تقسیم بر 4 بنابراین AVR سریعترین میکروکنترلر موجود در بازار است . AVR از زبان های برنامه نویسی سطح بالا یا به اصطلاح (HIGH LEVEL LANGUAGE) HLL پشتیبانی میکند که باعث تولید کدهای بیشتری میشود که در کل برنامه نوشته شده نسبت به برنامه هایی که برای 8051 و PIC نوشته میشود کوتاهتر است. امکانات جانبی این میکروکنترلر بسیار مناسب است و شما را از خرید بعضی لوازم جانبی مانند چیپ های آنالوگ به دیجیتال (ADC) , مقایسه گر آنالوگ و... راحت میکند .در ضمن AVR از بسیاری از استاندارد های ارتباطی مانند SPI,UART,12C,JTAG پشتیبانی میکند که به راحتی میتوان این میکروکنترلر را با میکروکنترلر دیگر یا و سایل دیگر وصل کرد و با وسایل دیگر به راحتی ارتباط برقرار کند. قیمت این میکروکنترلر هم به نسبت امکانات فراوانی که داره بسیار پایین است به طوری که یک میکروکنترلر AVR تقریبا پیشرفته رو با قیمت حول و حوش 2 هزار تومان خرید .


پروگرام میکروکنترلر

شاید تا حالا به نظرتون رسیده باشه که این میکروکنترلر رو چگونه میشه برنامه ریزی کرد تا کار مورد نظرمان را انجام بده در صورتی که یک میکروکنترلر برنامه ریزی نشده هیچ کاری رو نمیتونه انجام بده و هیچ کاربردی نداره در واقع برنامه هر میکرو روح وجانی است که در اون دمیده میشه و اون رو زنده میکنه.

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

البته پروگرامرهای مختلفی در بازار هستنند که متانسب با کاربردشان قیمت های مختلفی دارند بعضی ها فقط چند مدل رو پروگرام میکنند بعضی از پروگرامر ها همه فن حریفند و تمام میکروکنترلر های 8051,AVBR , PIC , رو برنامه ریزی میکنند به طبع قیمت زیادتری دارند.
 

محمد فرزانه

عضو جدید
قسمت اول برگه اطلاعاتی atmega32 که تقریبا تمام خصوصیات میکروکنترلر های avr را داراست



اگر برگه اطلاعاتی atmega32 نوشته شرکت atmel (بزرگترین شرکت تولیکننده میکروکنترلر avr )

رو دیده باشید این مطالب در صفحه اول آن درج شده است :

1- (High-performance, Low-power AVR® 8-bit Microcontroller) :

ترجمه : میکروکنترلر AVR 8 بیتی با کارایی بالا و توان کم

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

2-( Advanced RISC Architecture ) :

ترجمه : دارای طراحی پیشرفته RISC

کلمه RISC ((REDUCED INSTRUCTION SET COMPUTER به معنای طراحی CPU که مجموعه دستورات آن حاوی دستورات سریع و ساده است که نوشتن برنامه را مشکل ولی سریعتر میکند. اما طراحی پیشرفته RISC در میکروکنترلرهای AVR ضمن این که دستورات ساده وسریع هستنند، نوشتن برنامه هم راحت و بدون مشکل است.


3-(131 Powerful Instructions – Most Single-clock Cycle Execution ):

ترجمه : دارای 131 دستور العمل قوی که بیشترشان در یک سیکل کلاک اجرا می شوند. اشاره به همان معماری

RISC دارد که دستورات سریع اجرا میشوند.

یعنی برای ATMEGA32 که دارای سرعت 16 MHZ است. این میکرو میتواند در هر ثانیه تقریبا 16 ملیون دستور را اجرا کند.



4- ( 32*8 GENERAL Purpose Working Registers ) :


ترجمه : با 8*32 ثبات عمومی کار میکند.


5-(Fully Static Operation) :

ترجمه : عملکر کاملا ثابت .


6-(Up to 16 MIPS Throughput at 16 MHz ) :


ترجمه : تا 16 ملیون (MIPS) توان عملیاتی در 16MHZ

چند خط بالا دربارش توضیح داده بودم.

7- (On-chip 2-cycle Multiplier ) :

ترجمه : تقویت کننده 2 سیکل بر روی چیپ.


Nonvolatile Program and Data Memories


حافظه ، برنامه و داده غیر فرار

8- (32K Bytes of In-System Self-Programmable Flash

Endurance: 10,000 Write/Erase Cycles)


ترجمه : 32KB حافظه داخلی FLASH قابل برنامه ریزی . ماندگاری : 10000 بار نوشتن و پاک کردن.


حافظه FLASH نوعی حافظه غیر فرار مشابه EEPROM که با بلاکهای داده کار میکند. حافظه FLASH این میکروکنترلر قابلیت 10000 بار نوشتن و پاک کرن را دارد که برای تمرین و آزمایش بسیار عالیست.

از لحاظ حجم هم 32 کیلو بایت میتواند نیاز های ما را برآورده کند و در بین سایر میکروکنترلر ها به نسبت حجم خوبی است.در واقع شما باید برنامه را در این حافظه بنویسید.

هر BIT شامل یک (0و1) میشود ،هر BYTE ،1024 BIT است و هر KB (KILO BYTE ) 1024

BYTE است.

(هر حرف یک BYTE است.)


9- Optional Boot Code Section with Independent Lock Bits

In-System Programming by On-chip Boot Program

True Read-While-Write Operation


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

اشاره به تعقیر اختیاری فیوز بیت ها دارد که به راحتی میتوانیم این کار را انجام بدهیم.

فیوز بیت : این ها یک سری بیت کلی هستنند که منطق 0 به معنای برنامه ریزی شدن و منطق 1 به معنای برنامه ریزی نشدن بیت است.

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

به فرض مثال اگر فیوز بیت به نام EESAVE برنامه ریزی شود محتویات حافظه EEPROM در زمان پاک کردن میکروکنترلر محفوظ میماند ولی اگر این بیت برنامه ریزی نشود حافظه EEPROM در زمان پاک شدن میکرو پاک میشود.

10- (1024 Bytes EEPROM) :

: ( Endurance: 100,000 Write/Erase Cycles)



ترجمه : 1024 بایت حافظه EEPROM . ماندگاری : 100000 بار نوشتن و پاک کردن.

اکثر مدل های میکروکنترلر AVR دارای حافظه EEPROM داخلی میباشند که یکی از مزیت های خوب این میکروکنترلر هاست . در این حافظه که اطلاعات داخلش تا حدود 100 سال باقی میماند میشود به اکرار (صد هزار بار) نوشت و پاک کرد و میتوانیم اطلاعات زیادی رو در این حافظه قرار بدهیم.

این حافظه را در هنگام اجرای برنامه میتوان نوشت و خواند و بر گرفته از اول کلمات ELECTRICALLY ERASABLE READ ONLY MEMORY است.

11- (2K Byte Internal SRAM) :

ترجمه : 2 کیلو بایت حافظه SRAM داخلی

این نوع از حافظه یک حافظه با دسترسی تصادفی است. مثل حافظه RAM کامپیوتر.


12- ( Programming Lock for Software Security) :

ترجمه : قفل برای برنامه برای ایمنی

JTAG (IEEE std. 1149.1 Compliant) Interface

قابلیت اتصال با پروتکل JTAG تحت استاندارد IEEE

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

13-(Boundary-scan Capabilities According to the JTAG Standard ):

ترجمه : امکان مقایسه برخی از ثبات ها در استاندارد JTAG

14- ( Extensive On-chip Debug Support) :

ترجمه : پشتیبانی چیپ از یک اشکل زدایی گسترده


15-( Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface ) :


ترجمه : برنامه ریزی حافظه های FLASH , EEPROM و FUSES و فیوز بیت ها با پروتکل .JTAG

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

www.arash10501.blogfa.com
 

تازه وارد

عضو جدید
ســـــــــــــــلام

از توضیحاتتون استفاده کردم امیدوارم مبحث رو ادامه بدید..
 

salahshur

عضو جدید
کاربر ممتاز
خیلی غالی محمد جان بزار من پروژه دکتر جباری که انگار ساخت اسیلسکوپ با میکرو بود رو اینجا میذارم این سایت به واقع یکی از قویترین سایت های میکرو هست که اکثر سایت و وب ها پروژه هایی که میزارن با مرجع لینک اون هست
http://www.serasidis.gr/circuits/AVR_oscilloscope/avr_oscilloscope.htm
این سایت هم پروژه های خیلی خوبی داره و هر هفته آپدیت میشه
http://aboutmicrocontroller.blogspot.com/
اما دوستان عزیزی که میخوان در زمینه میکرو های avr کار کنن یه چند تا جا بهشون معرفی میکنم که اگر به مشکلی برخوردن سریعا اونجا رفع میشه یادش بخیر من اواخر دوران تیم رباتیک به اینا میگفتم کمک از جامعه جهانی
http://tech.groups.yahoo.com/group/AVR-Chat/?v=1&t=search&ch=web&pub=groups&sec=group&slk=1
http://tech.groups.yahoo.com/group/avrclub/?v=1&t=search&ch=web&pub=groups&sec=group&slk=2
http://tech.groups.yahoo.com/group/codevisionavr/?v=1&t=search&ch=web&pub=groups&sec=group&slk=3
3گروه بسیار قوی اینترنتی در زمینه avr هستن که هر مشکلی داشته باشید سوال کنید جواب میدن
شادوسربلند باشید
 

محمد فرزانه

عضو جدید
برای کار برنامه نویسی AVR چند تا ابزار باید فراهم بشه
پروگرامر که از عکس زیر به سادگی می تونید درستش کنید و بعد به پورت پرینتر کامپیوتر وصل میشه ، توجه کنید که قسمت انتهایی سیمی که رو برد میکرو نصب میشه با سوکت مخابراتی درست کنید که راحت تو برد بورد قابل استفاده باشه


به این نوع پروگرمر میگن STK 200/300
یه نرم افزار برنامه نویسی و کامپایلر هم نیاز دارید ، تا برنامه ای که می نویسید رو داخل میکرو بسوزونید (سوزاندن اصطلاح است )، و چون همگی تو دانشگاه زبان c خوندیم ، من Codvision را پیشنهاد میکنم چون به کمک زبان c میکروهارو پروگرام میکنه
لینک دانلود نرم افزارورو براتون خواهم گذاشت
 

salahshur

عضو جدید
کاربر ممتاز
ِیه پست قدیمی که بد ندیدم اینجا از دوباره قرارش بدم

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

شاد و سربلند باشید
منبع http://elec-fsr.blogfa.com
__________________
 

mohandes_s

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