Sementara saya ingin terjun ke berbagai metode pemrograman yang tersedia, orang lain sudah memilikinya. Berikut ini adalah tutorial Dean Camera tentang AVRFreaks, Metode Pemrograman AVR :
Ada banyak cara untuk memprogram mikrokontroler AVR. Karena banyak orang bertanya tentang yang berbeda pada satu waktu atau yang lain, saya pikir saya akan menguraikannya di sini sehingga pertanyaan mereka dapat dijawab dengan cepat dan efisien. Maafkan saya jika saya melewatkan metode atau membuat kesalahan.
METODE 1: Pemrograman Sistem (ISP)
Didukung oleh: Sebagian besar AVR (lihat posting di bawah)
Programmer yang didukung: AVRISP MKI / II, JTAG MKII, STK500, STK600, Naga, klon AVRISP, Programmer AVR910, AVRONE
Dalam Pemrograman Sistem mungkin metode yang paling umum dari pemrograman lampu kilat, EEPROM, sekering dan kunci bit dari seluruh garis AVR. ISP dapat memprogram AVR dengan kecepatan clock yang sangat tinggi (dengan asumsi target AVR berjalan pada frekuensi tinggi dan programmer mendukungnya) dan merupakan metode pilihan untuk hampir semua penggemar hobi AVR. Ada banyak, banyak klon AVRISP dan programmer AVR910 di pasaran selain dongle do-it-yourself yang sederhana yang terhubung ke port paralel komputer Anda.
Desain dongle baru terbaru mungkin menggunakan port serial komputer, namun bukti anekdotal mengatakan bahwa metode ini sangat lambat karena keterbatasan teknis.
ISP mengharuskan target AVR berjalan pada laju jam setidaknya empat kali lipat dari jam ISP. Ini adalah perangkap umum dan sumber kebingungan bagi banyak orang yang baru mengenal AVR.
METODE 2: JTAG
Didukung Oleh: Lihat bantuan Alat AVRStudio untuk dukungan perangkat MKI dan MKII
Programmer yang Didukung: JTAG-ICE, JTAG-ICE MKII, Dragon, klon JTAG-ICE, AVRONE, STK600 (hanya pemrograman)
Secara teknis JTAG adalah sistem debugging, bukan metode pemrograman. Namun, antarmuka JTAG memungkinkan pemrograman AVR yang mendukungnya.
JTAG adalah alat debugging dalam sistem yang memungkinkan Anda untuk memanipulasi dan memeriksa status AVR yang didukung saat sedang berjalan dalam suatu rangkaian. JTAG memungkinkan pengguna untuk menghentikan eksekusi kapan saja, memanipulasi register internal AVR dan banyak lagi.
Unit JTAG-ICE resmi dari ATMEL telah digantikan oleh JTAG-ICE MKII, yang mendukung protokol debugging DebugWire jangkauan AVR yang lebih baru dan lebih luas serta pemrograman melalui metode ISP (lihat di atas).
Klon JTAG-ICE tersedia dengan harga murah, namun kompatibilitasnya terbatas dengan hanya sedikit AVR yang membatasi kegunaannya. Apapun itu, jika AVR Anda mendukung antarmuka JTAG, JTAG-ICE tetap menjadi metode dan program debugging yang sangat bagus dan efektif.
METODE 3: DebugWire
Didukung Oleh: Banyak
Pemrogram yang Didukung AVR yang lebih kecil : JTAG-ICE MKII, Dragon, AVRONE
Lagi-lagi DebugWire adalah debugging daripada antarmuka pemrograman, tetapi dapat digunakan untuk memuat dalam program ke dalam AVR yang didukung. Antarmuka dW menggunakan pin AVR tunggal (garis / RESET) untuk semua komunikasi, menjadikannya ideal untuk perangkat AVR dengan jumlah pin rendah.
METODE 4: Bootloader
Didukung oleh:
Pemrogram yang Didukung AVR yang paling baru : Tidak Ada
Sekali lagi secara teknis bukan metode pemrograman. Bootloader adalah program AVR kecil yang berada di bagian yang disediakan pengguna pada flash biasa. Bootloader menggunakan fitur modifikasi diri flash yang tersedia di AVR yang lebih baru untuk memungkinkan AVR memprogram dirinya sendiri melalui data program yang diambil dari sumber eksternal. Bootloader dapat mengambil data mereka dari lokasi mana pun (mis. Dataflash eksternal atau kartu SD) namun sejauh ini tipe Bootloader yang paling umum berkomunikasi dengan PC melalui port RS-232 (serial) AVR.
Bootloader terbatas karena mereka mengkonsumsi ruang flash (membatasi ukuran flash yang tersedia untuk aplikasi AVR) dan mereka tidak dapat mengubah fusebits AVR.
Bootloader tersedia secara luas di internet untuk diunduh, tetapi mereka mengalami masalah "ayam dan telur"; Anda memerlukan jenis programmer lain yang terdaftar di sini untuk memprogram bootloader. Ini biasanya diselesaikan dengan membangun dongle port paralel sederhana (Lihat bagian ISP) atau dengan pembelian AVR yang sudah dimuat sebelumnya dengan bootloader (mis. Papan AVRButterfly).
METODE 5: Pemrograman Paralel Tegangan Tinggi (HVPP)
Didukung oleh: Kebanyakan AVR non-TINY (dengan pengecualian)
Programmer yang Didukung: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
Pemrograman Paralel Tegangan Tinggi adalah metode pemrograman yang jarang digunakan, karena kerumitan yang diperlukan untuk mengatur. Meskipun demikian, pemrograman HVPP umumnya digunakan untuk "menghidupkan kembali" AVR yang fusebitnya salah dikonfigurasi melalui metode pemrograman lain.
STK500 dan Naga mendukung HVPP. Selama HVPP, pin target / RESET dinaikkan ke nilai 12V yang luar biasa tinggi yang melibatkan sirkuit pemrograman paralel internal. Pin / RESET adalah satu-satunya pin AVR (pada AVR yang didukung HVPP) yang dapat dengan aman dinaikkan ke level ini.
Anda dapat membuat dongle HVPP Anda sendiri menggunakan paket online seperti ini.
METODE 6: Pemrograman Serial Tegangan Tinggi (HVSP)
Didukung oleh: Banyak TINY AVR (dengan pengecualian)
Programmer yang Didukung: STK500, STK600, Dragon, Homebrew Dongles, AVRONE
HVSP mirip dengan HVPP, kecuali transfer data dilakukan secara seri daripada secara paralel. Ini adalah metode pemrograman alternatif yang digunakan pada banyak seri TINY AVR yang tidak memiliki cukup pin untuk HVPP.
METODE 7: PDI
Didukung oleh: XMEGA AVR
Programmer yang Didukung: STK600, AVRONE, JTAG MKII, Dragon, AVRISP MKII
PDI adalah antarmuka pemrograman baru berdasarkan protokol debugWire, untuk lini XMEGA dari AVR. Saat ini tidak digunakan pada mikrokontroler AVR 8-bit lainnya.
METODE 8: TPI
Didukung oleh: 6-Pin TINY AVR (ATTINY10, dll.)
Programmer yang Didukung: STK600, Dragon, AVRISP MKII
TPI adalah antarmuka pemrograman yang sangat kecil untuk jajaran AVR TINY yang lebih baru dengan pin terbatas, seperti ATTINY10 6 pin. Seperti dW, TPI menggunakan garis perangkat / RESET sebagai bagian dari antarmuka komunikasi, tetapi di sana kesamaannya berakhir. Karena AVR TINY berukuran pint tidak memiliki sirkuit debugging chip, protokol TPI menggunakan antarmuka pemrograman baru dari tiga pin, dalam protokol setengah dupleks. Karena garis / RESET perlu dinaikkan ke + 12V untuk pemrograman ketika pin RSTDSB perangkat diatur, saat ini hanya didukung oleh papan pemrograman STK600 yang lebih baru.
Bagian FAQ Bonus!
Metode mana yang terbaik?
Tidak ada metode universal "terbaik". Pemrograman ISP sederhana dan sangat populer, namun semua metode di atas akan berfungsi. Dua mode pemrograman tegangan tinggi (mana saja yang berlaku untuk perangkat Anda) adalah yang paling kaya fitur, karena memungkinkan untuk perbaikan AVR yang memiliki kesalahan konfigurasi. Namun, metode-metode tersebut sulit diatur, karenanya alasan sebagian besar pengguna menggunakan ISP.
Saya sudah membuat dongle port paralel. Bisakah saya menggunakannya dengan AVRStudio?
Aku takut tidak. AVRStudio tidak dapat berinteraksi dengan dongle "bodoh" - ini membutuhkan perangkat pemrograman pintar - yang berisi mikrokontroler itu sendiri - untuk menguraikan protokol komunikasi yang dikirimkannya. Dongle sederhana tanpa mikrokontroler harus "digedor-bit" (mis. Sinyal yang sesuai disimulasikan melalui dongle melalui komputer) itu sendiri.
Jadi dongle saya tidak berguna?
Tidak. Anda masih dapat memprogram melalui dongle buatan sendiri dengan alat perangkat lunak pemrograman pihak ketiga. AVRDude adalah utilitas baris perintah gratis yang bagus, dikenal, dan disertakan dengan paket WinAVR.
Apa pilihan saya jika saya ingin programmer saya bekerja dengan AVRStudio?
Pilih seorang programmer yang menggunakan protokol yang didukung AVRStudio. Ini bisa berupa protokol "AVR910" sederhana (usang) atau implementasi kustom protokol yang digunakan oleh STK500 / AVRISP. Perhatikan bahwa pemrogram ini membutuhkan pengontrol mikro di dalamnya, yang mengarah ke situasi tangkapan-22. Ini dapat diselesaikan dengan AVR programmer yang diprogram pada saat pembelian dengan firmware yang sesuai, atau dengan AVR yang diprogram dengan bootloader.
Oke, saya ingin menggunakan bootloader. Bagaimana saya mendapatkannya di sana?
Untuk menggunakan bootloader dalam AVR, pertama-tama Anda harus memiliki bootloader yang diprogram. Jika Anda tidak memiliki programmer yang ada (bahkan dongle bodoh sederhana akan cukup untuk pemrograman awal), Anda dapat membeli AVR yang diprogram sebelumnya dengan bootloader dari beberapa pemasok.
Atmel juga memproduksi papan demo Butterfly, yang MEGA169 AVR-nya hadir dengan bootloader yang kompatibel dengan AVR-Studio.
Tolong! Saya telah mengacaukan sekering dan mengetuk AVR saya saat menggunakan ISP!
Kesalahan yang paling umum adalah mengubah sekering pemilihan jam ke pengaturan yang tidak valid. Coba letakkan jam eksternal pada pin XTAL1 AVR dan lihat apakah itu membantu.
Gagal itu, jika mungkin gunakan salah satu metode tegangan tinggi. Ini akan memperbaiki kesalahan konfigurasi, termasuk yang melibatkan sumber clock karena metode tegangan tinggi menyediakan clock sendiri ke AVR untuk pemrograman.
Bagaimana cara saya berinteraksi dengan programmer saya?
Perangkat lunak mana yang Anda gunakan untuk berinteraksi dengan programmer Anda tergantung pada jenis programmer yang Anda gunakan.
Dongle "bodoh" yang sederhana membutuhkan perangkat lunak pihak ketiga, seperti PonyProg atau AVRDude. Ini mungkin baris perintah atau alat GUI - lihat di web dan Anda akan memilih yang sesuai dengan kebutuhan Anda.
Programmer dan bootloader berdasarkan protokol AVR910 dapat digunakan dalam AVRStudio. Dari menu Alat, pilih opsi "AVRProg" untuk membuka layar GUI untuk berinteraksi dengan programmer Anda. Sebagai alternatif, alat pihak ketiga seperti AVRDude juga kompatibel dengan AVR910.
Alat resmi terintegrasi erat ke dalam AVRStudio, terutama dalam hal varian debugging (JTAG / Dragon / dll). Dari menu AVRStudio Tools, pilih submenu "Program AVR ..." dan klik item "Connect". Dari jendela baru, pilih alat Anda dan antarmuka koneksinya dan klik ok.
Seperti halnya dongle bisu dan programmer AVR910, alat resmi juga dapat digunakan dengan perangkat lunak pemrograman pihak ketiga.
(C) Dean Camera, 2009. Hak cipta dilindungi undang-undang. Tidak untuk reproduksi di situs web apa pun selain AVRFreaks.net tanpa izin eksplisit sebelumnya.