Kamis, 25 Maret 2010

KAuC : Komunikasi dgn Parallel

.
Silahkan baca posting sebelumnya.

Setelah KAuC dengan UART selanjutnya dengan parallel.
KAuC dengan parallel lebih mudah dan lebih cepat dibandingkan dengan UART tetapi cukup rumit untuk dijelaskan sehingga tampak lebih sulit. Hal ini karena KAuC dgn parallel bisa menggunakan data ASCII, heksadesimal, data 1 byte, 2 byte, 1 bit, 2 bit, 3 bit, 4 bit, 5 bit, 6 bit, 7 bit, 8 bit, dst dan tergantung programmer sehingga bisa banyak cara yang berbeda.

Beberapa contoh :
  • 2 Byte (16 pin) : anda ingin KAuC untuk pembacaan suhu sistem mencapai 6500° C (Bah serem..^^) yaitu hingga 13 bit, karena 1 Byte (8 bit) maksimum bernilai 255 sehingga ditambahkan bit lain hingga memakan 13 pin MCU, jika ditambahkan Handshake RD, WR, dan CS maka memakan 16 pin (2 byte).
  • 1 Byte (8 pin) : Seperti pada karakter LCD 16x2.
  • 3 pin : anda ingin MCU Master mengolah arah jalan mobil robot dan MCU Slave menerima data dan menggerakkan motor DC. Master hanya mengirim dan Slave hanya menerima, Data komunikasi sbb : 000 = stop, 010 = Maju Lurus, 001 = belok kanan, 100 = belok kiri, 111 = mundur, dst.
Seperti biasa, pastikan Hardware yang dibuat telah benar dan tidak error lagi sehingga hanya fokus masalah Coding saja, Langkah ini adalah langkah awal dan penting untuk memperkecil kesalahan.
Karena mode parallel, pengecekan MCU cukup dengan memprogram Running LED atau Led kedap-kedip bergantian dan untuk cek input menggunakan dip switch atau saklar togle.

Jangan lanjut sebelum proses pengecekan Parallel benar-benar berhasil.

Protokol dan Komunikasi Data ASCII atau Heksadesimal
Jika menggunakan interface Parallel komunikasi data bisa menggunakan data Heksadesimal ataupun karakter ASCII akan tetapi (relatif) lebih mudah dan lebih cepat menggunakan komunikasi bit dan Heksadesimal.
Menentukan protokol komunikasi data bisa sesuai keinginan anda berdasarkan sistem yang dikendalikan dan juga jangan lupa pada Master dan Slave terdapat kesesuaian protokol-nya. Oleh sebab itu beda kepala bisa berbeda protokol yang diinginkan.

Berikut protokol dengan contoh kasus pengendalian motor servo oleh Slave dengan data sudut pergerakan setiap servo ditentukan oleh Master.

Dari gambar, Master sebagai Main Processor yaitu "pemikir" yang berfungsi membaca sensor mengolah dan mengatur nilai sudut-sudut pergerakan setiap motor Servo, sedangkan Slave hanya sebagai penggerak motor servo pada tujuan sudut yang telah diberikan oleh Master.
Master hanya pemberi data sedangkan Slave hanya penerima data. Komunikasi data yang digunakan adalah 4 bit dengan 3 pin sebagai alamat motor Servo dan 1 pin untuk nibble atas dan nibble bawah. Pengertian sederhana nibble adalah setengahnya dari byte, jika byte 8 bit maka nibble 4 bit. Bit 0-3 disebut nibble bawah dan bit 4-7 disebut nibble atas.
Beberapa link tentang penjelasan Nibble dalam byte.
http://memo.tv/bits_bytes_nibbles_binary_and_hex
http://en.wikipedia.org/wiki/Nibble

Komunikasi Data.
Berdasarkan gambar atau rancangan diatas dan penggunaan pin pada port mikrokontroller maka :
Pin 0-2 = Alamat motor Servo.
Pin 3 = Nible bawah (0) / Nible atas (1)
pin 4-7 = Nilai sudut motor Servo

Cara kerja coding Master adalah sebagai berikut :
  • Kondisi default PORT_servo = 0x00 = 0b00000000, yang berarti tidak ada data dan tidak terjadi komunikasi.
  • Seluruh data sudut servo berada pada variabel master_sudut yaitu sebanyak 7 servo.
  • Semua data sudut motor servo, baik yang nilai sudutnya berubah maupun tetap akan diberikan kepada slave melalui perintah perulangan for loop.
  • Data yang pertama dipersiapkan (tapi belum diberikan) adalah alamat motor servo yaitu dimulai dari motor servo 1 (terakhir motor servo 7).
  • PORT_nibble (PORTC.3) berlogika 1 yang berarti nibble atas dulu yang diberikan, bit 7 - bit 4.
  • Berikan data nibble atas + alamat dan tunggu 50 ms (bisa diubah sesuai keinginan, semakin cepat semakin baik).
  • PORT_nibble (PORTC.3) berlogika 0 yang berarti nibble bawah diberikan, bit 3 - bit 0.
  • Berikan data nibble bawah + alamat dan tunggu 50 ms (bisa diubah sesuai keinginan, semakin cepat semakin baik).
  • Jika semua data sudut servo sudah diberikan kondisi PORT_servo = 0x00 = 0b00000000.
Cara kerja coding Slave adalah sebagai berikut :
  • Kondisi default PIN_servo = 0xff = 0b11111111, yang berarti aktif low.
  • Jika PIN_servo tidak sama dengan 0x00 berarti Master memberikan data servo dan terjadi komunikasi.
  • Data yang bertama diolah adalah alamat servo yang akan diberikan nilai sudut dan disimpan pada variabel add_srv.
  • Deteksi PIN_nible jika LOW (0) maka data yang diterima adalah nibble bawah dan jika HIGH (1) data yang diterima adalah nibble atas, simpan di variable nible_high dan nible_low.
  • Alamat servo sudah diterima nible atas dan nible bawah sudah diterima, selanjutnya menggabungkan setiap data.
  • Data tersebut olah dan berikan ke setiap motor servo yang ada.
Wow...terlihat rumit...
Memang terlihat rumit karena "maksa" 1 port, jika menggunakan 2 PORT (Misal PORTB dan PORTC) dengan PORTB handshake atau alamat kemudian PORTC sebagai data, akan lebih sederhana lagi programnya.
Bayangkan, anda bisa mengendalikan 255 motor servo tanpa mengubah protokol program untuk komunikasi data.
Jika menggunakan UART semakin banyak motor servo, protokolnya semakin banyak dan panjang serta semakin ribet.
Sebenarnya tetap tergantung codingnya... Xixixixixixiixii... ^^v

Semoga Manfaat ;)

Senin, 22 Maret 2010

KAuC : Komunikasi dgn UART

.
Silahkan baca posting sebelumnya.

Sebelum membahas jenis komunikasi antar MCU yang lebih sulit, maka saya bahas yang paling mudah dulu yaitu Komunikasi antar MCU menggunakan UART. Pastikan Hardware yang dibuat telah benar dan tidak error lagi sehingga hanya fokus masalah Coding saja, Langkah ini adalah langkah awal dan penting untuk memperkecil kesalahan.
Berikut saya bahas singkat pengecekan hardware untuk KAuC dengan UART.

Perancangan dan Pengecekan Hardware
1. Buat 2 buah rangkaian MCU (Microcontroller Unit).
Buat 2 buah rangkaian MCU ATmega8535. MCU pertama dijadikan Master dan MCU kedua dijadikan Slave.

2. Buat 1 buah rangkaian konverter TTL-RS232 jika pada MCU belum tersedia.
Rangkaian Konverter TTL-RS232 ini digunakan hanya untuk pengecekan dengan komputer dan jika anda baru membuat, sebaiknya modular (dapat dipisahkan) dari MCU tetapi beberapa jenis produk yang ada dipasaran telah mencakup konverter TTL-RS232 pada board PCB-nya.
Jika modular, jangan lupa modul TTL-RS232 butuh supply 5 Vdc.

3. Buat 2 buah rangkaian Power supply untuk setiap MCU.
Sebaiknya dibuat 2 Supply sehingga 1 MCU mendapatkan 1 supply. Penggunaan 1 buah Power supply yang di share memang menghemat biaya dan waktu tetapi kadang bisa menyebabkan kurang pahamnya mengenai KAuC. Dengan 2 buah supply maka Master dan Slave dapat dipisahkan cukup jauh sehingga mengetahui konsep KAuC untuk jarak jauh.

4. Cek komunikasi UART MCU Master dan Slave.
Jadikan MCU pertama sebagai Master dan program Master tersebut untuk terus menerus mengirim kata "MASTER" lihat hasilnya pada komputer dengan menggunakan konverter TTL-RS232. Program juga agar Master dapat menerima data dari komputer lalu menampilkannya misalnya ke LCD atau ditampilkan kembali ke komputer.

Jadikan MCU kedua sebagai Slave dan program Slave tersebut untuk terus menerus mengirim kata "SLAVE" lihat hasilnya pada komputer dengan menggunakan konverter TTL-RS232. Program juga agar Slave dapat menerima data dari komputer lalu menampilkannya misalnya ke LCD atau ditampilkan kembali ke komputer.

Jangan lanjut sebelum proses tersebut benar-benar berhasil.

Komunikasi Data ASCII atau Data Heksadesimal
Jika menggunakan interface UART komunikasi data bisa menggunakan data Heksadesimal ataupun karakter ASCII akan tetapi untuk fleksibilitas yang tinggi sebaiknya menggunakan data karakter ASCII.
Dengan komunikasi data menggunakan karakter ASCII anda dapat memperoleh beberapa keuntungan, antara lain :
  • Komunikasi dengan karakter ASCII mudah untuk dipahami karena telah dalam bentuk karakter huruf dan angka bukannya data heksadesimal yang perlu di konversi lagi.
  • Karakter ASCII telah dikenali oleh komputer sehingga dapat langsung ditampilkan menggunakan Hyperterminal sebagai koreksi.
  • Penggunaan karakter ASCII bisa mempermudah jika dihubungkan dengan software seperti Delphi, VB, C++, Visual C, dll.
  • Modifikasi maupun pengembangan komunikasi data selanjutnya mudah dilakukan dengan cepat.
  • Pengguna atau programmer lainnya akan dengan mudah memahami cara penggunaan perangkat / hardware yang anda buat.
Protokol Komunikasi Data
Menentukan protokol komunikasi data bisa sesuai keinginan anda berdasarkan sistem yang dikendalikan dan juga jangan lupa pada Master dan Slave terdapat kesesuaian protokol-nya. Oleh sebab itu beda kepala bisa berbeda protokol yang diinginkan.
Berikut protokol dengan contoh kasus pengendalian motor servo oleh Slave dengan data sudut pergerakan setiap servo ditentukan oleh Master.

Dari gambar, Master sebagai Main Processor yaitu "pemikir" yang berfungsi membaca sensor mengolah dan mengatur nilai sudut-sudut pergerakan setiap motor Servo, sedangkan Slave hanya sebagai penggerak motor servo pada tujuan sudut yang telah diberikan oleh Master.
Beberapa protokol bisa dirancang untuk sistem tersebut. Tapi kali ini hanya transfer data Streaming saja yang akan saya bahas.

Transfer data Streaming.
Protokol ini yang paling sederhana serta paling cepat (untuk format ASCII). Cara ini yaitu Master mengirim data sudut pergerakan untuk seluruh motor servo secara sekaligus dalam satu waktu, sehingga Slave hanya sebagai penerima data.

Motor servo pada Slave diberi nama yang unik dan berbeda-beda. Jika pada Slave tidak diketahui berapa motor servo yang akan dipasang tetapi yang pasti jumlah maksimum motor servo pada Slave adalah sebanyak total pin I/O Slave dikurangi pin Rx dan Tx.
Karena MCU ATmega8535 maka maksimum motor servo adalah 32 pin - 2 pin = 30 pin atau 30 Motor Servo.

Selanjutnya setiap motor servo diberi alamat berupa huruf yang berbeda, Misal motor servo 1 = 'A', motor servo 2 = 'B', motor servo 3 = 'C', motor servo 4 = 'D', motor servo 5 = 'E' .... , dst (Lihat Tabel ASCII). Dan komunikasi sudutnya berupa angka dengan digit bersesuaian seperti '120', '85', '9', ' 155', dst. Tambahkan karakter akhir data untuk mempermudah misalkan karakter ';'.
Dari alamat dan komunikasi sudut serta karakter akhir maka format Protokol Streaming yang dikirim Master ke Slave tampak seperti gambar disamping.


Semoga Manfaat ;)

Jumat, 19 Maret 2010

KAuC : Syarat-syarat Interface Perangkat

.
Silahkan Baca :
KAuC : Introduction Part I
KAuC : Introduction Part II

Agar komunikasi antar perangkat dapat terjadi maka beberapa persyaratan harus terpenuhi. Jika tidak maka komunikasi data bisa rusak atau komunikasi tidak terjadi bahkan perangkat yang berkomunikasi bisa saling merusak.
Kali ini hanya fokus komunikasi antar mikrokontroller.

Syarat-Syarat KAuC
Beberapa syarat KAuC dapat terjadi antar lain :
  1. Level tegangan antar MCU yang berkomunikasi harus sama.
  2. Kecepatan transfer data (Baudrate) sama, untuk komunikasi TWI atau SPI maka kecepatan SCK Master tidak boleh cepat dari kecepatan SCK Slave.
  3. Salah satu mengirim saja dan yang lainnya menerima saja, untuk Full Duplex bisa mengirim dan menerima sekaligus.
  4. Protokol komunikasi data yang bersesuaian antar MCU.
  5. Terdapat Handshake (Jabat Tangan) sebagai indikator komunikasi data, bisa berupa pin atau karakter HandShake.
  6. (Optional) terdapat CRC (Cyclic Redundancy Check) setiap akhir komunikasi data.
1. Level tegangan antar MCU yang berkomunikasi.
Jika 2 buah MCU atau antar perangkat terhubung untuk komunikasi data maka level tegangannya harus sama, apakah menggunakan level TTL(Transistor Transistor Logic), Level RS232, RS485, dll.

Baca : www.allaboutcircuits.com
Jika level tegangan dan jenis yang digunakan berbeda maka data yang dikomunikasikan bisa berubah (data error) bahkan bisa merusak perangkat yang berkomunikasi.




Data Error, Misal :
MCU Master berkomunikasi dengan level TTL yang memiliki range 0 - 5 Vdc sedangkan Slave dengan level TTL range 0 - 3,3 Vdc, data bisa saja error karena Slave tidak mampu memberikan logika 1 (hingga 5 Vdc) karena level maksimumnya 3,3 Vdc.
Tapi tampak pada gambar bahwa level TTL untuk Vih (V Input High Level) yang mendeteksi logika 1 minimal pada level 2,0 Vdc. (Jadi error-nya mungkin jarang).

Merusak MCU, Misal :
MCU Master berkomunikasi dengan level TTL yang memiliki range 0 - 5 Vdc sedangkan Slave dengan level RS232 dengan range ±25 Vdc maka Slave dapat merusak Master karena level tegangan mencapai +25 Vdc hingga -25 Vdc.

2. Kecepatan Transfer Data.
Untuk komunikasi data UART tentu saja Baudrate Master dan Slave harus sama jika tidak, data yang dikomunikasikan akan mengalami error. Sedangkan untuk SPI atau TWI maka kecepatan sinyal SCK (Serial Clock) Master maksimal sama (tidak boleh lebih besar) dengan kecepatan Clock MCU Slave. Selain itu komunikasi parallel juga kecepatan Clock Master tidak boleh lebih besar dari kecepatan Clock Slave.

3. Salah Satu Mengirim dan Lainnya Menerima.
Agar komunikasi data tidak membingungkan maka sebaiknya salah satu mengirim dan yang lainnya menerima pada satu waktu, jika diinginkan sebaliknya maka harus ada sinyal atau data HandShake yang memicu pertukaran fungsi yaitu yang semula mengirim jadi penerima dan yang semula penerima jadi pengirim.

Apabila mendukung fungsi Full Duplex dan dalam hal tertentu mewajibkan komunikasi input output bersamaan maka Mengirim dan Menerima dapat dilakukan bersamaan.

4. Protokol Komunikasi Data.
Jika anda mengkases perangkat yang tinggal pakai, maka programmer mau tidak mau harus mengikuti protokol yang telah dibuat oleh perancang produk, tetapi untuk KAuC protokol dapat anda rancang sesuka anda selama anda memahami protokol tersebut dan antar Master dan Slave telah terjadi kesepakatan Protokol komunikasi data.
Protokol bisa mencakup panjang data, jenis transfer data, Command-command komunikasi, Operational Code, dll.
Link : www.freescale.com, www.microchip.com

5. HandShake (Jabat Tangan)
HandShake atau Jabat tangan berfungsi sebagai tanda serah terima data dan pergantian fungsi. Handshake bisa berupa pin (data 1 bit) maupun data heksa desimal / ASCII (data 8 bit).
HandShake digunakan sebagai indikator bahwa 1 data telah diberikan atau diterima dan siap melanjutkan proses selanjutnya.

HandShake Pin CS, RD, dan WR :
Jika Master mengaktifkan pin CS kemudian diikuti WR berarti memberitahu ke Slave bahwa Master mengirim 1 data dan Slave harus menerima 1 data.
Jika Master mengaktifkan pin CS kemudian diikuti RD berarti memberitahu ke Slave bahwa Master Meminta 1 data dan Slave harus mengirim 1 data.
Pin CS diaktifkan saat komunikasi 1 data akan dimulai dan dimatikan saat komunikasi 1 data telah selesai.

Misal HandShake data 1 Byte ASCII / Heksadesimal :
Data 2 Byte = 1 Byte awal sebagai command dan 1 byte akhir sebagai data.
Jika Master mengirim data heksadesimal 0x57 atau karakter 'W' (Write) maka Slave siap menerima 1 data yang mengikuti karakter 'W' tersebut.
Jika Master mengirim data heksadesimal 0x52 atau karakter 'R' (Read) maka Slave siap memberikan 1 data setelahnya.
Link : Tabel ASCII.

6. Pengecekan Data Error atau CRC
Ini adalah optional atau pilihan yang berarti bisa digunakan atau tidak, tapi beberapa kondisi wajib digunakan seperti pada transfer data pada VCD, FlashDisk, dll.
Lebih lengkap baca di wikipedia atau search di google.


Syarat Interface KAuC selesai.
Semoga Manfaat ;)

Rabu, 17 Maret 2010

KAuC : Memilih Interface antar MCU

.
Silahkan Baca :
KAuC : Introduction Part I
KAuC : Introduction Part II

Menurutku komunikasi data antar MCU, Multi MCU, dan Multi Device, memiliki beberapa perbedaan tetapi kali ini akan saya bahas hanya antar MCU saja.

Memilih Interface KAuC
Menurut anda jika ingin 2 buah MCU saling berkomunikasi maka jenis interface mana yang anda pilih : Parallel 8 bit atau 4 bit, SPI / TWI, I2C, UART, atau USRT. pilih yang mana?
Jawaban bijak dan klise biasanya, "Sesuaikan dengan kebutuhan dan sistemnya ?" meskipun kurang memberikan jawaban (cape deee...) tetapi memang seperti itu jawabannya.

Tentukan dahulu kebutuhan sistem anda dengan berbagai pertanyaan seperti berikut :
  • Mau menggunakan mikrokontroller apa ? Berdasarkan memori, Kecepatan eksekusi, atau banyak Port.
  • Apakah komunikasi / interface dengan komputer ? atau nantinya bisa interface dgn komputer ?
  • Membutuhkan transfer data yang sangat cepat, cepat, lambat, sangat lambat, atau tidak tahu ?
  • Jenis transfer Byte atau Bit, berapa Byte atau bit ?
  • Komunikasi berupa data Heksadesimal atau berupa data ASCII ?
  • Apakah Interface dengan Sensor atau IC lain dengan tipe I2C, SPI, 1-Wire, 2-Wire ?
  • Fleksibilitas hardware kedepannya apakah diperlukan ?
  • dsb.. (cari n catat yang banyak).
Dari berbagai pertanyaan dapat dirancang dengan tepat seperti apa hardware yang akan dibuat, jenis interface yang digunakan, dan rancangan kedepannya seperti apa, dan agar mudah dipahami sebaiknya diberikan contoh kasus.
Misalkan sistem rancangan membutuhkan + pembagian PORT-nya:
  • PORTA =>> Keypad matriks 4x4
  • PORTB =>> LCD karakter 16x2
  • PORTD.0 + D.1 =>> Interface UART dgn komputer.
  • PORTD.2 = >> Sensor Encoder.
  • PORTD.4 =>> Motor DC (1 arah saja) + Driver
  • PORTD.5 + D.6 + D.7 =>> IC digital RTC DS1302 dan IC Serial EEPROm AT93C66
Nah dari pembagian rancangan Port tersebut maka penjelasannya :

Pin Rx dan Tx sebenarnya sangat baik untuk komunikasi antar MCU karena sangat mudah tetapi pin ini juga WAJIB digunakan untuk komunikasi dengan komputer secara serial maupun USB (dengan konverter). Dan saat ini merupakan hal umum dan nilai tambah jika hardware-nya dapat berkomunikasi dengan komputer. Oleh sebab itu gunakan pin ini jika terpaksa.
Pilihan "sedikit tepat" dan "kurang bijak" adalah dengan menggunakan mikrokontroller yang memiliki 2 buah pin Rx dan Tx (Rx0, Tx0 dan Rx1, Tx1) seperti pada ATmega128. Untuk beberapa aplikasi sederhana jika anda menggunakan ATmega128 diumpamakan memberikan Mobil ke anak SD yaitu terlalu berlebihan (kalo kaya si serah aja) padahal fungsi yang digunakan hanya sederhana.

Untuk Mikrokontroller gunakan ATmega8535 (mikrokontroller 8 bit) , mikro ini lebih dari cukup untuk banyak aplikasi. SPI pada ATmega8535 menggunakan Pin MOSI, MISO, SCK dan SS pada PORTB sehingga SPI tidak bisa digunakan.

Dari pemetaan port terhadap perangkat diatas maka PORTC belum digunakan, sehingga ada beberapa pilihan : Parallel 4 bit (8 bit tidak bisa karena pin handshake dibutuhkan), TWI (ada pin SDA dan SCL), dan I2C.
Karena hanya antar MCU dan bukan multi MCU maka I2C tidak dipilih selain itu I2C sebaiknya digunakan hanya untuk mengakses Chip IC yang memang dikhususkan I2C saja untuk antar MCU agak repot. Tinggal TWI dan Parallel 4 bit.

Jika memilih antara TWI dan Parallel 4 bit dan untuk komunikasi MCU-MCU maka saya memilih komunikasi parallel 4 bit karena tidak ingin belajar (malas) mengenai TWI lagi.
Tetapi sebenarnya masih ada pilihan lainnya yang biasa saya pakai yaitu dengan SPI (Serial Peripheral Interface) menggunakan Coding sendiri dan Pin yang didefinisikan sendiri yaitu tidak menggunakan MOSI, MISO, SCK dan SS. Memang pusing Codingnya tetapi sangat berguna untuk Komunikasi data antar MCU maupun Multi MCU bahkan beberapa perangkat, Selain itu panjang data yang dikomunikasikan terserah programmer bisa 1 byte, 2 byte, 3 byte, atau lebih.

Pilihan jatuh pada Interface Parallel 4 bit dan SPI user defined.

Setelah mengetahui jenis interface apa yang sesuai dengan perangkat yang dirancang selanjutnya adalah mengetahui apa saja yang dibutuhkan agar sistem dapat berkomunikasi dengan benar dan tepat.

Lanjut ke post berikutnya..
Semoga Manfaat ;)

Senin, 15 Maret 2010

KAuC (Komunikasi Antar Mikrokontroller) : Introduction Part II

.
Silahkan Baca :
Komunikasi USART AVR Mode Sinkron.
Komunikasi USART Mode Asinkron.
Komunikasi USART : TTL - RS232

Serial Sinkron
Seperti pada USRT (pada AVR), TWI, SPI, I2C.
SPI dan TWI memiliki 3 buah pin untuk berkomunikasi yaitu SCK (Serial Clock), SDI (Serial Data Input), dan SDO (Serial Data Output) .
SDI dan SDO bisa juga disebut MOSI (Master Output Slave Input) dan MISO (Master Input Slave Output).
SPI atau TWI biasanya memiliki pin tambahan seperti CS (Chip Select) atau CE (Chip Enable) atau SS (Slave Select) yang akan berguna untuk mengaktifkan chip yang akan diajak "berkomunikasi".

I2C memiliki 2 buah pin untuk berkomunikasi yaitu SCK (serial Clock) dan SDA (Serial Data). Berbeda dengan TWI atau SPI, I2C tidak membutuhkan pin ke-3 untuk mengaktifkan chip yang akan diajak "berkomunikasi", Jika banyak perangkat I2C yang terhubung maka setiap chip I2C tersebut memiliki alamat yang berbeda-beda dan unik (unique Address) seperti halnya sidik jari manusia.
Chip yang di "panggil" oleh master-nya yang hanya akan menjawab dan berkomunikasi sedangkan yang lainnya akan berrada pada kondisi tri-state (High Impedance).

Tentang Interface Serial Sinkron :
  • Menggunakan Wire yang sedikit dibandingkan parallel.
  • Perancangan PCB sederhana dan mudah.
  • Kecepatan transfer data tidak secepat interface parallel tetapi lebih cepat dibandingkan UART (Serial Asinkron).
  • Sangat mudah digunakan untuk komunikasi multi perangkat dibanding UART karena pin CS atau alamat unik.
  • Komunikasi Full Duplex (mengirim dan menerima data bersamaan).
  • Coding cukup sulit antar Master dan Slave harus sejalan.
  • Kecepatan Clock antar Master maupun Slave minimal sama, Clock master tidak boleh lebih cepat dari Clock Slave karena Sinyal SCK dikendalikan oleh Master sehingga Clock Slave bersifat fleksibel sedangkan Clock Master tidak fleksibel.
Serial Asinkron
Komunikasi data serial asinkron (UART) merupakan jenis komunikasi yang umum, banyak serta mudah digunakan dibandingkan dengan jenis komunikasi lainnya. Mulai banyak modul yang siap pakai menggunakan jenis komunikasi ini agar user (pengguna) bisa menggunakan modulnya dengan mudah.
UART membutuhkan hanya 2 buah jalur interface Rx (receiver / penerima) dan Tx (Transmitter / pemancar), tanpa memperdulikan Clock Master-Slave karena memilik Baudrate yang standar dan umum, serta Fullduplex (Menerima dan memberikan data secara bersamaan).
Jika digunakan untuk komunikasi banyak perangkat maka setiap perangkat (Slave) diberikan alamat unik sendiri (unique Address) dengan protokol tertentu yang ditentukan secara program oleh programmer.

Tentang Interface Serial Asinkron :
  • Menggunakan hanya 2 jalur interface Rx dan Tx.
  • Menggunakan kecepatan transfer data yang umum dan standard.
  • Tidak terpengaruh besar kecilnya Clock Master-Slave karena menggunakan baudrate.
  • Sangat mudah untuk Coding dan komunikasi data.
  • Sangat baik digunakan untuk komunikasi jarak jauh (dengan konverter).
  • Full Duplex (mengirim dan menerima data bersamaan).
  • Karena menggunakan Baudrate maka kecepatan komunikasi data tidak maksimal bahkan relatif lambat dibanding yang lainnya.
One Wire Interface
Komunikasi data dengan interface 1 jalur saja. Sangat sederhana tetapi protokol yang cukup rumit. Memang jenis ini masih belum umum karena cukup rumit pada protokol komunikasi datanya.

Tentang 1-Wire Interface :
  • Hanya menggunakan 1 buah jalur untuk komunikasi data sehingga sangat sederhana.
  • Merupakan bit-oriented atau berorientasi bit dengan bit LSB yang pertama kali dikirim.
  • Master dan Slave dapat saling mengirim maupun menerima tetapi dalam satu waktu yang berbeda (Half Duplex).
  • Kecepatan transfer data yang rendah dibandingkan dengan jenis interface lainnya.
  • Sekali berkomunikasi maka tidak boleh di-interupsi.
  • Coding yang rumit dan menggunakan delay time yang akurat dengan error yang minimal.
  • Protokol Komunikasi yang cukup rumit.
Sekian perkenalan Komunikas antar perangkat.
Semoga Manfaat ;)

Jumat, 12 Maret 2010

KAuC (Komunikasi Antar Mikrokontroller) : Introduction Part I

.
Silahkan Baca :
Komunikasi USART AVR Mode Sinkron.
Komunikasi USART Mode Asinkron.
Komunikasi USART : TTL - RS232

KAuC (Komunikasi Antar Mikrokontroller => saya singkat biar nantinya mudah) merupakan salah satu hal wajib yang harus diketahui perancang hardware dan software. Tanpa mengetahui hal ini perancang akan kesulitan untuk membuat perangkat kompleks yang modular / terpisah-pisah.
Sebenarnya KAuC tidak hanya berlaku untuk komunikasi sesama MCU (Microcontroller Unit) tetapi bisa juga antar MCU-Komputer, MCU-MCu yang berbeda tipe (misal AVR dan PIC), MCU-IC Digital, MCU-Barcode, dll.

Sebelum jauh pada perancangan komunikasi data maka sebaiknya diketahui dulu konsep KAuC atau komunikasi antar perangkat sehingga bisa dirancang komunikasi seperti apapun yang diinginkan. Oleh sebab itu saya mencoba untuk membagi-bagi KAuC menjadi beberapa bagian.

Introduction
Komunikasi data ada 2 cara yaitu komunikasi data secara parallel dan komunikasi data secara serial. Komunikasi data secara parallel yaitu Komunikasi banyak data (64 bit, 32 bit, 16 bit, 8 bit, 4 bit) yang dilakukan secara langsung dalam waktu bersamaan melalui banyak jalur (kabel, PCB, fiber optical, dll). Komunikasi data secara serial yaitu komunikasi 1 buah data (1 bit) pada satu waktu.
Tidak banyak yang bisa dibahas untuk komunikasi data secara parallel sedangkan komunikasi secara serial telah mengalami berbagai perkembangan dan telah banyak jenisnya.

KAuC atau komunikasi antar perangkat dapat sudah banyak jenis-nya seperti : Komunikasi parallel, UART (Universal Asynchronous Receiver Transmitter), USRT (Universal Synchronous Reciever Transmitter), I2C (Inter-Integrated Circuit), USB, TWI (Two Wire Interface), 1 Wire Interface, SPI (Serial Peripheral Interface), dll..
(apa lagi yak..?).

Untuk RS232 dan RS485 hanyalah level tegangan saja yaitu konversi level tegangan TTL (0 Vdc - 5Vdc) menjadi level RS232 (±25 Vdc) maupun RS485 (Differensial ±25 Vdc) dan bukannya jenis komunikasi.

Interface Parallel
Paralel 32 bit, 16 bit, 8 bit, ataupun 4 bit, baik digunakan jika membutuhkan kecepatan transfer data yang tinggi seperti pada motherboard komputer karena membutuhkan kecepatan tinggi. Contoh lain seperti pada LCD karakter yang dapat diprogram untuk komunikasi paralel 8 bit maupun 4 bit.

Tentang Interface parallel :
  • Kecepatan transfer data dengan kecepatan maksimum.
  • Coding mudah dan sederhana.
  • Menggunakan jalur (wire) yang tidak sedikit (banyak).
  • Selain pin data dibutuhkan pin tambahan sebagai Handshake seperti : pin CS (Chip Select, RD (Read), WR (Write), ACK (acknowledgment ), dll.
  • Perancangan PCB menjadi rumit dan lebih besar.
  • Tidak efektif digunakan untuk komunikasi jarak jauh karena bisa mengalami penurunan level tegangan sehingga merusak data dan menggunakan kabel yang (sangat) banyak.
Lanjut ke :
KAuC (Komunikasi Antar Mikrokontroller) : Introduction Part II

Rabu, 10 Maret 2010

Ask : Komunikasi Antar Mikro

.
Asker : Bandar Djakarta
System :
Komunikasi antar Mikro (Master Slave)
Question :
mas, tlg ajarin komunikasi antar 2 mikro dong..... apakah bisa secara serial?? ataukah bisa dalam bentuk i2c??

Too PayZ :
Komunikasi antar mikro tidak begitu sulit bahkan anda sebagai perancangnya dapat menentukan level, jenis, protokol, dan apapun cara komunikasi agar perangkat anda berjalan sesuai keinginan. Bahkan untuk keperluan komersil misalkan ingin merancang produk yang siap pakai, bisa saja anda merancang komunikasi yang cukup rumit sehingga perangkat anda sulit untuk di Copy atau dibajak. Sebaliknya bisa juga anda merancang perangkat dengan interface dan protokol komunikasi sederhana sehingga konsumen sangat mudah memakai produk anda dan sangat user friendly. Nilai tambah bukan.

Untuk Posting komunikasi antar Mikrokontroller silahkan lihat posting bulan April atau positng dengan label Komunikasi Data.

Met Mencoba ;)

Senin, 08 Maret 2010

Ask : Tulisan Berjalan pd LCD 16x2

.
Asker : Rizki
System :
Tulisan berjalan pada LCD karakter 16x2
Question :
mas, aku mau coba Buat tulisan bergerak pada LCD, dengan arduino di mikrokontroler avr atmega32, bagai mana contoh programnya?

Too PayZ :
Dulu sudah ada yang bertanya ini tapi tidak kujawab n sekarang mudah-mudahan bisa menjawab.
Btw ini LCD-nya LCD karater yang umum dipasaran kan? seperti LCD 16x2, 20x2, 20x4. Bukan LCD grafik ataupun LCD lainnya.

Menggunakan CoViAVR ada fungsi LCD yang sebagai berikut
lcd_gotoxy(x,y);
Fungsi tersebut adalah untuk mengatur posisi karakter awal yang akan ditampilkan pada kolom X dan baris Y.
Jika ingin menggeser ke kiri tinggal X-nya dikurangi dan jika ingin menggeser ke kanan X-nya ditambah.
......
for (x=15; x>=0; x--)
{
lcd_clear();
lcd_gotoxy(x,0);
lcd_putchar('T');
delay_ms(500);
}

// menggeser dari kanan ke kiri dengan delay 0.5 detik

for (x=0; x<=15; x++) { lcd_clear(); lcd_gotoxy(x,0); lcd_putchar('T'); delay_ms(500); } // menggeser dari kiri ke kanan dengan delay 0.5 detik
.......
Met Mencoba ;)

Topik yang Populer