در اين بخش مي‌توانيد آموزش و مثال‌های مرتبط با میکروکنترلرهای AVR را مشاهده بفرمایید
Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

آموزش AVR (آموزش های آقای مهدی مهدوی)

توسط Mahdi Mahdavi » پنج شنبه 20 تیر 1392 13:02

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

Update 1:
کتاب پیشنهادی : "آموزش کاربردی میکرو کنترلر های AVR (به زبان های C و #C ) "
موسسه فرهنگی هنری دیباگران تهران    
مولفان : مهندس سجاد ابراهیمی . مهندس محمد عادلی نیا

چندین کتاب در این ضمینه رو دیدم. یکی از بهتریناش این بود .برای شروع خیلی خوب و عالیه. کتابای دیگه هم هست .
من دارم با این کتاب پیش میرم "و یک کتاب دیگه که به وقتش معرفی میشه"
اگر تهیه کنید خیلی کامل تر از این تاپیک توضیح داده.
میکرو پروسسور چیست؟
میکرو پروسسور به قطعه ای گفته میشه که وظیفه پروسه کردن و محاسبات رو بر عهده داره . نمونه بارز و ساده اون CPU کامپیوتر هست .
میکرو کنترلر چیست؟
میکرو کنترلر یک مدار مجتمع یا یک چیپ هست که شامل تمام قطعات یک کامپیوتره و قابل برنامه نویسی هم هست. این قطعه شامل RAM - ROM - CPU - I/O - RTC , EEROM و ... هست که تمام اینها توضیح داده میشه .
اما کاربرد میکرو کنترلر چیه؟ فرض کنید یک جایی قصد کنترل یک عمل " نه خیلی پیچیده" رو دارید . و فقط هم 5 ولت تغذیه در اختیار دارید. "در صنعت زیاد با این موارد برخورد میکنیم"
در اینجا استفاده از رایانه منطقی نیست. چون هم جاگیره هم پر مصرف و هم گران
بهترین راه در اینجا استفاده از میکرو کنترلر هاست.
میکرو کنترلر ها در ساعت های دیجیتال . روبات های کارخانجات و روبات های دانشجویی . گوشی تلفن همراه و ... استفاده میشه
AVR  یکی از انواع میکرو کنترلر ها هست و ATmega32 یکی از پر مصرف ترین و به صرفه ترین مدل این میکرو کنترلر.

ادامه دارد ...
ناگهان چقدر زود دیر میشود !

5 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
demorgan, jhan2010, Solver, aliavr, abbas.m.k, MISSILE, sinaset, Mahdi1944, arcopal, mohammad area51, Present, Erratic, CAPTAIN PILOT, electro_officer, MASTER, oweiys, ASHKAN95, Ali.s.Es, R.A.F

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » پنج شنبه 20 تیر 1392 22:44

Update 1
قسمت دوم :
قطعاتی که لازم داریم در طول پروژه "به همراه قیمت های حدودی":
یک عدد میکرو کنترلر ATmega32A "در اواسط آموزش به دو عدد نیاز خواهیم داشت"   10.000 تومان
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
بورد آزمایشگاهی Bread Board " بورد سوراخ سوراخ که برای بستن موقتی مدار بکار میره "  8000 تومان
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
یک منبع تغذیه 5 ولت

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

استپ موتور  5000 تومان
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
سنسور دما   LM35 و 7-Segment ."هر کدام حدود 700 تومان"
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد    لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد     

char LCD 2*16  حدود 11000 تومان "با تشکر از  sinaset,    عزیز . قیمت اصلاح شد "
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
درایو یا راه انداز استپ موتور  500 تومان " با تشکر از  sinaset,   عزیز قیمت اصلاح شد "
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

بازر یا بلندگوی کوچک
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
مقداری سیم استخوانی برای بستن مدار روی برد آزمایشگاهی
تعدادی LED

َاشنایی با زیان C "در خلال آموزش AVR روی این مبحث هم کار میکنیم"

در کل برای شروع به حدود 100.000 تومان نیاز داریم "برای خرید کل قطعات بالا"

با همین وسایل میتونیم خیلی جلو بریم. "برای مثال به LCD اواسط کار نیاز داریم"


برنامه نویسی AVR  به زبان ها Basic - C# - C++ , C معمولا انجام میشه که ما به علت سهولت و انعطاف بیشتر با C اینکار رو انجام میدیم.
در دو سه قسمت بعدی پایه و اساس AVR و مفاهیم اون مثل پورت و ... توضیح داده میشه و انشاالله بعد از اون با کار عملی ادامه میدیم.
فایل پروژه های آموزش هم در اموزش بعدی هر پروژه قرار خواهد گرفت.
ادامه دارد ...
ناگهان چقدر زود دیر میشود !

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
aliavr, Mahdi1944, ramin-am, Present, sinaset, CAPTAIN PILOT, electro_officer, Ali.s.Es, Erratic, ASHKAN95, mohammad area51, MISSILE, sam2sanat, arcopal, Solver, hamidreza710, jhan2010, MASTER

Colonel II

Colonel II



نماد کاربر
پست ها

6610

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

Re: آموزش AVR

توسط sinaset » جمعه 21 تیر 1392 11:26

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

مهدی جان قیمتی هایی که قید کردید ، به نظرتون کمی بالا نیستن ؟ مثلا درایو uln2803 قیمتش 500 تومانه اما ذکر کردید 1500 یا lcd قیمتش (سبز رنگ ) 11.000 تومانه اما ذکر کردید 15.000 تومان. و...

باتشکر از شما :razz:
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

3 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب sinaset تشکر کرده اند:
ASHKAN95, demorgan, mohammad area51, aliavr, Mahdi Mahdavi, Present, MISSILE, MASTER

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » شنبه 22 تیر 1392 23:13

sinaset,   عزیز . سپاس  :razz:
بله . قیمت ها در بازار کمی پایین تره . " البته قیمت درایو استپ موتور رو اشتباه نوشتم.همون 500 تومانه" ولی مثلا LCD 2*16 در بازار از 11.000 تومان دیدم به بالا و یا مثلا بورد آزمایشگاهی از 7000 داریم تا 9000 تومان.
بستگی به فروشنده داره "و همچنین مدل برخی قطعات"
برا همین دست بالای قیمت ها رو نوشتم.
برای مثال پروگرامر از 25000 داریم تا 50.000 به بالا.
از تذکرتون بسیار ممنونم  :razz:

پورت :
پورت به مجموعه خطوط سیگنالی گفته میشه که داده ها به اون ارسال میشه یا از اون دریافت میشه.
اهمیت پورت ها در برنامه نویسی میکرو کنترلر ها نمود پیدا میکنه. این که مثلا در پورت موازی کدام پایه وظیفه ارسال و دریافت اطلاعات رو دارند.کدام پایه ها زمین هستند و ...
سه نوع پورتی که با مبحث AVR بیشتر مرتبطه شامل : پورت موازی . پورت سریال و پورت USB هست.
برای مثال pinout یا نقشه پین های خروجی پورت موازی و سریال رو در عکس های زیر مشاهده میکند.
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد     لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

علت تاکید روی تهیه پروگرامر اینه که متصل کردن میکروکنترلر به پورت ها علاوه بر سختی که داره از امنیت و سرعت پایین تری هم برخورداره. در صورتی که پروگرامر های USB سرعت . سهولت و امنیت بیشتری داره.
با این حال در پروژه های عملی طریقه ساخت یک پروگرامر ساده رو آموزش خواهیم داد.

*  isp :

isp که مخفف In System Programming به معنی برنامه ریزی داخل سیستمی است.
در این حالت نیازی نیست میکرو کنترلر رو از روی برد برداریم و روی پروگرامر بزاریم.بلکه با متصل کردن یک کانکتور روی برد آزمایشگاهی و یا برد چاپی "به پایه های مخصوص روی میکرو" میشه اون رو برنامه ریزی کرد.
این نوع پروگرامر اصولا همراه پروگرامرهای موجود در بازار ارائه میشه و اگر این قابلیت رو داشته باشه با عنوان isp روی کارتن و یا کاتالوگ محصول مشخص شده.
ساختن این نوع پروگرامر رو در ادامه خواهیم داشت.


انواع میکرو کنترلر های AVR :
میکرو کنترلر های AVR به چند دسته یا خانواده دسته بندی میشن. مثل  Mega . AT90S . Tiny
دسته Mega با توجه به قیمت و امکانات به صرفه ترین خانواده هست " البته نه همیشه . در برخی کاربرد ها شاید دو خانواده دیگه بهتر عمل کنند "
برای مثال میکرو کنترلر ATMega32 دارای 32 کیلوبایت حافظه داخلی قابل برنامه ریزی . 1024 بایت حافظه EEPROM . مقدار 2 کیلوبایت حافظه داخلی . رنج ولتاژ 4.5 تا 5.5 ولت  و ...
" در کنار ATMega32 یک مدل دیگه معرفی شده با نام ATMega32A . مشخصات این دو پردازنده دقیقا شبیه به هم هستند ولی آدرس دهی حافظه این دو مدل کمی متفاوته. ممکنه برخی برنامه های ATMega32 روی ATMega32A به خوبی جواب نده. در بازار هم بیشتر ATMega32A  پیدا میشه . همون رو تهیه کنید. "
میکرو های AVR بر پایه معماری RISC "Reduced Instruction Set Computer " بنا شده . به معنی دستور العمل های کاهش یافته هستند که باعث افزایش سرعت پردازنده خواهد شد.
در قسمت بعدی به معرفی بخش ها و پایه های میکرو کنترلر ATMEGA32A خواهیم پرداخت و معرفی بخشی از اجزا و قابلیت های اون.
ناگهان چقدر زود دیر میشود !

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
sam2sanat, MISSILE, aliavr, Present, Solver, MASTER, mohammad area51, ASHKAN95, Mahdi1944, Ali.s.Es, sinaset, Erratic, CAPTAIN PILOT

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » يکشنبه 23 تیر 1392 12:04

ادامه:
واحد های درونی:
CPU: واحد پردازشگر مرکزی میکرو کنترلر . وظیفه رمزگشایی و اجرا برنامه موجود در حافظه رو بر عهده داره

حافظه برنامه: حافظه ای که برنامه در داخلش ذخیره میشه و از نوع غیر فرار . یعنی با قطع برق اطلاعات داخل حافظه پاک نمیشه . اگر برنامه حجمی بیشتراز حافظه داخلی میکرو داشته باشه میشه از حافظه خارجی کمک گرفت. این حافظه از انواع ROM . EEPROM . Flash  و ... میباشد.

RAM: حافظه موقتی میکرو .به عنوان یک پشته یا Stack برای CPU عمل میکنه. این حافظه از نوع فرار هست و با قطع برق اطلاعاتش پاک میشه.

Clock Osilator: میکرو کنترلر اجرا و محاسبه یک برنامه رو با نرخ خاصی انجام میده. این نرخ رو یک کریستال تامین میکنه و یا توسط RC-Osilator خود میکرو کنترلر تامین میشه.

Serial Port: پورتی در میکرو کنترلر که بسیار مفیده. از این پورت میشه جهت اتصال اون به کامپیوتر و یا اتصال دو یا چند میکرو به هم دیگه استفاده کرد.

ِDigital I/O Port : پورت ورودی خروجی دیجیتال. برای تبادل اطلاعات میکرو با دنیای پیرامون .

Analog I/O Port: مانند قبل ولی با کمی تفاوت.برای اتصال مثلا PC به میکرو کنترلر چون هر دو از کمیت دیجیتال استفاه میکنند پس از پورت ورودی خروجی دیجیتال استفاده میکنند. ولی کمیت های آنالوگ بسیاری داریم برای معرفی به میکرو کنترلر. مثل سنسور ها و هر قطعه ای که ولتاژ آنالوگ تولید کنه.در این صورت از واحد ADC یا مقایسه کننده آنالوگ دیجیتال استفاده میکنیم.
واحد دیگری در این رابطه PWM که در حقیقت خروجی آنالوگ هست که مثلا در کنترلر موتور ها LED و ... استفاده میشه.

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


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

RTC: Real Time Clock تایمری برای نگهداری زمان و تاریخ و رویداد های زمانی

میکرو کنترلر های ATMEGA32A دارای دو نوع PDIP و TQFP/MLF که ما از نوع PDIP استفاده میکنیم. چون قابلیت استفاده روی برد آزمایشگاهی داره.
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
تا حدودی میشه گفت که اجزا داخلی میکرو به این صورت به هم مرتبط هستند:
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

و شماتیک اجزا داخلی هم به این صورته:
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

زبان C :
در برنامه نویسی زبان C که یک زبان شی گراست ابتدا باید کتابخانه های لازم برای دستورات را فراخوانی کنیم. برخی دستورات در کتابخانه Mega32 برخی در stdio.h و مثلا درستورات کنترل LCD در کتابخانه lcd.h هستند.
برای فراخوانی این کتابخانه ها از دستور <>include# استفاده میکنیم.
مثلا
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
ناگهان چقدر زود دیر میشود !

3 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
aliavr, MASTER, ASHKAN95, CAPTAIN PILOT, Ali.s.Es, sinaset, Erratic, MISSILE, demorgan, Solver, sam2sanat, Present

Colonel II

Colonel II



نماد کاربر
پست ها

6610

تشکر کرده: 1670 مرتبه
تشکر شده: 8142 مرتبه
تاريخ عضويت

سه شنبه 26 آذر 1387 16:20

آرشيو سپاس: 11653 مرتبه در 2024 پست

Re: آموزش AVR

توسط sinaset » چهارشنبه 26 تیر 1392 09:31

سلام اقا مهدی .

پسر خوب چند روزی تاپیک رو بروز نمی کنی ، چرا ؟ ادامه بدید لطفا ، :razz:

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

باتشکر از شما  :D  :razz:
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب sinaset تشکر کرده اند:
MASTER, ASHKAN95, CAPTAIN PILOT, Erratic, Present, demorgan, Mahdi Mahdavi, sam2sanat, Solver, aliavr, MISSILE

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » جمعه 28 تیر 1392 02:11

sinaset,  عزیز :razz:
راستش فکر نمیکردم کسی پیگیر این تاپیک باشه ! خوشحال شدم !!! این دو سه روزه درگیر کارای دانشگاه بودم برا همین زمان نشد پست بزارم. ممنونم
و اما ادامه کار . برای شروع کار ما فعلا پروگرامر آماده و LCD رو نیاز نداریم . که پروگرامر اگر باشه که چه بهتر.
میتونید پروگرامر STK 200/300 رو با قیمت خیلی مناسب تهیه کنید یا خودتون بسازید.
میکرو کنترلر های ATmega32 دارای چهار دسته پورت هستند که میتوان از اونها به عنوان پورت ورودی . خروجی استفاده کرد . و هر پایه کاربرد دیگه هم داره.مثلا پورت A علاوه بر پورت ورودی و خروجی وظیفه تبدیل ADC یا آنالوگ به دیجیتال رو هم داره.
به پایه های 6 تا 11 دقت کنید. برای ساخت پروگرامر لازمه
علت اینکه یکی از پایه های پورت D تک افتاده اونطرف هم بحث طراحی پردازنده هست و چاره دیگه ای نبود !  :grin:

پایه های 9 تا 13 هم مربوط به تغذیه و ریست و ... هست که توضیح میدم.
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

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

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

پس بهتره پروگرامر رو تهیه کنید و یا STK 200/300 رو خودمون بسازیم. "مدار دومی:
برای ساختش به این موارد احتیاج داریم:
یک عدد آی سی 74HC244 که یک تراشه بافری هست و از گم شدن یا از دست رفتن داده ها حین پروگرام جلوگیری میکنه.
یک مقاومت 100K
یک عدد پین هدر "برای سوار کردن LCD روی بورد حتما لازمه . کلا لازمه. بخرید."
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
دو عدد رگولاتور 5 ولت " کلا چیز خوبیه . برا صاف کردن برق و جلوگیری از صدمه به میکرو"
و برای راحتی کار یک عدد سوکت برا ATmega32 . اینطوری سیم ها رو به پایه های مربوط روی سوکت لحیم میکنید و پروگرام کردن خیلی ساده و لذت بخش میشه. میتونید سوکت ساده لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  و یا انواع قفل دار رو تهیه کنید. لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
و مقداری سیم.
و تهیه یک کابل مادگی به مادگی پورت موازی یا همون کانکتور پورت پرینتر " که برای هر بار پروگرام نخواد برید پشت کیس"
در کل خرید این پروگرامر ساده تره. این آموزش هم جنبه عملی داره هم آموزشی.
خودم به زودی پروگرامر رو میسازم و عکسش رو قرار میدم.
ناگهان چقدر زود دیر میشود !

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
Solver, MASTER, MISSILE, ASHKAN95, CAPTAIN PILOT, Erratic, dezchilds, sam2sanat, sinaset, aliavr, Present

Captain

Captain



no avatar
پست ها

2756

تشکر کرده: 1573 مرتبه
تشکر شده: 334 مرتبه
تاريخ عضويت

چهارشنبه 18 بهمن 1385 12:46

محل سکونت

شیراز

آرشيو سپاس: 6007 مرتبه در 1644 پست

Re: آموزش AVR

توسط Present » جمعه 28 تیر 1392 11:07

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

mahdi.Mb55 از این پست سپاسگزاري کرده است

کاربران زیر از شما کاربر محترم جناب Present تشکر کرده اند:
sam2sanat, aliavr, MISSILE, Mahdi Mahdavi, sinaset, MASTER, demorgan

Colonel II

Colonel II



نماد کاربر
پست ها

3475

تشکر کرده: 286 مرتبه
تشکر شده: 466 مرتبه
تاريخ عضويت

جمعه 20 اردیبهشت 1387 08:44

آرشيو سپاس: 13553 مرتبه در 2799 پست

Re: آموزش AVR

توسط Solver » جمعه 28 تیر 1392 12:14

Mahdi Mahdavi,  ما به موجب توصیه خودتان ساکت ماندیم.

دنبال می کنیم و می خوانیم گاهی هر پست را در چند مرحله تا یاد بگیریم، باور ندارید بعدا امتحان بگیرید
[ Never is Never an Answer ||| Personal Site:  لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد  ]

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Solver تشکر کرده اند:
MASTER, ASHKAN95, sinaset, Erratic, CAPTAIN PILOT, demorgan, Present, sam2sanat, MISSILE, aliavr, Mahdi Mahdavi

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » جمعه 28 تیر 1392 18:49

سلام بر همه دوستان و ممنون بابت این همه اظهار لطف   :razz:
Present,  عزیز . از هر گونه ایده و کمک استقبال میشه شدید ! خیلی ممنونم
M.Abooali,  عزیز. خواهش میکنم. :D  اصلا فراموش کرده بودم تاپیک جدید رو ایجاد کنم. شک داشتم که طرح سوال در همین تاپیک نتیجه بهتری میده یا در تاپیک جداگانه؟
به هر حال تاپیک جدید ایجاد شد .متشکرم.
avr-t108335.html
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
ناگهان چقدر زود دیر میشود !

2 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
ASHKAN95, Ali.s.Es, CAPTAIN PILOT, Erratic, Solver, demorgan, MISSILE, sam2sanat, sinaset, aliavr, MASTER

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » يکشنبه 30 تیر 1392 15:45

نرم افزار
برای برنامه نویسی میکروکنترلر از کد ویژن استفاده میکنیم که لینک دانلودش رو پایین مشاهده میکنید.
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
برای پروگرام هم اگر پروگرامر تهیه کنید معمولا یک سی دی حاوی نرم افزار پروگرامر همراهش هست. اگر پروگرامر USB  خریداری کنید میتونید از  progisp استفاده کنید که پروگرامر بسیار خوبی هست.و با پروگرامر های ISP یا  In System Programming که قبلا توضیح دادیم و پروگرامر های USB سازگاری داره.

مزیت Codevision اینه که اولا بسیار از کدهای لازم رو خودش تولید میکنه. کد هایی که در رابطه با تنظیمات میکرو هست. مثل وضعیت واحد ADC . وضعیت و تنظیمات تایمر ها و ... .در بخشی که Code Vision Wizard نام داره تنظیمات رو در یک رابط کاربری بسیار ساده وارد میکنیم و کد های لازم توسط کد ویژن تولید میشه.
همچنین این نرم افزار فایل Hex که برای پروگرام کردن لازمه رو خود به خود تولید میکنه."فایلی که برای پروگرام کردن در پروگرامر ها Add یا Load میکنیم"
از مزیت های دیگه این کامپایلر میشه به دیباگ کردن و رفع عیب نام برد.تنظیمات و شخصی سازی های گسترده.کم حجم و ...
نسخه قبلی کد ویژن یک سری باگ کوچیک داشت و از میکرو های جدید مثل ATMega32A پشتیبانی نمیکرد.که این مشکلات در این نسخه رفع شده.


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

در اکثر مواقع ما به حلقه ها و جملات شرطی زبان C در برنامه نویسی میکرو ها نیاز داریم. پس پیشنهاد میشه این دو بخش رو یا از اینترنت و یا از کتاب های آموزش C مطالعه کنید. مبحث بسیار راحتیه.
while - for - if - switch -
زبان C مختصر :
توضیحات نویسنده برنامه در زبان C پس از // و یا بین   /*          */  قرار میگیره. این توضیحات هیچ تاثیری در برنامه نداره و فقط جهت سهولت در اشکال زدایی برنامه استفاده میشه.
حلقه ها در برنامه نویسی بسیار پر کاربرد هستند.
برای مثال برای برنامه نویسی یک ساعت ، چشمک زن ، استپ موتور ، روبات ها و ... از حلقه ها به وفور استفاده میشه.
دو تا از پرکاربرد ترین حلقه ها حلقه های while , for هستند که عملکردی شبیه هم دارند:
while:
در این حلقه ابتدا یک شرط برای ورود به حلقه در نظر میگیریم . تا جایی که شرط برقرار باشه اون حلقه ادامه پیدا میکنه.مثلا قطعه برنامه زیر اعداد یک تا ده رو یک بار چاپ میکنه:


کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


در برنامه بالا :
شرط داخل پرانتز ()while عنوان میکنه تا موقعی که i مساوی 10 نشده این عمل رو تکرار کن.
یعنی++i  یکی به i اضافه کن
مقدار i رو که از نوع ده دهی یا decimal "%d" هست چاپ کن
دوباره به شرط داخل پرانتر رو چک کن. اگر شرط درست بود دوباره دستورات حلقه رو تکرار کن. در غیر این صورت برنامه متوقف میشه
اگر شرط داخل while برابر یک بود (1)while  این حلقه بینهایت نام داشت و بی نهایت بار تکرار میشد.
در پست بعدی با همین دستور یک چشمک زن یک لامپی میسازیم


کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


ادامه دارد...
ناگهان چقدر زود دیر میشود !

3 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
Present, Erratic, CAPTAIN PILOT, demorgan, ASHKAN95, sinaset, MISSILE, Solver

Super Moderator

Super Moderator



نماد کاربر
پست ها

1343

تشکر کرده: 2 مرتبه
تشکر شده: 77 مرتبه
تاريخ عضويت

شنبه 7 مهر 1386 12:02

آرشيو سپاس: 5132 مرتبه در 948 پست

Re: آموزش AVR

توسط Mahdi Mahdavi » سه شنبه 1 مرداد 1392 13:03

کار با پورت ها 1 . "کار عملی . چشمک زن تک لامپی"
کار با پورت ها و مدیریت اونها یکی از کاربردی ترین عملیات با میکرو کنترلرهاست و کار ساده ای هم هست.
هر پورت "پورت های A , B , C . D " شامل 8 پایه هست که از 0 تا 7 نامگذاری میشن.مثلا پورت A "PORTA.0 , PORTRA.1 , ... PORTA.7"
سیستم دوتایی :
در سیستم دوتایی ما 8 بیت داریم که میتونه مقدار 0 یا 1 رو بگیره . و مقادیر این بیت ها توانی از 2 هست.
در زیر یک سیستم دو دویی رو به همراه مثالی برای اون آوردیم.
با جمع بیت های یک مقدار اون عدد در سیستم ده تایی یا Decimal بدست میاد
1    2    4    8    16    32    64   128
0    1    0    0     0     0      0      0      برابر عدد 2
1    0    0    1     0     0      0      0       برابر عدد 9  "مقادیر بیت های 1 و 8 یک شده. و 1+8=9 "
0    0    0    0     1     0      1      0       برابر با عدد 80
0    0    0    0     0     0      0      0       برابر عدد 0
1    1    1    1     1     1      1      1       برابر عدد 255

دو متد و روش ساده و مرسوم کار با پورت ها به این صورته:

1 -  هر پورت رو جداگانه دستور بدیم که راحت تر ولی زمان بر تر هست.برای مثال
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

در این دستورات چهار پایه اول پورت A را یک کردیم و چهارتای بعدی رو 0

حالا اگر این هشت تا پایه رو به عنوان 8 بیت سیستم دو دویی در نظر بگیریم به این صورت میشه
1    2    4    8    16    32    64   128

1    1    1    1    0      0      0     0
میبینیم که چهار پایه یا همون چهار بیت اول یک و چهار بیت بعدی صفر هست.
پس میشه دستور بالا رو در یک خط خلاصه کنیم:
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

این روش در کنترل استپ موتور کاربرد فراوانی داره."که در پروژه عملی اون کاملا توضیح میدیم.
حالا ما برای کنترل یک لامپ LED برای سیستم چشمک زن میتونیم از  این کد استفاده کنیم.
ابتدا کد ویژن رو باز میکنم.
New>Project
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

با این کار یک پروژه جدید رو شروع میکنیم. بعد باید خانواده میکرویی که باهاش کار میکنیم مشخص کنیم. در اینجا چون ATmega هست گزینه اول رو انتخاب میکنم.
پنجره Codevision wizard باز میشه.اینجا همونجایی هست که پارامتر های خودمون رو وارد میکنیم و کدویژن کد های لازم رو خودش تولید میکنه.
تنها کاری که اینجا باید بکنید انتخاب نوع میکرو "ATmega32A" و تبدیل پورت A به خروجی " در بخش port "
بعد از منوی program گزینه generate , save and exit رو میزنیم. در این مرحله باید کد ها و فایل های برنامه رو ذخیره کنیم.
"چون هر پروژه مشتمل بر چندین فایل هست پیشنهاد میشه برای هر پوژه فولدری ایجاد کنید و فایل ها رو داخل اون فولدر با هر نامی که دسوست دارید save کنید. برای مثال  میتونید برای این کار عملی فولدری با نام LED1 بسازید و فایل ها رو با نام LED داخل اون ذخیره کنید"
چهار دسته فایل باید ذخیره کنید.بعد از این کار کدها تولید میشن.

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد     لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
در آخر این کد ها یک حلقه while هست که کدها و دستورات رو داخل اون مینویسیم.
"دستورات و آموزش پروژه اول و شماتیک اون بصورت مختصر توضیح داده میشه و فایل های برنامه "و در صورت لزوم عکسی از پروژه انجام شده" در پست بعدی :
ما در حلقه (1)while آخر کد ها باید پورتی که LED به اون متصله روشن و خاموش کنیم تا یک چشمک زن داشته باشیم.همونطور که گفتیم حلقه while با شرط (1) یک حلقه بینهایته و این چشمک زن بی نهایت بار تکرار میشه

در ابتدای برنامه و قبل از دستور (void main(void باید کتابخانه های مورد نظر رو معرفی کنیم.در اینجا چون دستور تاخیر رو لازم داریم پس کتابخانه اون رو باید فراخوانی کنیم. با دستور
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

بعد داخل حلقه while میریم و پایه یک پورت A رو خاموش و روشن میکنیم.به این صورت میشه
کد: انتخاب همه
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 

 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
پس از نوشتن برنامه با این سه دکمه کار داریم. دکمه سمت چپ برنامه رو کامپایل میکنه تا در صورتی که اشکالی در برنامه نویسی هست اون رو توضیح بده تا اقدام به رفع اون مشکل کنیم.
اگر مشکلی نداشت نیاز به ساختن فایل hex برای پروگرام کردن میکرو داریم. با زدن دکمه وسط این اتفاق می افته و فایل مورد نظر در فولدر exe در فولدر پروژه که save کردید ساخته میشه.
حالا کافیه این فایل رو روی میکرو فلش بزنیم.
برنامه Progisp رو باز میکنیم .نوع پروگرامر رو انتخاب میکنم. نوع میکرو کنترلر رو هم انتخاب میکنیم و فایل hex رو هم از طریق load flash  باز میکنیم
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 
با زدن گزینه های erase chip  ,program  flash  با هربار زدن دکمه Auto اعمال پاک کردن چیپ و فلش کردن اتوماتیک انجام میشه .
توجه کنید:
در بخشی که در عکس بالا پررنگ تر مشخص شده کلیک کنید.
دقت کنید که مقدار SPIEN حتما 0 باشه. فلش کردن Fuse bit ها بدون آگاهی ممکنه باعث سوختن میکرو کنترلر بشه و دیگه قابل استفاده نباشه.
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


چون در اینجا فقط با یک پایه کار داریم این روش ساده تر از استفاده از روش دو دوییه.
شماتیک این مدار هم به این صورته" نرم افزار شماتیک بهتری فعلا در دسترس نیست.به زودی شماتیک های بهتری در دسترس قرار میگیره"
 لينکها براي کاربران مهمان قابل دسترسي نيست، براي مشاهده ي لينکها لطفا ثبت نام کرده و وارد شويد 


بعد از اینکه پروگرامر ISP رو خودم ساختم آموزش پروگرام از طریق خود codevision رو هم توضیح میدم.
ناگهان چقدر زود دیر میشود !

4 کاربر از این پست سپاسگزاري کرده اند

کاربران زیر از شما کاربر محترم جناب Mahdi Mahdavi تشکر کرده اند:
sinaset, CAPTAIN PILOT, Erratic, MISSILE, Solver

بعدي

 


  • موضوعات مشابه
    پاسخ ها
    بازديدها
    آخرين پست

چه کسي حاضر است ؟

کاربران حاضر در اين انجمن: بدون كاربران آنلاين و 1 مهمان