به نام خدا
آموزش جامع میکروکنترلر AVR جلسه۱
مطلب جلسه بعد : آموزش جامع میکروکنترلر AVR جلسه۱۲
دوستان میتونن فایل زیر رو دانلود کنن….چند تا کتاب که تو نت هست من یه جا اینجا قرار دادم براتون و بعد از خوندن ان کتاب ها میتونید این سری از مطالبی که من تو سایت گزاشتم و این اولیش هست رو بخونید……این کتاب ها بیشتر یه آموزش مقدماتی هست براتون…..
منابع فایل بالا : picpars.com avr.ir MadareSabz.com plcgoods.net
تفاوت میکرو کنترولر و میکرو پروسسور
از زبون ویکی پدیا :
میکرو کنترولر و میکروپروسسور تقریبا از یک شاخه تکنولوژی وساختار هستند اما در اجزای وابسته ، با هم تفاوت های عمده دارند.
در میکرو پروسسورها فقط واحد پردازش به صورت مجزا به صورت یک ای سی وجود دارد که رم و رام و حتی ثبات ها در ای سی های مجزا به میکروپروسسور وصل و تشکیل یک میکرو کامپیوتر را می دهند
اما در میکرو کنترلر تمام واحد های یک کامپیوتر از جمله رم و رام و ثبات ها در درون یک ای سی به صورت فشرده به نام میکرو کنترولر وجود دارد.مطالعه بیشتر :
از زبون خودم O_o :
میکروپروسسور در واقع یه جور میکرو کنترلر هست با امکانات کمتر (مثلا ژیان در مقابل پژو !) .
تا اونجایی که من میدونم به میکروکنترلر میتونیم برنامه خاصی بنویسیم و بدیم تا اجرا کنه ولی تو میکروپروسسور خود شرکت روش برنامه نویسی میکنه و نه ما.
خـــلـــا صـــه تــفـــاوت هـــا :
میکروکنترلر چیست ؟
میکرو کنترلر یک قطعه الکترونیکی میباشد که قابل برنامه ریزی است و وظایف از قبل تعیین شده توسط برنامه نویس(یعنی من و شما ^_^) را انجام میدهد.
این atmega16 ای که ما همش باهاش کار میکنیم هم یه نوع میکروکنترلر هستش.
انواع میکروکنترلها
۱) میکرو کنترلرهای سری ۸۰۵۱ ساخت شرکت Atmel
۲) میکرو کنترلرهای سری PIC ساخت شرکت Microchip
۳) میکروکنترلرهای سری AVR ساخت شرکت Atmel
انواع میکروکنترلر AVR
۱) خانواده ATTiny AVR
۲) خانواده AT90S
۳) خانواده ATmega AVR>>>>> ما با این نوع کار میکنیم. ^_^
۴) خانواده Xmega AVR
ّمقایسه تمام محصولات Atmel و انتخاب مناسب ترین میکرو کنترلر
برای این کار فایل زیر رو میتونید دانلود کنید.
ساختمان داخلی میکروکنترلر
بطور کلی کلیه میکروکنترلرها دارای ساختمان داخلی با اعضای زیر میباشند :
۱) واحد پردازش مرکزی (CPU)
۲) حافظه موقت خواندنی و نوشتنی (RAM)
۳) حافظه فقط خواندنی (ROM)
۴) پورت های ورودی و خروجی (I/O Ports)
۵) تایمرها و شمارنده ها (Timers and Counter)
۶) کنترلهای وقفه (Interrupt Controls)
۷) مبدل آنالوگ به دیجیتال (ADC)==>>اینو تو جلسه مبدل آنالوگ به دیجیتال توضیح میدم.
۸) مبدل دیجیتال به آنالوگ (DAC)
۹) رابط کاربری سریال (Serial Interface Ports)
۱۰) و ...
۱) CPU
بطور خلاصه وظیفه CPU ها Fetch کردن (خواندن یا گرفتن) و Execute میباشد.
تمامی اطلاعاتی که در میکروکنترلر ذخیره میشود به فرماندهی Clock توسط CPU خوانده شده و آنها را اجرا میکند.
۲ و ۳) انواع حافظه در میکروکنترلر های
الف) Flash
بعد از این که کد های برنامه خودمون رو نوشتیم و توسط کامپایلر ، آن را کامپایل کردیم و به زبان قابل فهم برای میکرو تبدیل کردیم
باید این کد ها که در فایل hex.* ذخیره شدن رو داخل میکرو قرار بدیم که این کد ها در این حافظه قرار میگیرند.
توجه : برای تعریف یه چیز (آرایه-رشته-کاراکتر و...) در این حافظه باید اول آن کلمه flash قرار بدیم.
مثال :
1 |
flash char name[]={'ali','reza','mahdi','ahmad'}; |
ب) EEPROM
این حافظه به عنوان حافظه پایدار(ماندگار) تلقی میشود و نوشتن در آن بصورت ارادی و اختیاری و پاک کردن آن توسط اشعه ماوراء بنفش امکان پذیر است.
اطلاعاتی که در جریان برنامه تولید میشوند ، در صورت نیاز به حفظ آنها میتوان آنها را بر روی حافظه EEPROM ذخیره کرد و با قطع منبع تغذیه اطلاعات حفظ خواهند شد.
(مثلا یه ساعت درست کردی که و میخوای وقتی ساعت رو خاموش روشن کردی دوباره همون ساعت رو نشون بده و شروع به کار کنه ، نه این که ساعت reset بشه و دوباره مجبور باشی زمان ساعتت رو تنظیم کنی.)
توجه : برای تعریف یه چیز (آرایه-رشته-کاراکتر و...) در این حافظه باید اول آن کلمه eeprom قرار بدیم.
مثال :
1 |
eeprom char name[]={'ali','reza','mahdi','ahmad'}; |
ج) SRAM
این حافظه یه نوع حافظه موقت هستش.
با قطع منبع تغذیه ، محتوای این حافظه پاک میشه.
اگر در تعریف متغیری از eeprom و یا flash استفاده نشود ، اون متغیر در این حافظه ذخیره میشه.
۴) (Input/Output (I/O
میکرو توسط این قسمت با دنیای بیرونی خود ارتباط برقرار میکند.(همون پایه های میکرو)
۵) تایمر و شمارنده(کانتر !)
با یه مثال لپ کلوم رو میگیم ! :
تایمر در ساعت برای شمارش و محاسبه زمان به کار میره>>>یعنی در هر ثانیه یه واحد زیاد میشه.
کانتر برای مثال برای شمارش تعداد ماشین های عبوری از خیابان استفاده میشود>>> لذا به اذای عبور هر ماشین یه واحد زیاد میشه.
۶) کنترلر های وقفه
گاهی اوقات لازمه که برنامه جاری رو متوقف و قطع کنیم تا به وسیله تابع وقفه چیزی رو برسی کنیم یا کاری رو انجام بدیم.
۷ و ۸) ADC & DAC
این هم دیگه معلومه ، نیاز به توضیح خاصی نداره ؛ تبدیل سیگنال های آنالوگ و دیجیتال به همدیگه.
انواع میکروکنترلر از لحاظ شکل ظاهری
پکیج DIP : >>>>>>>تو پروتئوس ما با این نوع کار میکنیم.
از جمله ویژگی های اون اینه که :
۱) نسبت به پکیج های مشابه استحکام بیشتری داره.
۲) لحیم کاری آسان
۳) قابلیت جدا کردن آسان و راحت در صورت استفاده از سوکت بر روی برد
۴) قابلیت برنامه ریزی آسان با استفاده از پروگرامر
عیب اصلیش هم اینه که فضای نسبتا زیادی رو روی برد اشغال میکنه !
پکیج SMD :
سطحی کاملا مسطح دارند و ضخامتی میلی متری !
در این پکیج نیز تعداد پایه ها در طرفین مساوی بوده و الزاما هم از چهار طرف پایه ندارند !
ویژگی اصلی اون اینه که فضای بسیار کمی را در مقایسه با پکیج DIP اشغال میکند.(این که دیگه تابلو هستش)
عیوب اصلی هم عبارتند از :
۱) لحیم کاری دشوار
۲) حساسیت بسیار بالا به گرما در لحیم کاری
۳) جداسازی دشوار از روی برد
۴) عدم امکان برنامه ریزی مستقیم از طریق پروگرامر
توجه : البته لازم بذکره که این پکیج ها تنها مختص به میکروکنترلر AVR نمیشوند و اکثر قطعات نیز در پکیج های مختلف ساخته میشوند.
معرفی پایه های میکروکنترلر
پایه های GND به زمین متصل میشوند.
پایه VCC و AVCC به +۵ ولت متصل میشوند .
پایه های PA0-PA7 مربوط به پورت A
پایه های PB0-PB7 مربوط به پورت B
پایه های PC0-PC7 مربوط به پورت C
پایه های PD0-PD7 مربوط به پورت D
پایه های XTAL1 و XTAL2 هم جهت اتصال به کریستال میباشند.
پایه AREF هم جهت استفاده در مقایسه کننده آنالوگ کاربرد دارد.
اینو تو جلسه مبدل آنالوگ به دیجیتال در میکروکنترلرهای AVR توضیح میدم.
ریـــجـــســـتـــرهــا
۱) رجیستر DDRx
این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده ورودی یا خروجی بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت مورد نظر ۰ باشد>>>>>>پین ورودی تعریف میشود.(یعنی اطلاعات میگیره از خارج!!!)
اگر مقدار بیت مورد نظر ۱ باشد>>>>>>پین خروجی تعریف میشود.(یعنی اطلاعات میده!!!)
برای DDRD داریم :
همونطور که ملاحظه میکنید ۸ تا بیت داریم که از شماره های ۰-۷ شماره گذاری شده اند.ترتیب هم از راست به چپه !
برای مثال میخوایم پین سوم از پورت D رو بعنوان ورودی و پین ششم از همین پورت رو بعنوان خروجی تعریف کنیم.باید چه مقادیری رو به پین ها بدیم ؟!
پین سوم یعنی شماره ۲ یعنی DDRD.2 (توجه : شمارش پایه های هر پورت از ۰ شروع میشه)
پین ششم هم یعنی شماره ۵ یعنی DDRS.5
پس مقدار رجیستر DDRD=00100000 میباشد.
۲) رجیستر PORTx
مقدار هریک از بیت های این رجیستر تعیین کننده High یا Low بودن پین متناظر است.
از این رجیستر تنها هنگام نوشتن در پورت استفاده میشود.
توضیح :
فرض کنید که در نظر داریم یه LED رو به یکی از پین های میکرو وصل کنیم و فرمان بدیم که اون LED روشن بشه !
میایم چیکار میکنیم ؟! خوب دقت کنید !
ما با DDRx میگیم که فلان پین (یا پایه یا بیت !!! ) رو یک کن (یعنی خروجی کن—یعنی این پایه باید اطلاعات بفرسته یعنی ....)
حالا باید بگیم که ولتاژ هم اعمال کن که این کار به کمک این ریجستر انجام میشه.
حالا اگه بیت متناظر همون پین رو در رجیستر PORTx برابر مقدار ۱ قرار بدیم،وضعیت اون بیت(پین) به حالت High میرود و ولتاژ به پین مورد نظر وارد میشود.
توجه : این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده High یا Low بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت ۰ باشد>>>>>>وضعیت LOW
اگر مقدار بیت ۱ باشد>>>>>>وضعیت HIGH
برای PORTD داریم :
۳) رجیستر PINx
این رجیستر تعیین کننده وضعیت فیزیکی بیت(پین) مورد نظر برای CPU است.
از این رجیستر تنها هنگام خواندن از پورت استفاده میشود.
اگر پین مورد نظر بعنوان ورودی در نظر گرفته شده باشد،بیت متناظر با آن در رجیسترPINx ،حاوی اطلاعات دریافتی از همان پین مورد نظر در میکرو است.
توضیح : همونطور که گفتم فقط هنگامی که میخوایم از پایه اطلاعات رو بخونیم یا به عبارتی پایه(پین) موردنظرمون رو ورودی تعریف کرده باشیم از این رجیستر استفاده میکنیم.
فرض کنید یه سنسور رو به یکی از پایه های میکرو وصل کرده ایم و این سنسور در شرایط مختلف مقدار ۰ یا ۱ را برمیگرداند.
حتما میدونید که چون سنسور داره اطلاعات رو به سمت میکرو میفرسته و میکرو هم باید اون اطلاعات رو دریافت کنه،در نتیجه پین مورد نظر باید در حالت ورودی تنظیم شده باشه !
اون موقع اگه خواستیم متوجه بشیم که الان سنسور مقدارش ۱ هست یا ۰ میایم و مقدار بیت متناظر در رجیستر PINx رو قرائت میکنیم.
پس :
این رجیستر دارای ۸ بیت است که مقدار هر بیت تعیین کننده High یا Low بودن همان بیت در پورت مورد نظر است.
اگر مقدار بیت ۰ باشد>>>>>>>>وضعیت LOW
اگر مقدار بیت ۱ باشد>>>>>>>>وضعیت HIGH
اما در حالت ورودی منظور از HIGH یا LOW بودن چیست ؟!
(به این زیاد گیر ندید بعدا به حسابش میرسیم ^_^)
اگر بیت مورد نظر در حالت ورودی تنظیم شده باشد و بیت مورد نظر آن در رجیستر PORTx بصورت High تعریف شده باشد،مقاومت پول آپ داخلی فعال میشود.
در صورتیکه بیت مورد نظر در رجیستر PORTx بصورت LOW تعریف شود،پین مورد نظر به صورت Tri-State یا Hi-z در آمده که معنای آن این است که پین موردنظر وضعیت مشخصی ندارد.همانند هنگامی که برای پین هیج مقداری در رجیسترهای DDRx و PORTx و RINx تعریف نکرده باشیم(حالت پیشفرض).
نکته :در صورتی که پین را در حالت پول آپ تنظیم کردید،لازم است که بیت PUD از رجیستر SFIOR را یک کنید.
ابزار مورد نیاز برای کار با میکروکنترلر avr
خیلی خوب ، رسیدیم به بهترین قسمت این مطلب--برا کار با avr باید یک زبان برنامه نویسی و یک نرم افزار شبیه ساز رو انتخاب کنید.
برای برنامه نویسی ۲ راه وجود دارد :
(این نرم افزاره که در زیر میگم کارش اینه که کدهای ما رو به زبون ماشین تبدیل میکنه. )
۱) زبان برنامه نویسی بیسیک به کمک نرم افزار بسکام
۲) زبان برنامه نویسی سی به کمک نرم افزار کدویژن
تا اونجایی که من میدونم بیسیک آسون تره ولی سی قویتره.
من خودم با زبون سی کار میکنم.
برای شبیه سازی مدار تو کامپیوتر دو راه وجود دارد :
۱) نرم افزار پروتئوس یا ISIS
۲) نرم افزار اورکد یا Capture
من خودم تقریبا با جفتشون کار کردم ؛ به نظر من پروتئوس بهتر از اورکد هست هم از نظر ظاهر و هم از نظر راحتی باهاش!!!
البته اگه یکیش رو یاد بگیری یاد گرفتن اون یکی زیاد کاری نداره.
برا آموزشش هم تو اینترنت پر از کتاب و فیلم هستش.
شرکت بهکامان هم آموزش این دو نرم افزار رو درست کرده و برای فروش گزاشته(چیز بدی نیستن-من خودم هر دوتاش رو خریدم.)
برای رفتن به صفحه مورد نظر روی اسم های زیر کلیک کنید
آموزش ORCAD
آموزش Proteus
تـــمـــریـــنـــات ایـــن جـــلــســـه !!!
پیش نیاز :
یاد گیری زبان برنامه نویسی c : یاد گرفتنش کار سه سوته همش باید یه ۱۰-۰ تا کد رو بفهمید که کارشون چیه برا منبعش هم
کافیه تو گوگل بزنید : آموزش جامع avr
کلا یه ۳-۴ تایی کتاب در این زمینه تو اینترنت هستش که یه قسمتی از کتاب زبون سی رو توضیح داده که میتونید بخونیدش و اگه مشکلی بود اینجا در خدمتیم.
برا شبیه سازی هم من با پروتئوس کار کردم که به شما هم پیشنهاد میکنم با همین کار کنید ؛ آموزشش هم تو اینترنت هست.
چند تا لینک از برنامه های ساده که با پروتئوس و کدویژن درست شده اند رو میزارم برید نگاشون کنید.
برنامه هاش خیلی ساده هستن.ولی اگه مشکلی بود همینجا اعلام کنید.
چراغ چشمک زن با avr
چراغ چشمک زن با ۸ تا led
شمارنده تک رقمی با avr
شمارنده تک رقمی با کلید
مطلب جلسه بعد
دوستان به جای این که برن و مطلب جلسه دوم رو بخونن لطفا مطلب زیر رو بخونن اول و بعد برن مطلب جلسه ۲ رو بخونن…..من یادم رفت مطلب زیر رو تو این مطالب اولیه بگم و مجبور شدم تو مطلب جلسه ۱۲ ذکرش کنم….اول مطلب زیر و بعد مطلب جلسه ۲ به بعد :
آموزش جامع میکروکنترلر AVR جلسه۱۲
منبع
این مطلب از وبلاگ www.noise.blog.ir جمع آوری شده خلاصه! و مرتب شده ۱۱ مطلب است و من فقط یکمیکی تغیرش دادم!!!!
دوستانی که دوس دارند میکرو رو پایه ای یاد بگیرند میتونن برن تو این وبلاگ.
البته ما قصدمون اینه که پروژه محور باشه که انشا الله همین طور هم خواهد شد.
===================================
ریز کنترلگر>>ویکی پدیا
====================================
مطلب تفاوت میکرو کنترلر و میکرو پروسسور ترجمه مطلب زیر است.
Difference between Microprocessor and Microcontroller
امید وارم این آموزش avr مفید بوده باشه براتون.
مهمان
حاج مهدی یه دونه ای !
مهمان
بسیار عالی. ذکات علمتونو میدید. خدا اجرتون بده.
مهمان
سلام.فکر میکنم در مورد 1 کردن بیت pud اشتباه میکنید.چون اگه یک بشه پول آپ غیر فعال میشه و پورت میره تو حالت tri-state.
در صورتی که ما پورت رو طوری تنظیم کردیم که از پول آپ داخلی استفاده کنیم و عملا با اینکار پورت میره رو حالت tri-state
مهمان
به نظرم در مقایسه ی میکروکنترلر و میکروپروسسور اشتباه کردید .
مهمان
سلام شما تو یکی از مطالبتون میکرو رو کامل باز کردین.
من حتما باید یکی رو باز کنم میخاستم ببینم شما چه راهی پیشنهاد میکنین. تشکر
نویسنده این مطلب
سلام-من والا نبودم – یکی دیگه از بچه های سایت بود – توش چیز خاصی نداره
یه مربع کوچولو اندازه نصف ناخن کوچیکه
مهمان
سلام آقای مهندس دمرچیلو یک خواهشی داشتم از شما ، من تمام جاهایی که می شناختم را سرچ کردم ، اما چیزی در رابطه با فیوز بیت های کلاک داخلی ۸ مگا هرتز atmega32 پیدا نکردم ،من با programmer hattel کار می کنم ،ممنون می شم فیوز بیت های کلاک ۸ مگا هرتز و کریستال خارجی ۱۶ مگا هرتز را برایم بفرستید . با تشکر فراوان
نویسنده این مطلب
سلام – تو همین مطالب آموزش AVR فک کنم جلسه ۱۰ یا ۱۲ ام بود – بگردید پیدا میکنید – یه مطلب مخصوص فرکانس و کریستال و اینجور جیزای میکرو – جدولاش تو اون مطلب هستش.
مهمان
سلام.
من داشتم دیتاشیت میکرو رو نگاه میکردم(ATmega16)ناگهان توی صفحه۵۵یک ریجیستر دیدم به اسمSFIOR.
حالا این ریجیستر چه کاری انجام میده؟
مهمان
سلام.
مطلب رو یه با کامل خوندم.
فهمیدم.
ولی چرا تو کدویزانر این بیت ۱ نمی شه؟
نویسنده این مطلب
سلام-چی چرا ۱ نمیشه؟
نویسنده این مطلب
سلام
بیت اولش برا بحث تایمر/کانتر هستش.
بیت دومش برا غیرفعال کردن Pull-up هستش.
بیت ۳امش برا بحث مقایسه گر آنالوگ هستش.
بیت ۵ تا ۷ هم برا بحث adc هستش
هر کدوم از این بیتا رو باید تو مبحث مرتبط خودشون بررسی کنی.
مهمان
سلام مهندس خسته نباشید مننون از بابت وقتی که میزارید
مهندسی یه وقت های تو بعضی برنامه ها دستور PORT یا DDR علاوه بر مقدار صفر ویک ، مقدار دهی ها هگزا دسیمال میشن ، اگه امکانش هست در مورد این یه توضیح مختصر بدید به طور مثال : PORTA=0xCC
DDRA=0x55
نویسنده این مطلب
سلام-خب مشکل الان کجاس؟ سوالت چیه دقیقا متوجه نشدم – اگه اعداد هگزا دسیمال نمیدونی چیه که تو گوگل بزنی آموزشش میاد – اگه چیز دیگه هستش بگو.
مهمان
سلام دوباره . من رفتم به صاحب PDF ای که تو سایت گذاشتین ایمیل زدم گفت راضی هست و خودش برای استفاده گذاشته . حله میتونین استفاده کنین
اینم عکس از ایمیل
http://s8.picofile.com/file/8298830034/%D8%A2%D9%BE%D9%84%D9%88%D8%AF.JPG
مهمان
سلام . این کتاب هایی که به صورت pdf هست ، صاحب اثرش رضایت به پخش رایگان داره که من الان استفاده کنم ؟
نویسنده این مطلب
سلام – منبع فایلا رو گزاشتم – لینک سایت مرجع رو – برو اونجا بررسی کن – من خاطرم نیست.
مهمان
سلام.
پایه t0وt1چیه؟
نویسنده این مطلب
سلام – تایمر فک کنم باشه – دقیقا خاطرم نی
مهمان
سلام خسته نباشید دوست عزیز
یه سوال داشتم و قتی ما میایم یک lcd رو در code vision تعریف میکنیم این کدی که به کدوم پورت میکرو وصل کردیم کجا مییاد؟
مثلا اگه پورت A رو واسه lcd بزاریم و یک بار PORT B رو بزاریم code vision این lcd_init میزنه حالا از کجا debuger میفهمه پورت A یا B
درخواست دیگم اینه که اگه میشه واسه atmel هم اموزش بزارید اگه وقت کردین چون تا جایی که میدونم atmel رایگانه
نویسنده این مطلب
سلام
اگه از کتابخونه alcd استفاده کرده باشین تنظیمات مربوط به پایه ها در فایل main پروژه ظاهر نمیشه ( حالا کجا ذخیره میشه رو نمیدونم و مهم هم نیست برام ) و باید از طریق تنظیمات کدویژن پروژه پایه ها رو مشاهده کنی و یا ویرایش کنی.
مهمان
سلام . خسته نباشین . ببخشید نمیدونم سوالم مربوط به اینجا میشه یا نه ؟اگه بخوایم پایه های یک پورت رو تغییر بدیم از چه دستوری یا روشی باید استفاده کنیم ؟ مثلا چهار تا سوییچ به پایه های ۱ تا ۴ پورت B وصله ومقدارهای ۱و۲و۴و۸ رو روی ال سی دی نمایش میده . حالا اگه بخوایم به جای این پایه ها از پایه های ۱و۳و۵و۶ استفاده کنیم و همین مقادیر برگردونه باید چه کار کنیم ؟ راهنمایی کنید ممنون میشم .
نویسنده این مطلب
سلام – اینی که میگی همش کد نویسی و زبون c هستش – راهنمایی میشه نوشتن کد
مهمان
با عرض سلام و ادب بسیار تشکر و سپاسگذاری میکنم که مطالب مفید و کاربردی را روی سایت بصورت رایگان قرار داده اید تا همگان استفاده کنند

در پناه امام زمان موفق و موید باشید
مهمان
سلام چرا نمیشه تو گروه تلگرام عضو شد؟
نویسنده این مطلب
سلام-مشکل چیه؟ آیدیتونو بدید.
مهمان
@Electro52
اگه میشه تو تلگرام بهم پیام بدین من ای دی شمارو ندارم
مهمان
سلام.
من یک کد رو نوشتم که : وقتی یکی از ۳پورتی که انتخاب کردم نور یک LEDکه ۳تا ال ای دی توش هست ارام ارام روشن شود و ترکیب رنگ به وجود اید.ولی در شبیه ساز و هم در عمل نور LEDسریع روشن می شود!می خواستم بپرسم که چه چوری ارام ارام روشن شود.
راستی عید شما مبارک
نویسنده این مطلب
سلام
به چه روشی خواستی این کارو بکنی؟ معمولا با PWM این کارو میکنن.
عید شما هم مبارک
مهمان
با سلام خدمت آقا مهدی عزیز
آقا مهدی من فیزیک می خونم اما چند وقتی هست که به بحث میکروکنترلرها علاقه مند شدم می خواستم بدونم چجوری میتونم برای یاد گیری وارد این بحث بشم یعنی برای ورود به این مباحث از کجا باید شروع کنم و البته من از الکترونیک چیز زیادی بلد نیستم
نویسنده این مطلب
سلام
برنامه نویسی C++/C رو خوب یاد بگیر اول – و بعد بیا سراغ میکرو – یا این که ۳-۴ فصل اول کتب آموزش سی رو بخون و بعد بیا سراغ میکرو که این دومی روش بهتری هستش.
میکرو هم انواع مختلفی داریم – اول برو ببین چی نیازت میشه و بعد برو اونو یاد بگیر
مهمان
سلام آقا مهدی.
من یه سوال دارم و تازه کار هستم اگر میشه با زبون ساده برام بگین باید چه کار کنم.
من توی پروژه قفل رمزی ۴ رقمی وقتی پسورد رو تغییر میدم (در عمل) با قطع جریان به رمز پیشفرض بر میگرده.توی همین اموزش گفتین حافظه ی eeprom اطلاعات رو در حالت خاموش هم نگه میداره.
من قبل از char aray[]; کلمه eeprom رو نوشتم ، ولی این ارور رو داد :
Error: C:UsersALIDocumentsDigital Lock With Keypad & LCDlock1.c(183): storage modifier not allowed in this context
می خوام هر رمزی که بهش دادیم در eeprom ذخیره بشه و اگر دوباره بهش رمز دادیم ، رمز قبلی پاک بشه و رمز جدید ذخیره بشه. و با قطع برق پاک نشه.
ممنونم.
نویسنده این مطلب
سلام
از حافظه ایپرام خارجی استفاده کنید.
مهمان
سلام.
ایپرام داخلی و خارجی چه فرقی داره؟
باید چه کار کنم ، در کد ها باید تغییری بدم ؟ دلیل اون ارور چیه؟
من پروگرامر هاتل دارم.توی نرم افزار هاتل گزینه پروگرم کردن ایپرام داره ، توی اونجا باید بریزم؟
اگر میشه برام توضیح بدین.
نویسنده این مطلب
سلام
ایپرام خارجی به صورت یه آیسی مجزا هستش – میگن ایپرام خارجی حافظش میپره!
حافظه ایپرام رو وصل میکنی به میکرو – با میکرو توش اطلاعات میریزی و میخونی – آموزشش تو سایت هستش
مهمان
سلام.خستهنباشی. من یه مدت کوتاهی زبان بیسیک خوندم و تقریبا یه سالی هست که دیگه کار نکردم. الان دوباره میخوام شروع کنم ازصفربخونم. فقط موندم که زبان بیسیک بخونم یا سی؟ از نظرشما کدومش بهتره و اسونتره و پرکاربردتره؟و برای خوندن یاد گرفتنش بهتره که چه کتابی رو بخونم؟ خیلی ممنون
نویسنده این مطلب
سلام
سی یاد بگیری – avr-arm میتونی کار کنی
برنامه نویسی کامپیوتر و موبایل(c#-qt) میتونی کار کنی.
حالا بازم مشورت کن – تا جایی که میدونم سی فقط برا Avr هستش کاربرد دیگه ای داره یا نه من اطلاع ندارم از کسی بپرس که کار کرده باشه
مهمان
سلام میشه اموزشی مبنی بر ساخت تابلو روان گردان در اختیار من قرار بدید من دارم روی تابلوروان چرخان کار میکنم با ای سی اس ام دی امگا8 دنبال برنامه ای می گردم که بشه متن رو راحت طراحی کنم داخلش اگه برنامه ای می دانی برام ایمیل کنید لطفا ??????????
مهمان
سلام مهندس
من چند سالی هست که هی میخوام AVR رو یاد بگیرم
اوایل یک کتاب گرفتم به نام طراحی سیستم با میکروکنترلر های AVR خدایشش هیچی ازش نفهمیدم وگفتم که من اینکاره نیستم
بعد از مدتی این ویروس میکرو AVR دوباره افتاد بجونم ورفتم یک کتاب دیگه خریدم به نام واین کتاب هم نحوهی اموزشش بیشتر بر پایه کد ویزارد بود فصل های اول و دوم که در باره ی ورودی و خروجی ها و LCD ها …..بود نسبتا خوب پیشرفت اما کار کمکم سخت شد ومن متوجه شدم که کد ویزارد یه جاهایی دارای محدودیت میشه و خیلی چیز جالبی نیست وکتاب رو انداختم تو سطل اشغالی (شوخی کردم)البته باید بگم تو این مدت کمی هم با زبون Cاشنایی پیدا کردم (در حد انواع متغییر هاو عملگرها و دستورات زبان C)
الان هم چند وقتی هست کتاب میکرو کنترلر های AVRمهندس جابر الوندی رو گرفت واقعا کتاب پر محتوا و کاملاعملی هست کتاب در مورد AVR از این دیگه بهترمن که جایی سراغ ندارم الان دارم فصل 4 رو میخونم
چند تا سوال خدمتتون داشتم
همین روال رو ادامه بدم کافیه
اشنایی بازبون سی در همین حد انواع متغییر ها وعملگرها( البته دستورات رو کمی در عمل مشکل دارم )کافیه یا اینکه باید برم و زبون سی رو کلی یا دبگیرم
اگه باید زبون سی رو کلی یاد بگیرم چه منبعی رو پیشنهاد میکنید
سی بهتره یا سی ++
ایا از سی++ میشه در کامپایلر کدویژن استفاده کرد
برای اوایل بستن عملی مدارها و خرید پروگرامر و لوازم جانبی رو پیشنهاد میکنی یا همین پرتئوس کافیه
ببخشید اگه سرتون رو درد اوردم یا علی خدا حافظ
نویسنده این مطلب
سلام
1) c و c++ تقریبا شبیه هم هستن – هر دو رو یاد بگیر چیز خاصی نداره – به نظرم کتاب دکتر فراهانی آموزش زبان C برا انتشارات پیام نور رو بخون – کم کم زبان سیت رو قوی کن.
2) من خودم دیگه کتاب نمیخونم و دیتاشیت میخونم و پروژه های خارجی! – خودت هر طور راحتی همون طور عمل کن ولی سعی کن پروژه زیاد ببندی تا انرژی بگیری برای ادامه کار.
مهمان
اقا خسته نباشین
توی این فایل ستا پوشه ی متفاوت هست
از کجا شروع کنم؟؟
درضمن این حجم مطلاب برای یک جلسه زیاد نیست؟؟
تشکر از زحماتتون
نویسنده این مطلب
هر کدوم که خاستی
مهمان
چقدر میگیری میکرو رو کامل یادم بدی ؟
نویسنده این مطلب
خونتون کجاس؟
به چه صورت؟ فیلم بدم – کتاب بدم – حظوری میخوای بیای – از طریق اسکایپ؟ روش؟
مهمان
مهندس میشه من کتابا را نخونم یه راست برم سراغ اموزش شما
یعنی شما را ضی هستی
نویسنده این مطلب
خب آموزش AVR تو نت زیاد هستش….فیلم کتاب و… حتی میتونید از دیتاشیت هم استفاده کنید
)
والا به نظر خودم از کتاب هم استفاده نکنی مشکلی نیست و همین مطالبی که من گزاشتم رو بخونی کارت راه میوفته … البته باید دیتاشیت رو هم کم کم شروع کنی به خوندنشون….یه بار که بشینی 50 صفحه رو ترجمه کنی بعدا دیگه خوندن دیتاشیت برات عین هلو میشه(البته اگه انگلیسیت ضعیف هستش، اگه قوی هستش که چه خوب
مهمان
سلام من جابر هستم از زبون سی خیلی خوشم میادولی هرکاری میکنم درست حسابی یاد بگیرم نمیشه چند تا راهنمایی بهم میدید
please
نویسنده این مطلب
سلام
خب زبان سی اولش یکم اضیت میکنه، کلا هر چیزی اولش که بخوای یاد بگیری اضیتت میکنه
مثلا من الان دارم لبویو یاد میگیرم و …
به نظرم یه کتاب آموزش زبان سی بگیر و بشین بخون و مثال هم زیاد حل کن و به نگاه کردن فیلم و خوندن کتاب هم اکتفا نکن و خودت دست بکار شو و برنامه بنویس حتی اونایی که خود اون منبع آموزشی نوشته ، تو بیا همون برنامه ها رو بنویس و تست کن و جواب بگیر
مهمان
سلام اقا مهدی میشه بگین چه کتابی یرو بخونیم ؟؟
نویسنده این مطلب
سلام
avr?
به نظر من لازم نیست – برو آرم یاد بگیر.
مهمان
سلام ممنون از آموز های خوبت
در واقع ما برنامه اصلی رو رو ی حافظه flash می نویسیسم درسته ؟؟
یعنی وقتی برنامه رو پاک و دوباره برنامه جدیدی روی میکرو می نویسیم این رو از حافظه flash پاک می کنیم دیگه نه ؟؟
نویسنده این مطلب
سلام
آره
البته فلش هم به دو قسمت تقسیم میشه که یه قسمتیش مربوط به فضای بوت هستش که به کمکش میتونی میکرو رو بدن نیاز به پروگرامر و با کامپیوتر پروگرام کنی
مهمان
سلام.
من یه سوال داشتم.
من برناممو رو ریختم تو فلش. اما وقتی میکرو رو خاموش کردم روشن کردم دیدم که برنامه روشه.
چرا؟
نویسنده این مطلب
سلام
یعنی چی که روشنه؟
مهمان
سلام.
منظورم این بود برنامه ای که نوشتم هنوز هم اجرا میشه حتی تا چند ماه تست کردم
نویسنده این مطلب
خب درسته – الان مشکل کجاس؟
مهمان
یعنی هنوز اجرا میشه
مهمان
سلام.


خو دادا تو مطلب گفتی پاک میشه
نویسنده این مطلب
کجا گفتم حافظه فلش موقته؟ متنشو بده تصحیح کنم.
مهمان
این قسمت اشتباه کردی باز نیگا کنم بقیشو نیگا نکردم مشکلی بودم میگم ههههههه
برای مثال میخوایم پین سوم از پورت D رو بعنوان ورودی و پین ششم از همین پورت رو بعنوان خروجی تعریف کنیم.باید چه مقادیری رو به پین ها بدیم ؟!
پین سوم یعنی شماره ۲
پین ششم هم یعنی شماره ۵
پس مقدار رجیستر DDRD=00010000 میبا
مهمان
بابا من مهم نیستم چون من میدونم چی به چیه ولی یکی که صفر کیلومتره بیچاره میاد نمیفهمه خب اصلاح کن دیگه….والا نظر میذاریم جایی که یه اشتباه کوچولو کردی میگیم گوش نمیدی نظر نمیذاریم میگی نظر نمیدید
نویسنده این مطلب
چرا حالا میزنی


چشم الان نگاه میگنم
راسش اصلا حالم خوش نیست یه وقت فک نکنی بیخیالم…
تصحیح کردم. ممنون از این همه دقت
مهمان
فدات داداش ههههه
من نوکرتم تو اخلاق به خودت کشیدیم دیگه هههههه
خدا بد نده اتفاقی افتاده ؟؟؟ ما فعلا نمردیم که داش مهدی بی حال باشه هاااا
نویسنده این مطلب
عجب زمونه ای شده
لیاقت مردن هم ندارم من خاک بر سر
مهمان
اینجوری نگو داداش هم هواتو داریم هم دوست داریم
نویسنده این مطلب
اون پیام قبلیت رو ، منظورت رو دقیق برام میل کن
مهمان
مهندس واسه مقاومت PULL UP اگه بخواد فعال باشه باید PUD=0 باشه و اگه یک باشه تحت هر شرایطی PULL UP فعال نمیشه که برعکس گفتی
آموزش عالیه
نویسنده این مطلب
سلام
ممنون ازت
وقتی پورتی وردی تعریف بشه(ddr) و بعد port رو مقادیرش رو ۱ بدی، پول آپ اون پایه هایی که port شون ۱ هستش فعال میشه.
مهمان
سلام مهندس جان
صفحه 57 از دیتاشیت 357 صفحه ای میکرو Mega16 نوشته اگه PUD مقدارش یک بشه پول آپ تمام پورتها غیرفعال میشه و تاکید کرده که حتی اگه روی پورتی DDR و PORT بصورت پول آپ تنظیم شده باشه با یک شدن PUD پول آپ اون پورت هم غیرفعال میشه
When this bit is written to one, the pull-ups in the I/O ports are disabled even if the DDxn and
PORTxn Registers are configured to enable the pull-ups
مهمان
خداییش خیلی گلی. دمت گرم با این سایتت.

یه سوال دارم شما رباتیک هم کار کردین ؟
نویسنده این مطلب
والا یکمکی
مهمان
لطفا منابع این صفحره به صورت pdf درارید و بزارید…… اینجوری هم میشه مواقع آفلاین بودن خوند….. هم خیلی بهتره دیگه…… جای بحث نداره
مهمان
ممنونم از پاسخگویی.مزاحمتون میشم حتما
مهمان
سلام مهندسممنونم از سایتتون واقعا عالی و پرمحتوا و مفیده اما خیلی دیر جواب میدین به هرحال.
مهندس بی زحمت یه راهنمایی کنین و بفرمایید که چطوری و از کجا شروع کنم میکروکنترولر و برنامه نویسی اینارو
حالا کتاب یا جزوه یا هرچی.ممنونممممممممممممممممممممممم
نویسنده این مطلب
سلام
کتاب جابر الوندی رو بخر بخون….هر چند که بعضی مباحثش رو خیلی توضیح نداده….ولی برا شروع بد نیست
پروژه های ساده سایت رو ببین
مشکلی سوالی چیزی هم بود در خدمتیم
مهمان
سلام! کارم راه افتاد ممنون!
مهمان
سلام!
خیلی ممنون از سایت خوبتون!
یه سوال داشتم از این رو که من خیلی خیلی مبتدی هستم لطفا سعی کنید در جواب من از اصطلاحات عیجب استفاده نکنید!
من فایل چراغ چشمک زن با avr رو دانلود کردن رفتم یه نگاه کردم و خودم از روش یکی دیگه درست کردم! بعد کار کرد
رفتم ببینم توی فایل کد نویسیش چیه!
وقتی وارد شدم اینو نوشته بود
DDRC.0=1;
PORTC.0=0;
بعد توی توضیحات شما خوندم نوشته
DDRX و portx بعد نمیدونم که آیا منظور از X متغییر هست یا X یه ثابت هست و جزو کد هست آخه توی اون کد نوشته DDRC.0=1 سوالم اینه که همش رو توضیح بدید چیه!
1) توی DDRC منظور از C چی هست؟! پایه و….؟
2) توی DDRC.0 صفر چی هست و برای چی گذاشتید؟!
3) آیا توی DDRC.0=1 عدد یک توی مساوی با 1 برای تعرف خروجی هست؟!
ممنون منتظرم
نویسنده این مطلب
سلام





خواهش
چشم….ما خودمون هم مبتدی هستیم.
عکس زیر رو ببین
میکرو یه سری پایه ورودی خروجی داره….که اومدن اینا رو دسته بندی کردن لذا میکرو ۴ تا پورت داره…با نام های A , B ,C ,D
وقتی مثلا میگن PORTX یعنی این که یکی از ۴ تا حایت منظورشه یعنی PORTA , PORTB , PORTC , PORD
و DDRX هم به همین ترتیب
حالا بریم سراغ DDRC.0=1
اولا اینو بگم که DDR برا تعین ورودی یا خروجی بودن پایه میکرو هستش…مثلا برا روشن کردن یه LED باید پایه خروجی باشه یعنی دیتا بده یهنی ولتاژ بده….یعنی یه چیز تو این مایه ها
و مثلا برای این که ببیننیم روی اون فلان پایه چه ولتاژی هستش مثلا ببینیم ولتاژ ۰ یا ۵ ولت روی پایه مورد نظرمون هستش….در این جا داریم اطلاعات میگیریم….لذا یاس پایه مورد نظرمون رو ورودی تعریف کنیم….
حالا با مقدار ۰ پایه ورودی میشه و با مقدار ۱ پایه خروجی میشه…..که عمل ورودی و خروجی کردن یه پایه با ریسجتر DDR انحام میشه…
و شما برای این که تعیین کنی که کدوم پورت رو میخوای ورودی خروجیش رو تعیین کنی مثلا باید بنویسی DDRC (یا هر پورتی که مد نظر داری و …) و بعد بهش مقدار بدی
حالا مینوسیم DDRC.0=1 یعنی این که پایه ۰ پورت C رو ۱ کن…یعنی خروجی کن(عکس بالا رو ببین….دنبال PC0 بگرد//// که PC0 خلاطه شده همون PORTC0 هستش یعنی PORTC پایه ۰ اومش)
گرفتی؟؟؟
ریجستر PORT هم برا مقدار دهی اولیه هستش…
مثلا وقتی پایه رو خروجی تعریف میکنی….باید مقدار دهی اولیه کنی اون پایه رو….مثلا اگه ۱ کنی…..ولتاژ ۵ ولت میوفته روی اون پایه..و اگه مقدار ۰ بده ولتاژ ۰ولت میوفته روی اون پایه
و مثلا برا پروژه روشن کردن LED باید مقدار دهی اویه رو ۱ بدی تا LED روشن بشه
OK???
سوالی بود در خدمتیم…
فعلا بریم درسمون رو بخونیم که فردا امتحان داریم و الان هم ساعت ۲ شب هستش
مهمان
خیلی ممنون عالی بود!
مهمان
درود و سلام
بیشینه فرکانس(یا کمترین زمان نمونه برداری) آنالوگ به دیجیتال در سری های مختلف این میکرو کنترلرها چقدر است.
مهمان
قدر دان زحمات شما
نویسنده سایت
تا اونجایی که من میدونم به میکروکنترلر میتونیم برنامه خاصی بنویسیم و بدیم تا اجرا کنه ولی تو میکروپروسسور خود شرکت روش برنامه نویسی میکنه و نه ما.
تفاوت میکروکنترلرو میکرو پروسسور رو اشتباه گفتید برادر
میکرو پروسسورفقط میتونه پروسس کنه و هیچ کدوم از امکانات میکرو کنترلر مثلپورتها و حافظه ها و adc وdac واین چیزها رونداره
مهمان
مگه armمیکرو نیست که اسمش رو نیاوردید؟
نویسنده این مطلب
آرم هم میکرو هستش
مهمان
خواهش میکنم
وظیفس
مهمان
سلام
خواستم یه مورد کوچیک رو بگم که هم دوستان یاد بگیرن و هم متن اصلاح بشه :
حافظه EPROM با نور ماورای بنفش پاک میشود
و حافظه EEPROM با جریان الکتریکی که از این در میکروها استفاده شده و با پروگرمر قابل پاک کردن اند .
باتشکر
واقعا ممنون
نویسنده این مطلب
سلام
ممنون از توضیحاتت داش مهدی
مهمان
واقعا آموزش خوبیه.
مهندس جان خیلی خوب گفتی.
از این که هر چیز بلد بودی رو به زبون خودت گفتی با مرامت حال کردم.
امیدوارم همیشه موفق و پیروز باشی.
مهمان
اگر بیت مورد نظر در حالت ورودی تنظیم شده باشد و بیت مورد نظر آن در رجیستر
بصورت High تعریف شده باشد،مقاومت پول آپ داخلی فعال میشود.
بصورت LOW تعریف شود،پین مورد نظر به صورت Tri-State یا Hi-z در آمده که معنای آن این است که پین موردنظر وضعیت مشخصی ندارد.همانند هنگامی که برای پین هیج مقداری در رجیسترهای DDRx و PORTx و RINx تعریف نکرده باشیم(حالت پیشفرض).
این قسمتی رو که علامت زدم اصلاح کن . به جای pin باید بنویسی port
در صورتیکه بیت مورد نظر در رجیستر
نویسنده این مطلب
تصحیح شد…..
ممنون
———————
مهمان
بسیار عالی است…..مطالب بسیار مفیدی رو تو سایت قرار میدید

مهمان
بیسار عالی خیلی ممنون