براي آشنايي با ميكرو كنترلر مي خواهيم يك برنامه ساده براي ميكرو كنترلر بنويسيم. بنابراين يك برنامه ساده مي نويسيم كه Led های (چراغ خطر!) ربات را روشن و خاموش كند. قسمت اخطار را قبل از هر كاري بخوانيد.
آشنايي با برنامه CodeVision:
CodeVision يك IDE براي ميكرو كنترلر AVR است. به وسيله اين برنامه مي توان از زبان C براي برنامه ريز ميكرو استفاده كرد. براي شروع ابتدا برنامه را از اينجا دانلود كنيد و آن را نصب كنيد. برنامه را اجرا كنيد. يك پروه TestAVR بسازيد.
در قسمت Setting->Programmer نوع Programmer را انتخاب كنيد. (Kanda Systems STK200+/300)
براي تنظيمات اوليه ميكرو از Code wizard استفاده مي كنيم. به وسيله اين wizard كدهاي C لازم براي تنظيماتي از قبيل Crystal Clock, Timer Setting, Port Setting, … توليد و به كد برنامه شما اضافه مي شود. پس از هر تغيير در اين تنظيمات بايد آن را به وسيله منو File->Generate, Save and Exit ذخيره كرد.
پس از تنظيمات اوليه كد برنامه را در Code Vision به زبان C مي نويسيم. (مي توان از توابع كتابخانه اي Code Visionنيز در اين كار استفاده كرد.) سپس دكمه Make the project را براي توليد كد اسمبلي برنامه شما براي ميكرو كنترلر AVR بزنيد.
حالا مي توانيد ميكرو كنترلر خود را برنام ريزي كنيد. براي اين كار از Chip Programmer استفاده مي كنيم.
تنظيمات اوليه ميكرو:
به وسيله Tools->CodeWizardAVR منو تنظيمات اوليه را ظاهر كنيد. حالا اين تنظيمات را انجام دهيد:
Chip Tab:
Chip: Atmega16L
Clock: 1.0000
Prot Tab:
Port B tab:
Bit 0: out
Bit 1: out
ما با اين تنظيمات نوع ميكرو كنترلر و همچنين فركانس 1MHz را براي آن انتخاب كرديم.(ما به ميكرو يك كريستال وصل كرديم تا فركانس 8MHz (يا MHz7.3728) توليد كند. ولي يك Oscillator نيز در داخل AVR قرار دارد كه فركانس آن 1MHz است. ما در اين قسمت از اين Oscillator استفاده مي كنيم).
در ضمن بيت 0 و 1 پورت B را به صورت خروجي تنظيم كرديم تا سيگنال روشن و خاموش شدن را در آن توليد كنيم.
حال به وسيله منو File->Generate, Save and Exit تنظيمات خود را ذخيره كنيد.
برنامه ميكرو كنترلر:
پس از مراحل بالا بايد يك فايل كه در آن قسمت هايي به زبان C نوشته شده است به همراه توضيحاتي در مورد آنها به صورت شكل زير توليد شده باشد.
حال اين خط را به برنامه اضافه كنيد:
Line 26:
#include <delay.h>
و سپس برنامه خود را در جايي كه //Place your code here بنويسيد:
void main(void)
{
.
.
.
While(1)
{
// Place your code here
delay_ms(100);
PORTB.0 = 1;
PORTB.1 = ~PORTB.0;
delay_ms(100);
PORTB.0 = 0;
PORTB.1 = ~PORTB.0;
};
}
در اين برنامه در هر 100 ميلي ثانيه خروجي را در بيت صفر و يك پورت B تغيير مي دهيم.
برنامه ريزي ميكرو كنترلر:
ابتدا یک Programmer را به پورت LPT کامپیوتر متصل کرده و کابل Flat آن را به کانکتور JP4 روی مدار خود وصل کنید. به وسيله منو Tools->Chip Programmer منو تنظيمات Programmer ميكرو كنترلر را ظاهر كنيد. VCC و GND را به مدار وصل كنيد و كليد را روشن كنيد.
ابتدا به وسيله منو Read->Chip Signature اتصالات VCC و GND به ميكرو و اتصالات Programmer به بورد را چك مي كنيم. پس از اجرا دستور بالا بايد پيغام زير ظاهر شود:
در غير اين صورت اتصالات خود را چك كنید.
حالا مي خواهيم برنامه خود را به ميكرو وارد كنيم. براي اين كار دستورات زير را به ترتيب اجرا مي كينم:
Program->Erase Chip
Program->Blank Check (optional)
Program->Flash
حالا بايد ديودها روشن و خاموش شوند.
اگر در Chip Programmer در تب Fuse Bit(s):، BootSZ0=0 و BootSZ1=0 را تيك بزنيم و اجرا Program->Fuse(s) Bit ، ميكرو از كلاك Crystal استفاده مي كند. بنابر اين بايد تنظيمات ميكرو را با توجه به كريستال تغيير دهيد.
اخطار: حتما در تب Fuse Bit(s):، BootSZ0=0 و BootSZ1=0 را تيك بزنيد در غير اين صورت ميكرو شما در حالتي قرار مي گيرد كه ديگر نمي توانيد آن را به وسيله CodeVision برنامه ريزي كنید.