براي آشنايي با ميكرو كنترلر مي خواهيم يك برنامه ساده براي ميكرو كنترلر بنويسيم. بنابراين يك برنامه ساده مي نويسيم كه 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
(يا MHz
7.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 برنامه ريزي كنید.