Categories
Mikrokontroler

Driver USBasp untuk Windows 7 – 64bit!

Ternyata menggunakan USBasp di lingkungan Windows 7 – 64bit tidak langsung bisa di-instalasi driver-nya dengan baik. Hal ini disebabkan belum tersertifikasi-nya driver bawaan dari USBasp itu sendiri. Nah gunakan driver dengan mengunduh disini agar proses instalasi bisa berjalan dengan baik dan berhasil. Saya sudah mencobanya, kini giliran Anda juga bisa mencobanya….

Terima kasih dan semoga bermanfaat…

Categories
Mikrokontroler

Perancangan Aplikasi Real Time (2): Solusi Tanpa RTOS

SINOPSIS

Melanjutkan artikel sebelumnya, perlu diketahui bahwa tidak setiap aplikasi membutuhkan sistem operasi atau tepatnya RTOS. Hmmm, jadi langsung saja, artikel ini memberikan gambaran tentang solusi tanpa menggunakan sistem operasi, yang nantinya kita evaluasi dan simpulkan baik buruknya, kelebihan kelemahannya.

Okey, take a deep breath, ambil napas yang dalem,…. Tahan…. dan jangan dikeluarkan… what?! he he he just kidding… ya silahkan dilepaskan pelan-pelan… (maksudnya supaya santai dulu relaks)

IMPLEMENTASI

Solusi yang dibahas kali ini menggunakan pendekatan kalang (loop approach), dimana setiap komponen aplikasi dinyatakan dalam bentuk fungsi yang harus dijalankan hingga selesai.

Idealnya digunakan pewaktu perangkat keras untuk melakukan penjadwalan fungsi-fungsi kontrol yang kritis. Namun, menunggu datangnya data dan perhitungan data yang begitu kompleks menyebabkan fungsi kontrol tidak cocok untuk dijalankan dalam batasan rutin layanan interupsi.

Seberapa banyak dan urutan komponen mana yang dikerjakan dalam kalang tak-hingga dapat diatur dengan memasukkan unsur prioritas, silahkan perhatikan pembahasan dalam contoh nantinya.

FUNGSI KONTROL PROSES (PLANT)

Perhatikan kode pseudo berikut…

void PlantControlCycle( void )
{
  TransmitRequest();
  WaitForFirstSensorResponse();
  if( terima data dari sensor pertama )
  {
    WaitForSecondSensorResponse();
    if( terima data dari sensor kedua )
    {
      PerformControlAlgorithm();
      TransmitResults();
    }
  }

FUNGSI ANTARMUKA PENGGUNA

Fungsi ini meliputi antarmuka keypad, LCD, komunikasi RS232 dan server WEB tertanam. Perhatikan kode pseudo berikut…

int main( void )
{
  Initialise();
  for( ;; )
  {
    ScanKeypad();
    UpdateLCD();
    ProcessRS232Characters();
    ProcessHTTPRequests();
  }
// seharusnya tidak pernah sampai disini
  return 0;
}

Ada dua asumsi: Pertama, masukan/luaran komunikasi di-buffer melalui rutin layanan interupsi, sehingga periferal yang terkait tidak perlu melakukan polling (proses menunggu terus menerus). Kedua, fungsi pemanggilan fungsi dalam kalang dikerjakan secepat mungkin sehingga semua syarat pewaktuan dipenuhi.

Categories
Mikrokontroler

Perancangan Aplikasi Real Time (1): Pendahuluan

PENDAHULUAN

Apa yang akan kita bicarakan atau bahas kali ini adalah tentang Real Time Operating System. Apaan? Real Time Operating System? Apa tuch? Oke, sabar dulu sebentar. Real Time Operating System, yang selanjutnya kita singkat saja menjadi RTOS, merupakan sistem operasi untuk aplikasi-aplikasi waktu nyata atau istilah kerennya Real Time Applications, contohnya apa saja? Ya sebagaimana kita jumpai di sekitar kita, seperti handphone (tidak harus smartphone) – bukankah tanpa sistem operasi ketika di-ON-kan tidak akan terjadi apa-apa, padahal kenyataannya HP langsung melakukan ‘booting’ (istilah dalam sistem operasi) beberapa saat, kemudian baru siap kita gunakan – ditandai dengan visualisasi pada LCD-nya, antara lain, kekuatan sinyal, sisa daya baterei, nama provider, jam, tanggal dan lain sebagainya.

Oke, untuk memulai membahas tentang perancangan aplikasi real time dengan sistem operasi, kita mulai dengan kasusnya dulu yang akan dicari solusinya…

STUDI KASUS ATAU APLIKASI

Perhatikan gambar 1 berikut ini..

Gambar 1

Aplikasi akan berjalan pada sebuah sistem (single board) yang berisikan mikrokontroler atau mikroprosesor yang harus melakukan kontrol terhadap suatu proses dan pada waktu bersamaan melakukan akuisisi dan pemantauan/pengontrolan baik secara lokal maupun jarak jauh. Sistem tersebut terdiri dari:

  • Sebuah sistem benam (embedded system) dengan kekuatan suatu mikrokontroler/mikroprosesor;
  • Dua sensor yang terhubung dengan jaringan fieldbus;
  • Sesuatu yang dikontrol (bisa apa saja, motor, pemanas dll), serta dihubungkan pada jaringan fieldbus yang sama;
  • Keypad matriks yang dibaca melalui luaran/masukan;
  • Dua buah indikator LED;
  • Sebuah penampil LCD;
  • Sebuah server web tertanam agar dapat dilakukan pengontrolan jarak jauh (melalui web atau internet);
  • Sebuah antarmuka RS232 agar dapat dihubungkan dengan suatu PDA.

Categories
buku Mikrokontroler

Tutorial Pemrograman Mikrokontroler AVR dengan WinAVR GCC

eBook GRATIS saya yang terbaru (terbit 2010 kemarin). Diterbitkan dalam rangka mencerdaskan kehidupan bangsa Indonesia yang bermartabat.

Silahkan mengunduh DISINI GRATIS.

Apa saja yang dibahas dalam ebook/buku ini?

  • Apakah mikrokontroler itu?
  • Pengetahuan dasar mikrokontroler AVR
    • Memilih AVR yang “benar”
    • Ada apa dengan mikrokontroler AVR ATMega16?
  • Pengenalan Bahasa C untuk mikrokontroler AVR
    • Struktur Penulisan Bahasa C
    • Tipe-tipe data dalam Bahasa C
    • Deklarasi variabel dan konstanta
    • Pernyataan dan fungsi
    • Pernyataan berkondisi dan pengulangan
    • Operasi logika dan bilangan biner
    • Operasi aritmetika
  • Menggunakan AVR Studio dengan WinAVR GCC
  • Masukan/Luaran mikrokontroler AVR
    • Register DDRx, PORTx dan PINx
  • Timer/Counter pada Mikrokontroler AVR
  • Berbagai macam percobaan/latihan dengan metode Learning by Doing.
  • Plus ada bonus2-nya lagi…!
Langsung saja menuju TKP untuk mengunduh ebook GRATIS ini, silahkan…
Categories
Mikrokontroler

Arduino-ku mendukung Berbagai Macam AVR ATMega!!

Apakah saya gak salah baca judul artikel ini? Ya! Anda tidak salah baca! Jika selama ini kita mengenal Arduino hanya mendukung tipe-tipe khusus dari AVR, seperti Mega8, Mega168, Mega328 atau Mega1280, maka dengan melakukan modifikasi pengaturan perangkat keras (hardware) ternyata Arduino (khususnya versi 019, unduh disini) bisa mendukung banyak mikrokontroler AVR ATMega, antara lain: atmega8, atmega16, attiny26, atmega32, atmega32u4, attiny45, atmega64, attiny85, atmega88p, atmega128, atmega165, atmega165p, atmega168, atmega169, atmega324p, atmega328p, atmega644, atmega644p, atmega645, atmega1280, atmega1281, atmega1284p, attiny2313, atmega2560, atmega2561, atmega3290p, atmega8515 dan atmega8535! Perhatikan gambar perbandingan berikut ini…

Gambar Arduino IDE 019 sebelum modifikasi

Gambar Arduino IDE 019 setelah modifikasi

Hah?! Banyak banget! Asik donk, apalagi jika Anda mengikuti ulasan saya tentang mensimulasikan Arduino menggunakan Proteus (baca disini), maka tidak perlu harus menggunakan papan Arduino lagi, sehingga AVR Anda juga tidak akan berkurang karena adanya bootloader, makin asik saja khan? Okey, lantas bagaimana caranya?

Categories
Mikrokontroler

Pengurutan Data menggunakan Mikrokontroler AT89 (8051)

Bagi Anda yang saat ini sedang mengalami kesulitan bagaimana membuat program untuk mengurutkan data yang sudah tersimpan di dalam memori RAM, Anda sedang berada di artikel yang tepat, karena kali ini saya membahas sebuah program (relatif) kecil dalam bahasa Assembly untuk Mikrokontroler AT89 atau kompatibel 8051 untuk mengurutkan data.

Okey, mari kita mulai dengan beberapa deklarasi di awal program….

	ORG  	00H
SIZE  	EQU	10
ARRAY  	EQU 	50H   	;Data starting address
FLAG  	BIT   	00H   	;Exchange logo

Program diawali dengan menentukan alamat awal program yaitu mulai 0x00 (dengan instruksi ORG), kemudian diikuti dengan deklarasi beberapa variabel, yaitu SIZE yang merupakan jumlah data yang akan diurutkan, ARRAY yang merupakan alamat awal data dan sebuah variabel bit FLAG yang akan digunakan sebagai tanda untuk pertukaran data (data exchange).

Categories
Mikrokontroler

Pemrograman dan Simulasi Mikrokontroler AT89 dengan M-IDE Studio MCS-51

Setelah debut best seller buku saya “Belajar Mikrokontroler AT89C51/52/55, Edisi 2” beberapa tahun belakangan ini, banyak yang menanyakan tentang bagaimana melakukan simulasi sedemikian hingga bisa digunakan untuk belajar pemrograman MIkrokontroler AT89, khususnya dalam bahasa Assembly.

Caranya mudah saja, dan hal ini sudah saya sebutkan atau jelaskan dalam buku saya tersebut, yaitu menggunakan TS Control Emulator. Dimana mengunduhnya? Gampang saja, silahkan mengundung program M-IDE Studio MCS-51 disini, yang terbaru sudah dilengkapi (integrasi) dengan TS Control Emulator.

Setelah Anda lakukan instalasi, jalankan program M-IDE tersebut, sebagai contoh tuliskan program assembly pada Gambar 1, yaitu sebuah program yang digunakan untuk membersihkan RAM (dengan memberikan 0xFF pada tiap-tiap lokasi RAM).

Gambar 1

Categories
Mikrokontroler

Flowcode AVR 3.0: Menghitung Sapi!

Kali ini kita akan belajar membuat program menggunakan Flowcode AVR untuk menghitung sapi-sapi kita yang masuk kandang. Caranya bagaimana? Kita gunakan sensor detektor sapi melalui PORT A (yang disimulasikan menggunakan pushbutton) untuk mendeteksi sapi-sapi yang masuk ke kandang. Sensor ini akan memicu proses perhitungan jumlah atau cacah sapi. Sementara ini hasil perhitungan ditampilkan melalui LED pada PORT B, bisa juga melalui 7segmen biar keren, tapi itu entar aja dech.

Silahkan membuat kerangka diagram alir menggunakan acuan Gambar 1. Pada blok Calculation masih kita kosongkan…

Gambar 1

Okey, langkah selanjutnya lakukan klik-ganda pada blok Calculation, sehingga dimunculkan kotak dialog yang ditunjukkan pada Gambar 2.

Gambar 2

Ganti nama “Calculation” (pada Display Name) menjadi “Total Sapi” (tanpa tanda petik). Kemudian lanjutkan menuliskan persamaan untuk menghitung total sapi sebagai berikut: TOTAL = TOTAL + SAPI (pada bagian isian Calculations). Perhatikan Gambar 3.

Gambar 3

Sensor detektor sapi disimulasikan menggunakan tombol tekan atau pushbutton yang dipasang pada PORTA.0. Jika tombol ditekan maka akan menghasilkan nilai 1 yang kemudian disimpan ke dalam variabel SAPI. Dengan demikian, penekanan tombol pada PORTA.0 akan menambah nilai TOTAL sebesar 1. Jika tidak ditekan, ya artinya nilai pada variabel SAPI tetap 0 (nol) dan tidak merubah nilai dari TOTAL, demikian seterusnya.

Klik Variables pada kotak dialog Calculations untuk mulai mendefinisikan variabel-variabel yang terkait. Akan ditampilkan kotak dialog seperti pada Gambar 4.

Gambar 4

Sekarang kita lanjutkan dengan mendefinisikan variabel-variabel yang terkait tersebut. Variabel yang akan kita definisikan adalah TOTAL dan SAPI. Penggunaan kedua variabel ini sudah saya jelaskan sebelumnya, jika belum paham silahkan ditengok lagi, nanti baru kembali lagi kesini…

Categories
Mikrokontroler

Downloader untuk AT89S dan AVR!

Jika sebelumnya banyak yang bertanya tentang downloader untuk AT89S, maka, alhamdulillah, saya sudah mendapatkan sumber informasi untuk rangkaian serta perangkat lunak downloader mikrokontroler AT89 dan sekaligus AVR.

Berikut ini rangkaian (gratis) yang dapat digunakan untuk mendownload program-program AT89S Anda melalui USB. Yang dibutuhkan adalah mikrokontroler AVRTMega8 sebagai kontroler-nya (sama atau mirip dengan USBASP).

ATMega8 memang tidak dilengkapi dengan fasilitas USB sebagaimana seri-seri AT90USB dari Atmel, sehingga program atau firmware USB telah disiapkan (lihat pada bagian Unduh). Firmware ini dibuat oleh Fischl dan tersedia di http://www.fischl.de/usbasp/, hanya saja firmware ini hanya mendukung untuk downloade mikrokontroler AVR saja (lihat ulasan-nya disini), sehingga perlu dimodifikasi sehingga bisa mendukung mikrokontroler seri AT89S.

Categories
Mikrokontroler

Flowcode AVR 3.0: Aplikasi dengan LCD 2×16

Wow enaknya belajar pemrograman aplikasi mikrokontroler AVR menggunakan Flowcode 3 for AVR sebagaimana sudah saya tulis artikel-nya sejak awal. Kali ini dicoba membuat aplikasi dengan tampilan LCD 2×16, hanya sekedar menampilkan dua kalimat, masing-masing di baris-1 dan baris-2, diagram atau flow-nya ditunjukkan pada Gambar 1 (termasuk hasil simulasinya).

Gambar 1

Hasil kompilasi kedalam Bahasa C saya tunjukkan satu persatu. Pada bagian pertama, sebagaimana ditunjukkan pada Gambar 2, merupakan deklarasi fungsi-fungsi makro untuk menangani LCD (baris 66 – 74). Terdapat 9 macam fungsi makro LCD dan hanya 3 yang akan digunakan dalam program, yaitu:

  • FCD_LCDDisplay0_Start(), digunakan untuk inisialisasi LCD;
  • FCD_LCDDisplay0_PrintString(char* String, char MSZ_String), digunakan untuk menuliskan string, dan
  • FCD_LCDDisplay0_Cursor(char x, char y), digunakan untuk menempatkan kursor dengan posisi kolom,baris).

Gambar 2