VMLAB - Virtual Oscilloscope for AVR

Diposting oleh Bubaka / Category:

VMLAB adalah salah satu simulator gratis terkenal yang mendukung mikrokontroler AVR. Sobat bisa mendapatkan versi gratis VMLAB dari amctools. Walaupun simulasi yang dilakukan tidak secara real time, tapi semua timings proses dilihat di osiloskop virtual akam mirip dengan kenyataannya.
VMLAB adalah sebuah ruang kerja proyek dimana bahasa scripting khusus menggambarkan kondisi rangkaian awal dan menunjukkan simulator virtual untuk koneksi antara perangkat keras dan mikrokontroler. Contoh pre-built bisa sobat temukan dalam folder C: \ VMLAB \ AVR_demo dan C: \ VMLAB \ WinAVRdemo (untuk instalasi default di C: \ VMLAB folder \).
VMLAB cukup kaya untuk mendukung perangkat keras: Resistor, Kapasitor, switch / key, dioda LED, pulsed voltage source, Sine wave voltage source, Non-ruturn-to-zero (NRZ) generator ( penguat interaktif), Operasional, komparator, 2 input NAND gerbang, 8 bit D konverter A, RS232 berbasis TTY (interaktif), modul LCD, I2C monitor (interaktif), 4x4 keypad Interaktif Multiprocess-berdedikasi: Eksternal Input, Output Eksternal. Sebenarnya Anda dapat melakukan berbagai simulasi dengan sistem embedded virtual Anda sebelum merakitnya menjadi rangkaian sebenarnya. VMLAB juga memiliki fitur lingkup kuat mana Anda dapat melihat tegangan pada pin atau bahkan beberapa mikrokontroler internal mendaftar nilai-nilai seperti ACO, TIMOVF.
Contoh berikut akan menunjukkan bagaimana membuat proyek sederhana menggunakan alat VMLAB.
Buat proyek baru dengan memilih Project-New. [Image]
Pilih project properties: project location, c file name, microcontroller, software tool-chain (WINAVR) untuk kompile dan make file generation (otomatis atau bisa didefinisikan).Tekan OK dan Anda akan ditransfer ke area proyek, di mana Anda akan menemukan file proyek dengan properti:.MICRO "ATmega128".TOOLCHAIN "GCC".GCCPATH   "C:\WinAVR".GCCMAKE   AUTO.TARGET    "leds.hex".SOURCE    "leds.c".TRACE              ; Activate micro trace.POWER VDD=5 VSS=0  ; Power nodes.CLOCK 1meg         ; Micro clock.STORE 250m         ; Trace (micro+signals) storage timeJuga ada jendela file leds.c dibuka dengan beberapa kode contoh.
Mari kita mensimulasikan dua dioda LED berkedip pada ATMega128. Hubungkan pin PD0 dan PD7 menggunakan resistor 620Ohm :[Image]Mengatur sambungan rangkaian dalam file proyek dengan menambahkan script. Juga kita definisikan sinyal ingin dilihat dalam scope.
Hubungkan dioda dan resistor dengan menulis empat baris script dalam file proyek:
D1 VDD D1_NODE R1 D1_NODE PD0 0.62KD2 VDD D2_NODER2 D2_NODE PD7 0.62KAfter circuit is set up, then we can setup scope:.PLOT V(PD0) V(PD7)After project file is set up, then we need to write simple program: [Image]

Build the code. If there are errors then correct them according to messages. If everything is all right you should get message:[Image]
Now it’s time to run simulator. Open control panel[Image]
There you see the main peripherals. Diodes D1..8, three sliders (potentiometers), keypad and microcontroller settings: speed (you can slow down you code), temperature and clock speed. In our project we need only diodes D1 and D2.Open scope windows from View-Scope menu to be able visually see the signals on microcontroller pins.
Simulation is controlled using toolbar: [Image]
You may run your code continuously, step over, step in and out and animate (slow performance). Press GO/Continue button. In scope window you can see how signals are changing in microcontroller pins: [Image]
And in control panel you can see how Diodes D1 and D2 blink:[Image]
If simulation results are OK you may burn the code in to real chip.

Tutorial AVR - Interrupts

Diposting oleh Bubaka / Category: ,



Dalam mikrokontroler, pelaksanaan suatu program terjadi secara berurutan, setiap perintah dijalankan satu per satu; prosesor hanya menangani satu tugas pada satu waktu. Pada setiap clock suatu operasi baru dilakukan.

Interupsi (interrupt) adalah peristiwa internal atau eksternal asinkron dalam alur program utama pada saat terjadi sesuatu yang memicu (trigger) untuk mendapatkan perhatian dari mikrokontroler.


Pada saat terjadi interupsi, untuk sementara mikrokontroler akan menjeda urutan perintah yang sedang dieksekusi, ia akan melaksanakan dulu perintah yang ada pada rutin interupsi (
ISR - interrupt service routine), kemudian bila telah selesai, maka mikrokontroler akan melanjutkan kembali eksekusi perintah yang tadi sempat tertunda.
Biasanya, saat sebuah mikrokontroler berkomunikasi dengan dunia luar, ia harus menunggu peristiwa eksternal  terjadi sebelum mengambil suatu tindakan. Katakanlah misalnya, kita memiliki sebuah tombol dan LED yang terhubung ke mikrokontroler dan tugas dia adalah untuk menyalakan LED ketika kita menekan tombol. Apa yang mikro akan lakukan? Mikrokontroler akan terus memeriksa apakah tombol sudah ditekan atau belum dan jika sudah, ia akan mengambil tindakan. Nah, ini berarti bahwa mikro akan tetap dalam keadaan sibuk-tunggu, padahal mungkin ia juga memiliki tugas lain yang seharusnya bisa ia dilakukan.


Dengan menggunakan teknik polling,  maka ketika tombol ditekan,  ia akan menghasilkan sinyal hardware, sebuah interupsi eksternal untuk mikrokontroler dan akan ditanggapi dengan cepat bahkan mikro akan meninggalkan apa yang dilakukannya untuk masuk ke ISR dan melaksanakan instruksi didalamnya. Tidak ada lagi acara mikro yang melamun sambil menunggu tombol ditekan...


Ada beberapa sumber interrupt yang masing-masing memiliki ISR yang berbeda. Untuk mengetahui sumber interrupt  mana yang memicu, maka mikrokontroller membutuhkan sebuah tabel ISR yang disebut tabel vektor. Hal ini disebabkan  karena urutan instruksi yang harus dilaksanakan oleh mikro ditunjukan berdasarkan Program Counter (PC), penunjuk yang menunjukkan instruksi berikutnya yang akan dijalankan. Maka mikrokontroler harus melihat dilokasi mana dalam memori,  program ISR tersebut berada, agar ia bisa melompat sana.

Berdasarkan tabel memori program diatas, kita bisa melihat ketika terjadi sebuah interrupt, mikro akan mencari di tabel vector lokasi ISR dari interrupt tersebut, selanjutnya ia akan lompat ke lokasi ISR itu, kemudian bisa telah selesai ia akan kembali ke program memory yang sempat ia tinggalkan tadi.


Untuk lebih jelasnya bisa dilihat dalam datasheet dari mikrokontroler tersebut yang akan menjelaskan sumber interupsi yang tersedia, tabel interrupt vector dan register yang terkait.

Selamat belajar...!