۲۹-فروردین-۱۳۹۲, ۱۷:۲۵:۲۵
این جا قرار هست آموزش قدم به قدم برنامه نویسی برای این سری از میکرو ها قرار گیرد میکرو مورد استفاده AtXmega128A3U خواهد بود که توانایی برنامه ریزی توسط USB را نیز دارا است
هدر برد این میکرو رو از eca دریافت کنید
با توجه به قیمت این هدر برد و عدم پشتیبانی پروتئوس از این میکرو کنترلر بسیاری از آموزش ها در خود AtmelStudio انجام خواهد شد
پیش نیاز این آموزش ها آشنایی سطحی با زبان سی و مطالعه نمودن این پست است که مکمل یک دیگر هستند.
این آموزش ها با استفاده از این PDF از وب سایت Atmel تنظیم شده اند
این فایل پروژه را دانلود کنید و کد های نوشته شده را در این پروژه اضافه و کم کنید
[attachment=9149]
اگر با محیط برنامه آشنایی ندارید برای هماهنگی با آموزش ها بهتر است تنظیمات AtmelStudio را مطابق تنظیمات من قرار دهید
[attachment=9150]
در محیط نرم افزار در تول بار بالایی در تب Tools گزینه ی Import رو انتخاب کنید
ساخت چراغ چشمک زن!
اول از همه بگم که پایه های این میکرو 8 میلی آمپر جریان خروجی دارن پس هیچ وقت به LED مستقیم وصل نکنید! این آموزش در شبیه سازی انجام میشود!
-
مثل سری های قبلی این میکرو هم دارای ریجیستر هایی با نام
PORTA
PORTB
PORTC
...
است با این تفاوت که به زیر مجموعه هایی تقسیم شده است!
برای مثال در سری های گذشته از
DDRA برای تعیین جهت پایه ها استفاده میشد
اکنون به این صورت باید استفاده شود
PORTA_DIR
و برای مقدار هر پورت از
PORTA
استفاده می شد که اکنون به این صورت است
PORTA_OUT
و همچنین برای خواندن از پورت از
PINA
استفاده می شده است اکنون با استفاده از
PORTA_IN
میتوان مقدار پورت را خواند
برای اولین قسمت از برنامه تکه کد زیر را اضافه کنید
با دکمه F7 برنامه کامپایل می شود
و با استفاده از Alt+F5 وارد محیط دیباگر می شوید
اگر پنجره ای با نام Memory باز شد آن را ببندید به هر تعداد که بود
در بالای صفحه در تب debug بروید از قسمت Windows گزینه ی IO View رو بزنید حال تمامی ریجیستر های میکرو رو می تونید مشاهده کنید
بر روی
با دکمه F11 به خط بعد بروید اگر ادامه دهید خواهید دید تمامی پین ها به خروجی تبدیل می شوند و مقدار برخی از آن ها برابر 1
-
برای خاموش و روشن کردن هر بیت بر روی ان کلیک کنید
-
همین طوری که میدونید برای افزایش سرعت کار با این میکرو برخی ریجیستر ها اضافه شده اند
مانند
PORTB_DIRSET
با توجه به مقدار این ریجستر پین های متناظر با بیت های 1 شده مقدار یک می گیرند
PORTB_DIRCLR
با توجه به مقدار این ریجستر پین های متناظر با بیت های 1 شده مقدار صفر می گیرند
PORTB_DIRTGL
پین متناظر با بیت یک شده مقدار عکس خواهد گرفت
ریجیستر های مشابه برای قسمت OUT نیز وجود دارد به طور کلی هرگاه به این نوع ریجیستر ها برخورد کردید بدانید عمل مشابهی انجام می دهند
PORTB_OUTSET
...
حال یک برنامه بنویسیم که از این ریجیستر ها استفاده کنیم
با F11 خط به خط برنامه رو اجرا کنید و نتایج رو ببینید
(تغییرات هنگامی که اشارگر به خط بعدی می رود اعمال می شوند)
برای توقف شبیه سازی Ctrl+Shift+F5 را فشار دهید (دکمه آن را می توانید فشار دهید!)
اگر قسمتی وارد کد اسمبلی شد مربوط به قسمتی است که خود کامپایلر به آن اضافه کرده است!
[attachment=9151]
هدر برد این میکرو رو از eca دریافت کنید
با توجه به قیمت این هدر برد و عدم پشتیبانی پروتئوس از این میکرو کنترلر بسیاری از آموزش ها در خود AtmelStudio انجام خواهد شد
پیش نیاز این آموزش ها آشنایی سطحی با زبان سی و مطالعه نمودن این پست است که مکمل یک دیگر هستند.
این آموزش ها با استفاده از این PDF از وب سایت Atmel تنظیم شده اند
این فایل پروژه را دانلود کنید و کد های نوشته شده را در این پروژه اضافه و کم کنید
[attachment=9149]
اگر با محیط برنامه آشنایی ندارید برای هماهنگی با آموزش ها بهتر است تنظیمات AtmelStudio را مطابق تنظیمات من قرار دهید
[attachment=9150]
در محیط نرم افزار در تول بار بالایی در تب Tools گزینه ی Import رو انتخاب کنید
ساخت چراغ چشمک زن!
اول از همه بگم که پایه های این میکرو 8 میلی آمپر جریان خروجی دارن پس هیچ وقت به LED مستقیم وصل نکنید! این آموزش در شبیه سازی انجام میشود!
-
مثل سری های قبلی این میکرو هم دارای ریجیستر هایی با نام
PORTA
PORTB
PORTC
...
است با این تفاوت که به زیر مجموعه هایی تقسیم شده است!
برای مثال در سری های گذشته از
DDRA برای تعیین جهت پایه ها استفاده میشد
اکنون به این صورت باید استفاده شود
PORTA_DIR
و برای مقدار هر پورت از
PORTA
استفاده می شد که اکنون به این صورت است
PORTA_OUT
و همچنین برای خواندن از پورت از
PINA
استفاده می شده است اکنون با استفاده از
PORTA_IN
میتوان مقدار پورت را خواند
برای اولین قسمت از برنامه تکه کد زیر را اضافه کنید
کد:
int main(void)
{
//Place Your Codes
PORTB_DIR=0xFF;
PORTB_OUT=0xAB;
return 0;
}
و با استفاده از Alt+F5 وارد محیط دیباگر می شوید
اگر پنجره ای با نام Memory باز شد آن را ببندید به هر تعداد که بود
در بالای صفحه در تب debug بروید از قسمت Windows گزینه ی IO View رو بزنید حال تمامی ریجیستر های میکرو رو می تونید مشاهده کنید
بر روی
i/o port configuration (PORTB)
کلیک کنید در زیر آن قسمت ریجیستر های زیر مجموعه قابل مشاهده هستند!با دکمه F11 به خط بعد بروید اگر ادامه دهید خواهید دید تمامی پین ها به خروجی تبدیل می شوند و مقدار برخی از آن ها برابر 1
-
برای خاموش و روشن کردن هر بیت بر روی ان کلیک کنید
-
همین طوری که میدونید برای افزایش سرعت کار با این میکرو برخی ریجیستر ها اضافه شده اند
مانند
PORTB_DIRSET
با توجه به مقدار این ریجستر پین های متناظر با بیت های 1 شده مقدار یک می گیرند
PORTB_DIRCLR
با توجه به مقدار این ریجستر پین های متناظر با بیت های 1 شده مقدار صفر می گیرند
PORTB_DIRTGL
پین متناظر با بیت یک شده مقدار عکس خواهد گرفت
ریجیستر های مشابه برای قسمت OUT نیز وجود دارد به طور کلی هرگاه به این نوع ریجیستر ها برخورد کردید بدانید عمل مشابهی انجام می دهند
PORTB_OUTSET
...
حال یک برنامه بنویسیم که از این ریجیستر ها استفاده کنیم
کد:
int main(void)
{
//Place Your Codes
PORTB_DIR=0xFF;
PORTB_DIRCLR=0xF0;
PORTB_DIRTGL=0x20;
PORTB_OUT=0xFF;
PORTB_OUTTGL=PORTB_DIR;
return 0;
}
(تغییرات هنگامی که اشارگر به خط بعدی می رود اعمال می شوند)
برای توقف شبیه سازی Ctrl+Shift+F5 را فشار دهید (دکمه آن را می توانید فشار دهید!)
اگر قسمتی وارد کد اسمبلی شد مربوط به قسمتی است که خود کامپایلر به آن اضافه کرده است!
[attachment=9151]