Atmel Semiconductor sudah mengeluarkan mikrokontroller seri AVR 8 bit yang menurut saya memiliki banyak keunggulan dibandingkan seri 89C51. Keunggulan tersebut antara lain (perbandingan dengan ATMEGA32):
1. Variannya sangat banyak, mulai dari yang 8 pin sampai 64 pin
2. Memiliki internal EPROM, anda tidak perlu lagi memakai batere untuk mem-backup isi RAM
3. Memiliki 8 channel ADC 10 bit
4. Memiliki internal oscilator, sehingga bisa dikonfigurasikan tanpa Xtal.
5. Ram internal 2kb (bandingkan 89C51 yang hanya 128byte)
6. 32KB EEPROM untuk program (89C51 hanya 4kb)
7. Internal watch dog. Nah ini penting, sehingga bisa mencegah sistem hang
8. Brown-out detector, juga mencegah hang.
9. In-system programming, tidak perlu programmer khusus
10. Punya port SPI, I2C
11. Arsitektur RISC, 1 instruksi hanya dilaksanakan 1 clock, bandingkan 89C51 membutuhkan 6-12 clock.
12. Dan yang paling penting:Development tools, cross compiler (C) gratis! Bandingkan dengan 89C51 harus memakai Frankln Cross Compiler yang harganya selangit...
Untuk developmentnya, saya biasanya memakai bahasa C, karena kalau memakai assembly, rumit banget dan memusingkan (menurut saya...) Dengan memakai bahasa C, pemrograman menjadi sangat mudah dan cepat. Kalau mau mencoba memakai bahasa Pascal, bisa juga, silahkan cek www.mikroe.com
Jadi, tinggalkan kebiasaan lama memakai bahasa Assembler untuk pemrograman mikrokontroller, gunakan bahasa C jika anda ingin development yang cepat dan mudah... Gratis juga kan?
Tertarik? Sekarang mari kita persiapkan tools nya yang gratis itu:
Software di PC:
1. AvrStudio Versi 4.13 Build 571 (ini yang saya pakai), silahkan download di www.atmel.com
2. WinAVR Versi 20071221, download di www.sourceforge.net atau search menggunakan google, keyword WinAVR
3. PonyProg2000 download di http://ponyprog.sourceforge.net
Catatan:
WinAVR dengan nama avr-gcc tersedia juga di linux, cuma saya belum mencobanya.
Programmer:
Untuk programmernya kita harus membeli Universal Programmer seharga 10 Juta-an... Kaget? Enggak kok, cuma harus menyiapkan uang sekitar 10 ribu untuk:
1. DB25 Female
2. 4 buah resistor 100 ohm
3. Konektor 6 pin, bisa memakai Header 6 pin
4. Kabel isi banyak kurang lebih 1meter (atau kabel pita)
Konektor DB25 adalah konektor yang dicolokkan ke paralel port untuk memprogram. Nah, dalam proses programmingnya, setiap PCB (atau desain) yang anda buat memakai mikrokontroller AVR, harus menyiapkan konektor 6 pin yang terhubung ke:
1. GROUND
2. Reset (Pin 9 pada ATMEGA32)
3. Not connected
4. SCK (Pin 8 pada ATMEGA32)
5. MISO (Pin 7 pada ATMEGA32)
6. MOSI (Pin 6 pada ATMEGA32)
Sekarang kita buat rangkaian yang paling sederhana, setidaknya kita bisa meyakinkan bahwa seluruh proses mulai dari pembuatan software sampai memprogram AVR berjalan dengan lancar.
Rangkaian sederhana ATMEGA32:
Rangkaiannya mirip dengan 89C51, Xtalnya juga bisa memakai standar 89C51, cuma capasitor xtalnya 22pF. Rangkaian ini berfungsi untuk menyalakan 3 buah LED saja karena tujuan kita adalah menguji apakah ATMEGA32 ini bisa berfungsi atau tidak.
Untuk power supply, gunakan 5 Volt, bisa menggunakan LM2576, 7805 atau sumber tegangan lainnya, hanya jangan sampai lebih dari 5.5 Volt karena dapat mengakibatkan ATMEGA32 rusak.
Mari kita desain software yang bisa menyalakan ketiga led tersebut bergantian tahap demi tahap.
Pembuatan Software ATMEGA32
1. Install AvrStudio yang sudah didownload
2. Install WinAVR
3. Install PonyProg2000
Apabila semuanya sudah diinstall, silahkan buka software AVRSTUDIO nya.
1. Pilih Project – New Project
2. Pilih AvrGCC dan nama project, serta folder project itu disimpan. Lihat gambar dibawah:
Opsi Create Folder akan membuat satu folder baru untuk project yang akan kita buat. Untuk projectnya, saya beri nama:testpertama. AVRStudio akan membuat folder testpertama di My Documents
3. Klik Next
4. Pilih Debug Platform:AVR Simulator dan ATmega32 pada Device.
5. Klik Finish
6. Klik Project – Configuration Option
7. Pilih opsi seperti gambar diatas. Frequency diisi dengan 11059200 hz. Optimization pilih O0 (tanpa optimasi).
8. Klik Ok
9. Sekarang anda telah siap untuk menuliskan source codenya:
10. Isi source code dengan:
#include < avr/io.h >
#include < avr/interrupt.h >
#include < inttypes.h >
#include < avr/iom32.h >
#include < stdio.h >
#include < math.h >
#include < avr/pgmspace.h >
#include < avr/eeprom.h >
#include < avr/wdt.h >
int main(void)
{
DDRC=0xff;
PORTC=0x01;
while (1);
}
Gunakan source code diatas sebagai tempate apabila anda akan membuat software pada platform ATMEGA32. Memang saat ini tidak semua header pada include dipergunakan, tetapi tidak masalah apabila dimasukkan sebagai template.
Pada bahasa C, awal eksekusi adalah pada fungsi main(void), fungsi dari masing-masing perintah tersebut adalah:
DDRC=0xff;
Berfungsi untuk memberitahu ATMEGA32 bahwa PORTC akan dipakai untuk OUTPUT. Silahkan baca datasheet ATMEGA32 mengenai DDR (Data Direction Register)
PORTC=0x01;
Adalah perintah untuk memprogram PORTC agar berisi 01 hexa (00000001 biner).
while (1);
Adalah perintah looping tak berakhir, maksudnya, setelah 2 perintah tersebut dijalankan, sistem akan diam disini.
11. Klik Build – Rebuild all
Apabila dibagian bawah tertulis Build succeded with 0 warnings... berarti proses kompilasi berhasil. Sekarang mari kita isikan hasil kompilasi tersebut ke IC ATMEGA32
12. Siapkan kabel programmer yang sudah dibuat, colokkan ke Paralel Port
13. Sambungkan ujung yang lain kabel programmer yang dipasang header 6 pin ke pin 6 – 9 pada ATMEGA32
14. Jalankan software PonyProg
15. Pilih AVRMicro dan ATMEGA32 pada sebelah kanan atas software ponyprog
16. Pilih Setup-Interface setup dan ikuti setting dibawah:
17. Klik Probe, jika jawabannya Ok, berarti sambungan kabel benar.
18. Klik Setup-Callibration, kemudian Ok (hanya jalankan pada pertama kali merun ponyprog saja)
19. Klik File – Open Program, kemudian cari file hex pada folder My Documents\testpertama\default
20. Klik Command-Write Program, sampai muncul pesan bahwa pemrograman sukses. Jika pemrograman gagal, cek kembali hubungan kabel.
21. Klik Command-Security and Configuration Bit
.
22. Sesuaikan dengan gambar diatas, klik pada BODLEVEL, BODEN dan CKOPT
23. Klik Write
22. Klik Ok, coba reset mikrokontroller dengan memutus dan menyambungkan kembali power supply.
23. Lihat apakah led yang terhubung ke pin 23 dan 24 menyala dan led yang terhubung ke pin 22 mati. Jika ya, berarti anda sudah sukses memprogram ATMEGA32 dengan bahasa C! Kenapa hanya 2 led yang menyala padahal port C diisi angka 1? Silahkan pelajari source code dan rangkaiannya.
Sekarang, mari kita buat agar LED tersebut menyala bergantian.
Tambahkan pada program satu buah fungsi delay, sehingga program menjadi:
.
.
.
void tunggu(unsigned int dx)
{
unsigned int x;
unsigned int y;
for(x=0;x< 500;x++)
{
for(y=0;y< dx;y++) {}
}
}
int main(void)
{
DDRC=0xff;
while (1)
{
PORTC=0x06;
tunggu(500);
PORTC=0x05;
tunggu(500);
PORTC=0x03;
tunggu(500);
}
}
Coba dicompile dan dimasukkan ke mikro nya, apakah benar lednya menyala bergantian?
Pengembangan lebih lanjut:
1. Output port C dihubungkan dengan 8 buah lampu 220 Volt melalui isolasi optis yang dibahas pada posting mengenai isolasi optis.
2. Buat program yang membuat ke 8 lampu tersebut menyala bergantian.
atau
Anda dapat juga membuat alat pencegah maling seperti yang terdapat pada posting saya di bagian isolasi optis.
source : awasnyetrum.blogspot.com