Saya menggunakan Boarduino dan papan roti 30-baris untuk memprogram ATtiny saya. Saya memuat sketsa yang tidak terlalu rumit yang disebut ArduinoISP (termasuk secara default sekarang di IDE Arduino), dan tiba-tiba saya memiliki programmer yang berfungsi. Atmel menjual programmer yang bagus dengan harga antara $ 30 dan $ 40, dan ada banyak kit untuk membuat yang lebih murah.
Saya sangat senang begitu saya mendapatkan programmer yang bekerja dan membuat kedipan kecil beberapa petunjuk. Namun, sekarang boarduino saya yang buruk terjebak pada tugas programmer.
Sejauh yang saya tahu programmer ini menahan tombol reset, dan kemudian mentransmisikan dan menerima pin MOSI dan MISO. Saya pikir SCK tidak digunakan atau setidaknya tidak dibutuhkan. (SCK diperlukan menurut lembar data ATtiny, programmer saya tidak bekerja tanpanya, dan saya tidak dapat menemukan tempat yang saya pikir saya baca tidak diperlukan.)
Mengapa saya memerlukan programmer perangkat keras untuk hanya mengirimkan serial? Maksud saya, anggap saja saya bersedia menahan tombol reset dengan jari saya alih-alih menggunakan IC. Yang tersisa hanyalah pengiriman dan penerimaan serial, jadi yang saya butuhkan adalah tiga kabel, GND, RXD, dan TXD. Heck, jika saya memiliki garis "DTR" atau apa pun, Anda bahkan dapat menekan tombol reset dengan kabel serial.
Mengapa ada semua solusi perangkat keras ini yang juga memerlukan perangkat lunak mewah (seperti AVRdude, atau AVR studio, atau apa pun)?
Maksud saya, saya dapat memahami kabel USB kecil yang menghadirkan mikrokontroler sebagai perangkat penyimpanan massal dan memungkinkan Anda menyeret file biner ke pemrograman (seperti papan dev ARM ini ). Hanya perangkat keras, menggunakan driver perangkat lunak standar.
Saya juga bisa memahami solusi perangkat lunak saja (modulo mengaitkan kabel dari USB ke chip, menggunakan sesuatu seperti chip FTDI untuk menyederhanakan apa yang turun kabel). Semua protokol pemrograman mewah akan ditangani oleh perangkat lunak di komputer, dan perangkat kerasnya hanya berupa kabel.
Mengapa kita melibatkan perangkat lunak dan perangkat keras (rumit)? Maksud saya, sejauh yang saya tahu, pemrograman mikrokontroler cukup mudah, tetapi ketika saya baru saja membahas ini, saya benar-benar khawatir tentang bagaimana saya akan pernah membeli sebuah chip dari mouser atau digikey tanpa membayar beberapa guru untuk memprogram bootloader untuk saya.
Saya yakin ada alasan yang bagus (tidak seperti saya telah menulis perangkat lunak atau mulai membuat programmer USB drag-n-drop), tetapi sebagai pendatang baru, saya tidak tahu apa itu.
sumber
Jawaban:
Anda benar, pemrograman AVR cukup mudah. Itu hanya protokol khusus yang diterapkan di atas SPI, berjalan pada tegangan rendah. SCK dibutuhkan.
Namun, pemrograman PIC yang lebih lama (dan pemrograman non ISP AVR) memerlukan voltase tinggi dan protokol khusus yang berbeda. Ini memerlukan programmer perangkat keras khusus.
Perangkat lain lebih kompleks. Sebagian besar mikrokontroler ARM harus diprogram melalui JTAG, di sini memori sedang ditulis secara langsung dan prosesor diperintahkan untuk menulis ke flash. Sekali lagi, setiap perangkat berbeda.
sumber
Saya melakukan banyak riset dan bersiap untuk mulai bermain dengan AVR, tetapi saya tidak pernah benar-benar menggunakannya, jadi ini mungkin salah, tetapi:
Kebanyakan programmer murah tidak akan mendukung pemrograman tegangan tinggi AVR. Ini diperlukan jika controller diatur menjadi nonprogrammable menggunakan bit sekering atau jika Anda entah bagaimana membuat beberapa bug serius dan perlu mengatur ulang ke default dan sebagainya.
sumber
Sebagian besar programmer AVR murah hanya menyinkronkan antarmuka serial dengan garis reset. Anda dapat menggunakan FT232 untuk bitbang keluar Serial Peripheral Interface (SPI). FT232 dirancang untuk serial async tidak disinkronkan sehingga semuanya dilakukan dalam perangkat lunak.
Anda bisa mengunggah bootloader seperti arduino yang memungkinkan Anda untuk mengunggah kode melalui antarmuka serial async menggunakan ft232 dalam mode normal atau antarmuka serial async menggunakan konverter level sesuai kebutuhan. Hanya saja, jangan lupa untuk menggunakan bootloader yang tepat untuk kecepatan jam Anda dan untuk mengatur byte sekering dengan benar.
sumber
Banyak perangkat yang dapat diprogram secara historis mengharuskan mereka diprogram menggunakan urutan sinyal yang relatif tepat waktu. Dalam banyak kasus, jika seseorang hanya ingin memprogram satu jenis perangkat tertentu, perangkat keras yang diperlukan akan cukup sederhana, tetapi karena perangkat yang berbeda memiliki persyaratan yang berbeda, membangun programmer yang lebih umum untuk keperluan umum agak lebih sulit.
Saat ini, seseorang mungkin dapat memprogram lebih dari 50% perangkat yang dapat diprogram menggunakan tidak lebih dari kabel I / O USB dan perangkat lunak PC, tetapi programmer "perangkat keras" masih memiliki keunggulan kecepatan yang cukup besar. Agar PC bereaksi terhadap sinyal yang diterima oleh perangkat USB dan mengirim respons, biasanya membutuhkan waktu minimal 1-2 milidetik. Jika urutan pemrograman berulang kali meminta perangkat kapan siap untuk potongan data berikutnya dan kemudian mengirimkannya, menggunakan kabel I / O sederhana akan menambah satu atau dua milidetik tambahan untuk waktu yang diperlukan untuk menangani setiap potongan. Bergantung pada sifat perangkat yang dipermasalahkan, hal itu dapat meningkatkan waktu keseluruhan yang diperlukan untuk pemrograman dengan urutan besarnya dibandingkan dengan programmer yang dapat diberi tahu, sambil menunggu perangkat siap, apa yang harus dilakukan setelah itu.
Secara pribadi, saya suka pendekatan memiliki perangkat yang dilengkapi flash dikirimkan dari pabrik dengan boot-loader di memori yang dapat digunakan dengan minimum perangkat keras pemrograman. Jika perangkat mendukung pemrograman flash di bawah kendali perangkat lunak, pendekatan seperti itu dapat menyederhanakan produksi tanpa menambahkan apa pun pada biaya silikon di luar waktu marginal yang sangat kecil yang diperlukan untuk memiliki program perlengkapan uji pabrik di boot-loader setelah melakukan semua hal lain. .
sumber