Categories
Mikrokontroler

Membuat Aplikasi Mikrokontroler AVR/AT89: Khusus Pemula!

versi 1.2 (14 Desember 2009)

Banyak komentar,pertanyaan dan saran masuk melalui SMS, email, omong langsung agar saya membuat sebuah tulisan atau artikel tentang bagaimana cara membuat aplikasi mikrokontroler AVR maupun AT89 dari nol. Okey dech, kali ini saya berikan jawabannya…

Baiklah, untuk memudahkan saya menjelaskan dari ‘nol’, ada baiknya Anda perhatikan dulu diagram alir pada Gambar 1 (jika kurang jelas, silahkan di-klik aja yach)…

Gambar 1

Nach, berdasar diagram alir tersebut, semuanya berawal dari MASALAH, atau bisa juga Anda sebut PROYEK, KASUS atau apa saja yang Anda suka selama artinya adalah sesuatu yang ingin dicari, dibuat solusinya. Lebih tepatnya, pada tahap awal yang perlu dilakukan adalah IDENTIFIKASI MASALAH, persis atau detilnya bagaimana, misalnya…

Categories
Mikrokontroler

Mengenal System Clock pada Mikrokontroler AVR

Tulisan ini sengaja saya buat karena beberapa waktu yang lalu dua mikrokontroler saya (semuanya ATMega32, masing-masing dalam kemasan SMD dan PDIP) menjadi korban ketidak-tahuan saya tentang otak-atik System Clock atau FUSE bit pada mikrokontroler AVR.

Perlu diketahui bahwa setiap mikrokontroler AVR memiliki fasilitas untuk memilih sumber clock atau detak dengan banyak alternatif pilihan. Berbeda dengan keluarga AT89, keluarga AVR memberikan opsi pilihan sumber clock untuk flkesibilitas penggunaan, bukan untuk menyulitkan penggunaan. Jika siapapun Anda yang saat ini sedang terlibat dengan aplikasi-aplikasi mikrokontroler AVR dan tidak pernah peduli dengan system clock, atau dengan kata lain tidak pernah otak-atik FUSE bit, dipastikan kristal yang Anda pasang berapapun aja nilainya tidak ada gunanya sama sekali! Loch kok bisa? Ya karena default dari pabriknya (http://www.atmel.com) adalah sesuai dengan paragraf yang mereka tulis di datasheet-nya:

The device is shipped with CKSEL = “0001” and SUT = “10”. The default clock source setting is therefore the 1 MHz Internal RC Oscillator with longest startup time. This default setting ensures that all users can make their desired clock source setting using an In-System or Parallel Programmer.

Okey? Sudah jelas? Hanya 1 MHz internal saja clock-nya, kalau gak percaya silahkan cabut saja kristal Anda dan biarkan mikrokontroler AVR Anda bekerja dengan baik tanpa kristal (beberapa teman yang saya sarankan hal tersebut sempat kaget juga). Jadi sudah capek-capek ngitung reload, timer dan lain sebagainya ternyata hanya bekerja di 1 MHz saja secara internal. So, bagaimana caranya agar bisa menggunakan kristal eksternal atau internal yang lebih besar dari 1 MHz?

Categories
Mikrokontroler

Min MCS51/AVR dan Min AVR dari ADP (New!)

Jika selama ini Anda penggemar mikrokontroler keluarga MCS51 (termasuk AT89 dan ahli warisnya yang cukup banyak variannya (http://www.atmel.com) atau barangkali penggemar buku “Belajar Mikrokontroler AT89C51/52/55” yang sangat terkenal itu, maka Anda mungkin bertanya-tanya, adakah downloader, selain easy downloader, yang praktis, portabel, tidak memerlukan catu daya tambahan dan kalau perlu ada fasilitas tambahan lainnya, harganya murah dan dijual di Indonesia?? Saat ini jawaban saya ada adalah: ADA dan baru saja di launch dari ADP Production yang kantornya berpusat di Malang, Jawa Timur – Indonesia.

Min MCS51/AVR
Min MCS51/AVR
Min AVR (tidak termasuk mikrokontroler-nya)
Min AVR (tidak termasuk mikrokontroler-nya)
Categories
buku Mikrokontroler

Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi, Edisi 2

Buku ini ditujukan bagi mereka yang ingin memanfaatkan mikrokontroler tipe CISC yaitu AT89C51/52/55 (seri AT89 dari Atmel, Inc.) dalam aplikasi pengontrolan elektronik, termasuk untuk mendapatkan income atau penghasilan. Selain itu juga dalam rangka memperkaya pustaka nasional dalam bidang elektronika maupun sistem elektronika.

Buku yang terdiri dari 7 bagian ini mengupas tuntas AT89C (sudah obsolette diganti dengan seri AT89S) atau AT89S mulai dari awal tentang arsitektur dasar keluarga AT89 atau seri MCS-51, set instruksi (termasuk cara pengeditan program hingga siap untuk disimpan ke dalam Flash PEROM AT89C), port paralel (termasuk karakteristik dari masing-masing port) dan aplikasinya, karakteristik timer (pewaktu) dan counter (pencacah), port serial dan penanganan sistem interupsi. Semua disertai dengan contoh aplikasi dan penjelasan dengan bahasa yang mudah dipahami.

Program mikrokontroler disimpan ke dalam Flash PEROM-nya AT89, sekaligus bisa juga dihapus, keunggulan ini dapat dimanfaatkan sebagai sarana belajar mikrokontroler, karena tidak memerlukan memori program luar seperti EPROM maupun EEPROM, yang membutuhkan peralatan pengisian dan penghapusan yang merepotkan. Sehingga pada bagian terakhir dibahas secara singkat pembuatan alat untuk mengisi (sekaligus menghapus) program dari mikrokontroler AT89 menggunakan Pemrogram Easy Downloader 2.2, selain itu buku ini dilengkapi dengan CDROM yang berisi dokumentasi lengkap Pemrogram Easy Downloader 2.2 dan program pendukung untuk kompilasi dan informasi lainnya.

Alternatif lain untuk mengisi program ke mikrokontroler AT89S adalah dengan rangkaian dan program ISP (In System Programming) sebagaimana rangkaiannya bisa dilihat disini dan programnya bisa diunduh disini.

Anda bisa mendownload daftar isi dan/atau contoh bab yang ada di buku ini… monggo…

KLIK DISINI UNTUK PEMBELIAN ONLINE

Categories
Mikrokontroler

C vs Assembly MCS-51: Kasus LED Flip-flop

Jika Anda memiliki dan sudah membaca atau mempelajari buku saya (Belajar Mikrokontroler AT89C51/52/55), tentunya Anda masih inget dengan program pertama yang saya tulis dengan tujuan untuk menghidupkan dan mematikan LED secara flip-flop atau bergantian yang terpasang di P1. Berikut saya sertakan lagi program ASM-nya:

;-- BAB3_01.ASM -----------------------------------------------------------
;
; Lampu flip-flop pada Port 1
;
;--------------------------------------------------------------------------
        ORG   0H        ; program ditempatkan pada lokasi 0000H
;
MULAI:  MOV   P1,#10101010B     ; LED P1.4 s/d P1.7 nyala (heksa= #0FH)
        ACALL DELAY             ; lakukan penundaan sesaat (sub. DELAY)
        MOV   P1,#01010101B     ; LED P1.0 s/d P1.3 nyala (heksa= #0F0H)
        ACALL DELAY             ; lakukan penundaan sesaat (sub. DELAY)
        SJMP  MULAI             ; ulangi lagi dari awal
;
;-subrutin DELAY-----------------------------------------------------------
;
; subrutin ini hanya sekedar melakukan penundaan sesaat dengan cara
; mengulangi proses (pengurangan isi register) hingga dicapai suatu
; kondisi tertentu
;
;--------------------------------------------------------------------------
DELAY:  MOV   R0,#5H            ; Isi Register R0 dengan 5 (5x ulang)
DELAY1: MOV   R1,#0FFH          ; Isi Register R1 dengan 255 (255x ulang
DELAY2: MOV   R2,#0             ; Isi register R2 dengan 0 (256x ulang)
        DJNZ  R2,$              ; R2=R2-1, jika R2 belum 0 ulangi lagi
        DJNZ  R1,DELAY2         ; R1=R1-1, jika R1 belum 0 ulangi DELAY2
        DJNZ  R0,DELAY1         ; R0=R0-1, jika R0 belum 0 ulangi DELAY1
        RET                     ; Kembali ke pemanggil subrutin DELAY

        END
Categories
Mikrokontroler

C vs Assembly MCS-51: Kasus unik Aritmetika!

Beberapa saat yang lalu saya sempat mencoba sebuah kompiler MikroC dari mikroelektronika yang betul-betul hebat, karena hasil kompilasinya yang berupa ASM dan LST bisa saya lihat langsung. Dan kabar baiknya adalah, saya bisa membandingkan antara program C yang saya buat dan hasil kompilasi ASM/LST yang dihasilkan.

Sebagai kasus yang sangat unik dan membuat saya ketawa terbahak-bahak setelah menyaksikan hasil kompilasi ASM-nya adalah masalah aritmetika yang melibatkan operasi penjumlahan, pengurangan, pembagian dan sisa pembagian (modulus). Okey, agar Anda tidak bingung dibutuhkan syarat minimal tahu bahasa C dan bahasa ASM untuk MCS-51 untuk memahami listing-listing program berikut ini.

Categories
Mikrokontroler

Tutorial AT89: RTC DS1307 (64 x 8 Serial Real-Time Clock)

RTC yang kita bahas kali ini adalah RTC dengan antarmuka I2C, yaitu DS1307. Artikel yang membahas RTC lain secara lengkap, DS12C887, yang menggunakan antarmuka paralel dan penggunaan bahasa assembly, bisa Anda baca mulai dari Pendahuluan, Register Data/Kontrol, dan Contoh Aplikasi.

Okey… sekarang kita lihat dulu fitur dari DS1307:

  • Real-time clock (RTC) meyimpan data-data detik, menit, jam, tanggal, bulan, hari dalam seminggu, dan tahun valid hingga 2100;
  • 56-byte, battery-backed, RAM nonvolatile (NV) RAM untuk penyimpanan;
  • Antarmuka serial Two-wire (I2C)
  • Sinyal luaran gelombang-kotak terprogram (Programmable squarewave);
  • Deteksi otomatis kegagalan-daya (power-fail) dan rangkaian switch;
  • Konsumsi daya kurang dari 500nA menggunakn mode baterei cadangan dengan operasional osilator;
  • Tersedia fitur industri dengan ketahana suhu: -40°C hingga +85°C
  • Tersedia dalam kemasa 8-pin DIP atau SOIC

Sedangkan daftar pin DS1307:

  • VCC – Primary Power Supply
  • X1, X2 – 32.768kHz Crystal Connection
  • VBAT – +3V Battery Input
  • GND – Ground
  • SDA – Serial Data
  • SCL – Serial Clock
  • SQW/OUT – Square Wave/Output Driver
Categories
Mikrokontroler

Tutorial Mikrokontroler AT89: Masukan dan Luaran (I/O)

Pada mikrokontroler Atemal keluarga AT89C (obsollete) atau AT89S, Port 0 tidak memiliki pullup internal. Pullup FET yang berada di dalam penggerak luaran P0 digunakan hanya pada saat port mengirimkan logika ‘1’ selama pengaksesan memori eksternal. Selain dari itu, pullup FET akan selalu mati. Konsekuensinya, jalur-jalur P0 yang digunakan sebagai jalur luaran merupakan saluran terbuka (open drain). Penulisan ‘1’ ke bit pengancing membuat kedua FET keluaran menjadi mati, dengan demikian kondisi kaki-kakinya menjadi mengambang (float). Dalam kondisi seperti ini, pin dapat digunakan sebagai masukan berimpedansi tinggi.

Categories
Mikrokontroler

Up-Down Counter menggunakan uC AT89

Sebenarnya membuat aplikasi pencacah naik-turun (up-down counter) menggunakan AT89 adalah hal yang aneh dalam dunia elektronika digital. Lho kok? La ya… lha wong tinggal pake rangkaian dengan IC TTL (seri 74LS) saja sudah bisa, kok ini pake programming mikrokontroler segala… Lha kalo untuk belajar pemrograman mikrokontroler gimana? O ya silahkan saja… itu jadi gak aneh lagi… he he he…

Categories
Mikrokontroler

Pemrograman Mikrokontroler dalam Bahasa Tingkat-Tinggi

Pembuatan program mikrokontroler dalam bahasa tingkat-tinggi (high-level language, disingkat HLL), misalnya bahasa ‘C’ atau ‘BASIC’, memungkinkan kita mengurangi waktu pengembangan secara signifikan jika dibandingkan dengan Bahasa Assembly. Ada juga yang mengatakan, seorang perancang yang sudah beperngalaman bisa menuliskan sejumlah baris kode-kode yang sama per hari baik dalam C dan Assembly. Namun perlu diingat bahwa, sebaris kode dalam C sama dengan sejumlah kode atau baris dalam Assembly.

Biasanya, sebuah program yang ditulis dalam HLL akan lebih terstruktur dibandingkan program yang sama yang ditulis dalam Assembly. Dengan demikian, akan lebih mudah melakukan pelacakan (debugging) dalam HLL.

Kebanyakan arsitektur mikrokontroler 8-bit dilengkapi dengan sebuah kompailer. Bagaimanapun juga, ada perbedaan besar dalam bagaimana efisiensi arsitektur untuk HLL, dan bagaimana kode-kode C disusun agar efisien untuk suatu arsitektur mikrokontroler tertentu. Ada yang mengatakan bahwa arsitektur berbasis akumulator, seperti 8051 dari Intel, bekerja dengan baik menggunakan variabel-variabel global, sedangkan arsitektur berbasis register, seperti AVR-nya Atmel, bekerja dengan baik menggunakan variabel-variabel lokal.