Pada artikel berikut akan dibahas bagaimana caranya mengimplementasikan dan membuat Converter USB to Serial sendiri dengan microcontroller ATmega8. Pada ATmega8 ini nanti akan diberikan source code firmwarenya Free dan bisa di download di bagian bawah.
Karena pada ATmega8 tidak tersedia fasilitas untuk komunikasi dengan USB, maka mau tidak mau protokol komunikasi data dengan USB harus dibuat sendiri pada firmware tersebut. Untuk panduan belajar protokol USB bisa dilihat di bagian lain di Website ini atau klik link berikut untuk melihatnya. Pada firmware yang bisa didownload sudah ada code untuk menghandle protokol usb, sehingga bisa langsung digunakan, tetapi jika anda ingin menambahkan fasilitas lain, anda bisa meng-edit firmware tersebut. Firmware yang disediakan ditulis dalam bahasa assembler yang bisa di kerjakan dan di compile dengan AVR Studio 4. Selain code Assemblernya disertakan juga code Hexa-nya hasil kompilasi dari AVR Studio 4 yang bisa langsung di masukkan di IC-nya.
Berikut ini adalah gambar schematic rangkaian USB to Serial converter dengan ATmega8
Line data USB yaitu D+ dan D- dihubungkan dengan PB0 dan PB1 pada ATmega8, koneksi ini tidak boleh dirubah karena pada pin ini bisa dilakukan transfer data dengan kecepatan tinggi. Agar terjadi suatu koneksi dan pen-signal-an yang bagus antara USB dan devais ini, maka ATmega8 akan diperkerjakan pada kecepatan data Low Speed yaitu dengan cara mem-pull-up resistor 1k5 Ohm pada line data D-. Untuk komponen yang lain hanya digunakan sebagai pelengkap agar system dapat beropersai dengan bagus, misalnya Xtall digunakan sebagai clock dan capacitor digunakan sebagai filter power supply.
Jika pada rangkaian ini anda menginginkan USB to RS-232 converter maka anda perlu menambahkan IC MAX 232 sebagai converter dari Level TTL ke level RS232. Jika hanya ingin digunakan untuk mengontrol LED anda bisa langsung hubungkan ke PIN I/O langsung yang di seri dengan resistor sebelumnya.
Untuk implementasi firmwarenya sebagai penerima dan coding dari USB protocolnya, akan menerima semua paket data dari USB dan kemudian disimpan di dalam internal buffer. Dimulai dari penerimaan pertama yang diperoleh dari external interrupt (INT0) adalah data untuk “sync pattern”, selama proses penerimaan hanya paket yang terakhir yang di check yaitu signal EOP (End of Packet). Setelah proses penerimaan berhasil, berikutnya firmware akan mong-coding sejumlah paket data yang diterimanya dan kemudian menganalisanya. Sekali lagi karena protocol USB ini sangat sulit anda bisa baca lagi protocol USB pada Link berikut. Proses penerimaan data pada USB secara umum bisa dilihat pada alur flowchart berikut.
Jika pada rangkaian ini anda menginginkan USB to RS-232 converter maka anda perlu menambahkan IC MAX 232 sebagai converter dari Level TTL ke level RS232. Jika hanya ingin digunakan untuk mengontrol LED anda bisa langsung hubungkan ke PIN I/O langsung yang di seri dengan resistor sebelumnya.
Untuk implementasi firmwarenya sebagai penerima dan coding dari USB protocolnya, akan menerima semua paket data dari USB dan kemudian disimpan di dalam internal buffer. Dimulai dari penerimaan pertama yang diperoleh dari external interrupt (INT0) adalah data untuk “sync pattern”, selama proses penerimaan hanya paket yang terakhir yang di check yaitu signal EOP (End of Packet). Setelah proses penerimaan berhasil, berikutnya firmware akan mong-coding sejumlah paket data yang diterimanya dan kemudian menganalisanya. Sekali lagi karena protocol USB ini sangat sulit anda bisa baca lagi protocol USB pada Link berikut. Proses penerimaan data pada USB secara umum bisa dilihat pada alur flowchart berikut.
Firmware secara umum dibagi menjadi beberapa bagian blok utama, yaitu :
Interrupt Routine
Decoding Routine (Termasuk NRZI Encoding, BitStuffing Removal/Addition).
USB Reception
USB Transmission
Requested Action Decoding
Performing Requested Custom Actions
User dapat menambah function function tertentu kedalam firmware, seperti function untuk membuat “Customer-Specific”, function untuk “Direct Pin Control” dan lain sebagainya. Untuk firmware lengkapnya bisa anda download di bagian bawah.
Untuk ATmega8 yang akan dipakai berikut support untuk 800 byte FIFO buffer, dengan baudrate 300 sampai 115200 baudrate, databit (5,6,7,8), stopbit (1,2), dan parity-nya (none, odd, even, mark, space).
Dengan menggunakan ATmega8 ini ada beberapa kemungkinan fitur yang bisa ditambahkan misalnya :
USB read/write ke dalam internal memori EEPROM yang berukuran 512 byte untuk menyimpan data misalnya data kalibrasi atau data kode produk.
Kemungkinan untuk memanfaatkan PWM dan ADC (Analog to Digital Converter) yang ada pada ATmega8.
Dengan space memori program yang masih besar, user bisa menambahkan fasilitas lain misalnya untuk USB to I2C converter atau USB to Serial PS2 dan converter – converter yang lain.
User bisa membuat / menambahkan semacam bootloader kedalam ATmega8, sehingga apabila ingin dilakukan Upgrade Firmware cukup dilakukannya lewat USB.
Pada contoh artikel dibawah ini digunakan Delphi sebagai program antarmuka di komputernya. Untuk source code dan executable Delphi ini bisa di download dibagian bawah. Bentuk program delphi executablenya seperti pada gambar dibawah
Interrupt Routine
Decoding Routine (Termasuk NRZI Encoding, BitStuffing Removal/Addition).
USB Reception
USB Transmission
Requested Action Decoding
Performing Requested Custom Actions
User dapat menambah function function tertentu kedalam firmware, seperti function untuk membuat “Customer-Specific”, function untuk “Direct Pin Control” dan lain sebagainya. Untuk firmware lengkapnya bisa anda download di bagian bawah.
Untuk ATmega8 yang akan dipakai berikut support untuk 800 byte FIFO buffer, dengan baudrate 300 sampai 115200 baudrate, databit (5,6,7,8), stopbit (1,2), dan parity-nya (none, odd, even, mark, space).
Dengan menggunakan ATmega8 ini ada beberapa kemungkinan fitur yang bisa ditambahkan misalnya :
USB read/write ke dalam internal memori EEPROM yang berukuran 512 byte untuk menyimpan data misalnya data kalibrasi atau data kode produk.
Kemungkinan untuk memanfaatkan PWM dan ADC (Analog to Digital Converter) yang ada pada ATmega8.
Dengan space memori program yang masih besar, user bisa menambahkan fasilitas lain misalnya untuk USB to I2C converter atau USB to Serial PS2 dan converter – converter yang lain.
User bisa membuat / menambahkan semacam bootloader kedalam ATmega8, sehingga apabila ingin dilakukan Upgrade Firmware cukup dilakukannya lewat USB.
Pada contoh artikel dibawah ini digunakan Delphi sebagai program antarmuka di komputernya. Untuk source code dan executable Delphi ini bisa di download dibagian bawah. Bentuk program delphi executablenya seperti pada gambar dibawah
Download Section :
Program antarmuka dengan Delphi
DLL dan Driver
Source Code Firmware ATmega8 dan file hasil kompilasinya
Resource :
http://www.usb.org
http://www.atmel.com
http://www.cesko.host.sk/
Program antarmuka dengan Delphi
DLL dan Driver
Source Code Firmware ATmega8 dan file hasil kompilasinya
Resource :
http://www.usb.org
http://www.atmel.com
http://www.cesko.host.sk/
mas Bayu,,,
BalasHapuskalo boleh tanya, meski ini posting lama..
saya mau tanya kalo misal diatas mas menyatakan sebagai frimware sebagai penerima , apakah bisa dibuat menjadi pengirim,
maaf karena saya ingin mengirim data melalui mikrokontroler menggunakan usb ke handphone, mohon bimbingan nya
gan DLL dan Driver_a g'bsa sya download gan,
BalasHapusbsa postkan lg g'.
Regards