avr

ROBOTICS

کاربر فعال مهندسی رباتیک
حافظه بخش خيلي مهم از يك سيستم ميكرو كامپيوتري است. ما مي توانيم بر اساس به كارگيري حافظه، آن را به دو گروه دسته بندي كنيم: حافظه برنامه و حافظه داده . حافظه برنامه ، تمام كد برنامه را ذخيره مي كند. اين حافظه معمولاً از نوع حافظه فقط خواندني (ROM) مي باشد. انواع ديگري از حافظه ها نظير EPROM و حافظه هاي فلش EEPROM براي كاربردهايي كه حجم توليد پاييني دارند و همچنين هنگام پياده سازي برنامه به كار مي روند . حافظه داده از نوع حافظه خواندن / نوشتن (RAM) مي باشد . در كاربردهاي پيچيده كه به حجم بالايي از حافظه RAM نياز داريم ، امكان اضافه كردن تراشه هاي حافظه بيروني به اغلب ميكرو كنترلر ها وجود دارد.

درگاهها ورودي / خروجي (I/O )به سيگنال هاي ديجيتال بيروني امكان مي دهند كه با ميكرو كنترلر ارتباط پيدا كند. درگاههاي I/O معمولاً به صورت گروههاي 8 بيتي دسته بندي مي شوند و به هر گروه نيز نام خاصي اطلاق مي شود. به عنوان مثال ، ميكروكنترلر 8051 داراي 4 درگاه ورودي / خروجي 8 بيت مي باشد كه P3, P2, P1, P0 ناميده مي شوند. در تعدادي از ميكرو كنترلر ها ، جهت خطوط درگاه I/O قابل برنامه ريزي مي باشد. لذا بيت هاي مختلف يك درگاه را مي توان به صورت ورودي يا خروجي برنامه ريزي نمود. در برخي ديگر از ميكروكنترلرها (از جمله ميكروكنترلرهاي 8051) درگاههاي I/O به صورت دو طرفه مي باشند. هر خط از درگاه I/O اين گونه ميكرو كنترلرها را مي توان به صورت ورودي و يا خروجي مورد استفاده قرار داد . معمولاً ، اين گونه خطوط خروجي ، به همراه مقاومتهاي بالا كش بيروني به كار برده مي شوند.

ميکرو کنترلر AVR به منظور اجراي دستورالعملهاي قدرتمند در يک سيکل کلاک(ساعت) به اندازه کافي سريع است و مي تواند براي شما آزادي عملي را که احتياج داريد به منظور بهينه سازي توان مصرفي فراهم کند.

ميکروکنترلر AVR بر مبناي معماري RISC(کاهش مجموعه ي دستورالعملهاي کامپيوتر) پايه گذاري شده و مجموعه اي از دستورالعملها را که با 32 ثبات کار ميکنند ترکيب مي کند.

به کارگرفتن حافظه از نوع Flash که AVR ها به طور يکسان از آن بهره مي برند از جمله مزاياي آنها است.

يک ميکرو AVR مي تواند با استفاده از يک منبع تغذيه 2.7 تا 5.5 ولتي از طريق شش پين ساده در عرض چند ثانيه برنامه ريزي شود يا Program شود.

ميکروهاي AVR در هرجا که باشند با 1.8 ولت تا 5.5 ولت تغذيه مي شوند البته با انواع توان پايين (Low Power)که موجودند.

راه حلهايي که AVR پيش پاي شما مي گذارد، براي يافتن نيازهاي شما مناسب است:

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

ROBOTICS

کاربر فعال مهندسی رباتیک
avr

* قابليت دوباره برنامه ريزي کردن بدون احتياج به اجزاي خارجي
* 128 بايت کوچک که به صورت فلش سکتور بندي شده اند
* داشتن مقدار متغير در سايز بلوکه ي بوت (Boot Block)
* خواندن به هنگام نوشتن
* بسيار آسان براي استفاده
* کاهش يافتن زمان برنامه ريزي
* کنترل کردن برنامه ريزي به صورت سخت افزاري

راههاي مختلف براي عمل برنامه ريزي:

موازي يا Parallel :

* يکي از سريعترين روشهاي برنامه ريزي
* سازگار با برنامه نويس هاي(programmers) اصلي



خود برنامه ريزي توسط هر اتصال فيزيکي:

* برنامه ريزي توسط هر نوع واسطه اي از قبيل TWI و SPI و غيره
* دارا بودن امنيت صد درصد در بروزرساني و کدکردن



ISP:

* واسطه سه سيمي محلي براي بروزرساني سريع
* آسان و موثر در استفاده



واسطه JTAG :

* واسطه اي که تسليم قانون IEEE 1149.1 است و مي تواند به صورت NVM برنامه ريزي کند يعني هنگام قطع جريان برق داده ها از بين نروند.استفاده از فيوزها و بيتهاي قفل.
* بيشتر براي ديباگ کردن آنچيپ و به منظور تست استفاده مي شود


مقايسه avr با 8051
مقايسه ما با تمام ميکروهاي 8 بيتي هست يعني در مجموع ميشه گفت AVR يه رقيب قدرتمند براي بقيه ميکروهاي قوي است و يه انقلاب بزرگ هم به شمار ميره. هنوز هيچ ميکرويي به سرعت بالاي AVR در محاسبات دست پيدانکرده .در ضمن AVR قادره که محاسبات 16 بيتي رو هم انجام بده. شهار ATMEL هم اينکه شما پول يه ميکرو 8 بيتي رو ميديد ولي ميتونيد از قايليتهاي يک ميکرو 16 بيتي استفاده کنيد.
AVR از معماري RISC با تعداد دستورالعمل بالا بهره ميبره که دربين ميکروها کم نظير هست. اکثر دستورالعمل هاي آن باوجود زياد بودن تعداد دستورالعملها در يک سيکل انجام ميشه.
اين ميکرو از مدهاي کاهش توان به خوبي بهره برده و تاييد کننده آن زياد بودن مدهاي کاهش توان آن و استفاده از تقسيم کلاک به صورت نرم افزاري است که در کمتر ميکرويي ديده ميشه.
AVR حتي برعکس ميکروهاي ديگه هيچ تقسيم کلاکي انجام نميده(مثلا 8051 کلاک رو بر 12 و PIC که يه ميکرو قدرتمند هست کلاک رو بر 4 تقسيم ميکنه). اين امر که AVR کلاک رو تقسيم نميکنه موجب کاهش مصرف انژي و افزايش MIPS شده.

تکنولوژي بکار رفته در AVR موجب شده که حتي ميتوان از آن در محيط هاي صنعتي و پر نويز براحتي از آن استفاده کرد(به گفته خود ATMEL والا هنوز خودم يه تست دقيق انجام ندادم ولي اون رو با يه فيبر يه رو و با يه کابل LCD تقريبا 20 سانتي و يا استفاده از باتري ماشين در کنار شمع پيکان غير انژکتوري تست کردم ولي فقط در فاصله تقريبا 5-6 سانتي از اون صفحه LCD قاتي ميکرد ولي نميدونم ميکرو هم ريست ميشد يا نه .در ضمن قسمت تغذيه فقط از يک 7805 تشکيل شده بود. و اين آزمايش هم براي خودم و هم براي چند تا از دوستانم که کارهاي صنعتي انجام ميدادن شگفت آور بود). اما به دليل اينکه هنوز هيچ کسي اون رو تابه حال در محيط صنعتي تست نکرده و به دليل اطمينان بالاي PIC هيچ کسي دوست نداره اعتبار خودش رو به خطر بندازه.
يه جا يه مهندسه ميگفت توي يه محط صنعتي که حتي کامپيوتر ريست ميکرده PIC به خوبي کار خودشو انجام ميداده!!!!!!!!!!

در ضمن AVR مجهز به آخرين امکانات مثل تايمر واچ داگ و برون اوت ديتکتور و مبدل هاي ADC و PWM است.
يکي از مهمترين بخشي که کمتر در هر ميکرويي ديده ميشه مقايسه کننده آنالوگ با گين 1 و 10 و 200 و .. است که بسته به ميکرو فرق ميکنه.
اين مقايسه کننده ميتونه تو ورودي مبدل ADC قرار بگيره . اين بخش براي بعضي طراحان خيلي مهمه و اونا رو مجذوب خودش کرده.


خانواده ميکروکنترلرهاي AVR شامل طيف گسترده اي از آي سي ها است که از 8 پايه شروع و به 64 پايه ختم مي شود. اما در بين اين طيف گسترده تعدادي استفاده عمومي تري دارند مانند ATMEGA32 . که در تمام مثالهاي آورده شده از اين آي سي استفاده شده است
برنامه اي که براي ميکروکنترلر در کامپيوتر نوشته ميشود وقتي که براي استفاده در آي سي ريخته ميشود ( توسط پروگرامر مخصوص آن خانواده ) در مکاني از آن آي سي ذخيره خواهد شد بنام ROM . حال در ATMEGA32 مقدار اين حافظه به 32KB ( 32 کيلوبايت ) ميرسد .
در اين آي سي مکاني براي ذخيره موقت اطلاعات يا همان RAM هم وجود دارد که مقدارش 2KB است .
در RAM اطلاعات فقط تا زماني که انرژي الکتريکي موجود باشد خواهد ماند و با قطع باتري اطلاعات از دست خواهند رفت . به همين منظور در ATMEGA32 مکاني براي ذخيره اطلاعات وجود دارد که با قطع انرژي از دست نخواهند رفت . به اين نوع حافظه ها EEPROM گفته ميشود که در اين آي سي مقدارش 1KB است و تا 100,000 بار ميتواند پر و خالي شود .
 

ROBOTICS

کاربر فعال مهندسی رباتیک
avr

نرم افزار
نرم افزار مورد نياز براي برنامه نويسي :
حال ميخواهيم طرز نوشتن برنامه براي ميکروکنترلرهاي خانواده ي AVR را شروع کنيم . پس براي اينکار نياز به يک نرم افزار داريم که بتوانيم در آن برنامه ي خود را بنويسيم . يکي از نرم افزارهاي قدرتمند براي انجام دادن اينکار نرم افزاريسيت بنام Bascom AVR . در اين نرم افزار همانطور که از نامش معلوم است برنامه بايد بزبان Basic که زباني با سطح بالا (HLL) است نوشته شود . همچنين اين نرم افزار داراي شبيه ساز داخلي براي تست کردن برنامه نوشته شده است که يکي از ويژگيهاي اين نرم افزار ميباشد .

تحليل برنامه

حال به توضيح تک به تک قسمتها ميپردازيم :

1:در قسمت معرفي آي سي از کلمه کليدي $Regfile براي معرفي استفاده شده است . اين دستور به اين صورت است که بايد بعد ازآن کلمه معرف آي سي مورد استفاده را در جلوي آن وارد کنيم . البته براي هر آي سي کلمه ي مخصوصي وجود دارد که براي ATMEGA32 بايد کلمه ي M32def.dat را تايپ کرد . البته بايد توجه داشت که اين کلمه بايد داخل يک جفت کوتيشن ( گ Shift ) قرار گيرد :
$Regfile = "M32def.dat"

2: در قسمت بعدي که تعيين فرکانس کاري است کلمه کليدي $Crystal بايد نوشته شود و آنرا بايد مساوي با فرکانس کار بر حسب هرتز قرار داد :
$Crystal = 1000000

3: حال به بخش معرفي سخت افزار رسيديم . در اين برنامه چون پورت B بايد بتواند جريان بيرون دهد و سخت افزار خارجي اي که همان LED است را روشن کند بعنوان خروجي تعريف ميشود . هميشه براي معرفي سخت افزار از کلمه کليدي Config اسفاده ميشود . پس براي خروجي کردن پورت B مينويسيم :
Config Portb = output

4: چون در اين برنامه نيازي به تعريف متغيري نبود به بخش برنامه اصلي ميرويم و در اين قسمت عددي را به پورت B خواهيم فرستاد تا طبق آن LED ها روشن شوند . البته ذکر اين نکته لازم است که اگر بخواهيم عددي را در مبناي دودويي بنويسيم ابتدا بايد &B را نوشته و بعد ععد مورد نظر را تايپ کنيم و همينطور براي نوشتن در مبناي هگز که &H تايپ ميشود و اگر هيچکدام از کلمات ذکر شده را ننويسيم عدد در مبناي دسيمال محسوب ميشود .

5: در آخر برنامه نيز از کلمه کليدي END براي مشخص نمودن پايان برنامه استفاده شده است .

LCD :
در کل دو نوع LCD وجود دارد . يکي از آنها را LCD کارکتري گويند که فقط قابليت نمايش حروف و اعداد و کارکترهايي همچون ؟ و ! و غيره را دارد و نوع ديگر LCD گرافيکي است که قابليتهاي LCD گرافيکي بعلاوه ي نمايش تصوير در آن جمع شده اند . هدف ما در اينجا کار با LCD کارکتري خواهد بود .

معرفي LCD کارکتري :
LCD هاي کارکتري خود به چند نوع ديگر از لحاظ اندازه تقسيم بندي ميشوند . که از LCD هايي با 1 سطر و 1 ستون آغاز ميشوند تا اندازهايي مثل 4 سطر و 40 ستون که البته تمام آنها از 16پايه تشکيل شده اند.


براي راه اندازي LCD توسط AVR نيازي به دانستن جزئيات طرز کار LCD نيست . براي کار با LCD علاوه بر پايه هاي تغذيه و CONTRAST ( تنظيم روشنايي ) که بايد مانند شکل مداري پايين باياس شوند نياز به 6 پايه ي ديگر است که عبارتند از پايه هاي :
RS , E , DB4 , DB5 , DB6 , DB7 .

تحليل برنامه :

1:براي تعيين نوع LCD از کلمات کليدي Config و بعد از آن Lcd استفاده شده و آنها را مساوي نوع LCD مورد استفاده قرار ميدهيم که در اينجا نوع مورد استفاده داراي 2 سطر و 16 ستون ميباشد. پس بصورت زير خواهيم نوشت :
Config Lcd = 16*2

2: در مرحله ي بعد ترتيب وصل کردن پايه ها را معرفي خواهيم کرد و براي اينکار پايه هايي از LCD را که براي راه اندازي آن استفاده ميشود و قبلا نيز گفته شده بود را مساوي پايه هايي از ميکروکنترلر قرار ميدهيم که ميخواهيم به آنها وصل شود و البته اين نوع راه اندازي توسط AVR را که تنها با شش پايه صورت ميگيرد را نوع راه اندازي PIN ميگويند . پس طبق سخت افزار نشان داده شده بصورت زير خواهيم نوشت :
Config Lcdpin = pin , Rs = porta.0 , e = porta.1 , db4 = porta.2 , db5 = porta.3 , db6 = porta.4 , db7 = porta.5
( به علامت , بين بخشها دقت کنيد . )

3: بعد از انجام کارهاي بالا که جزو بخش معرفي سخت افزار محسوب ميشوند به سراغ برنامه اصلي ميرويم که کار آن نمايش متن روي LCD است و براي انجام اينکار از کلمه کليدي LCD و در جلوي آن متني که بايد نمايش داده شود استفاده ميکنيم و بايد توجه داشت که متن را بايد داخل کوتيشن قرار داد .

4: در انتهاي برنامه نيز END را مينويسيم .

نحوه ي کامپايل برنامه و پروگرام کردن IC

کامپايل برنامه نوشته شده :
بعد از نوشتن برنامه بايد آنرا کامپايل کرد تا اگر اشتباهي در تايپ کلمه اي وجود داشته باشد براي اصلاح آن اخطار داده شود و فايلهاي از جمله فايل هگز که براي پروگرام کردن نياز است ابجاد گردند . براي کامپايل برنامه همانطور که در تصوير بخش اول نمايش داده شده است بايد از دکمه ي F7 استفاده کرد . با انجام اينکار برنامه ي ما کامپايل خواهد شد .
پروگرام کردن IC :
بعد از کامپايل برنامه نوبت به آن رسيده است که با نحوه ريختن برنامه داخل IC يا باصطلاح پروگرام کردن آشنا شويد . پس نياز است که يک دستگاه پروگرامر مختص به خانواده AVR داشته باشيد . براي پروگرام کردن ميکروکنترلرهاي خانواده AVR انواع مختلفي پروگرامر که از استانداردهاي خاصي پيروي ميکنند وجود دارد که مصرف عمومي تر را پروگرامهاي نوع STK200/300 دارند که البته داراي مدار بسيار ساده ايست و براي پروگرام کردن از کابل LPT ( پرينتر ) استفاده ميکند و در بازار هم بيشتر اين نوع پروگرامر يافت ميشود .
هنگاميکه ميخواهيم کار پروگرام کردن را شروع کنيم ابتدا بايد پروگرامر را به کامپوتر وصل نموده و بعد از توسط محيطي از نرم افزار Bascom AVR نوع آنرا براي کامپيوتر معرفي کنيم ( اينکار فقط يکبار انجام شود کافيست ) . براي شناساندن پروگرامر به کامپيوتر از منوي Option گزينه Programmer را انتخاب ميکنيم :

بعد از انتخاب اين گزينه کادر نمايش داده شده که در قسمت نمايش داده شده توسط خط قرمز نوع پروگرامر را انتخاب ميکنيم :
بعد از انجام تنظيمات بالا ميتوان آي سي را پروگرام کرد . به اين صورت که
گزينه Program را انتخا ب ميکنيم . بعد از انتخاب اين گزينه کادر زير باز خواهد شد که با کليک روي آيکون مربوط آي سي پروگرام ميشود .
همچنين دستگاههايي براي تست برنامه نوشته شده وجود دارند که روي آنها تمام وسايل مورد نياز مانند LCD و Keypad و ... قرار دارد و کاربرميتواند با سيم بندي اي که براحتي توسط کابلهاي مخصوصي انجام ميدهد پورتهاي آي سي را به سخت افزارهاي جانبي اتصال دهد و برنامه خود را مورد آزمايش قرار دهد . به اين دستگاهها Emulator ميگويند.
 

Similar threads

بالا