Rumah / Avatar / Firmware mk. Proses flashing mini pc. Peralatan untuk firmware MK

Firmware mk. Proses flashing mini pc. Peralatan untuk firmware MK

Desember 2015

1. Keuntungan dari metode yang diusulkan

Rangkaian perangkat berbasis mikrokontroler (MC) biasanya dibedakan dengan kombinasi dua kualitas yang sulit untuk digabungkan: kesederhanaan maksimum dan fungsionalitas tinggi. Selain itu, fungsionalitas dapat diubah dan diperluas di masa mendatang tanpa membuat perubahan apa pun pada rangkaian - hanya dengan mengganti program (flashing). Fitur-fitur ini dijelaskan oleh fakta bahwa pencipta mikrokontroler modern telah mencoba untuk menempatkan pada satu chip semua yang mungkin diperlukan oleh pengembang perangkat elektronik - setidaknya sebanyak mungkin. Akibatnya, ada pergeseran penekanan dari sirkuit dan perakitan ke perangkat lunak. Dengan penggunaan MK, sekarang tidak perlu lagi "memuat" rangkaian dengan detail, ada lebih sedikit koneksi antar komponen. Hal ini, tentu saja, membuat sirkuit lebih menarik bagi insinyur elektronik berpengalaman dan pemula untuk mengulanginya. Tapi, seperti biasa, Anda harus membayar semuanya. Di sini juga, bukan tanpa kesulitan. Jika Anda membeli MK baru, pasang di sirkuit yang dirakit dengan benar dari bagian yang dapat diservis dan gunakan daya, maka tidak ada yang akan berfungsi - perangkat tidak akan berfungsi. Mikrokontroler membutuhkan sebuah program.

Tampaknya semuanya juga sederhana dengan ini - di Internet Anda dapat menemukan banyak skema dengan firmware gratis. Tapi di sini ada satu hambatan: firmware entah bagaimana harus "diisi" ke dalam mikrokontroler. Bagi seseorang yang belum pernah melakukan ini sebelumnya, tugas seperti itu sering menjadi masalah dan faktor utama yang menjijikkan, sering memaksa mereka untuk meninggalkan pesona menggunakan MK dan mencari skema berdasarkan logika yang "longgar" dan kaku. Tetapi semuanya tidak sesulit kelihatannya pada pandangan pertama.

Setelah menganalisis publikasi di Internet, Anda dapat melihat bahwa masalah ini paling sering diselesaikan dengan salah satu dari dua cara: membeli programmer yang sudah jadi atau membuat yang buatan sendiri. Pada saat yang sama, sirkuit yang diterbitkan dari programmer buatan sendiri seringkali sangat kompleks yang tidak perlu - jauh lebih rumit daripada yang benar-benar diperlukan. Tentu saja, jika seharusnya mem-flash MK setiap hari, lebih baik memiliki programmer yang "keren". Tetapi jika kebutuhan akan prosedur seperti itu jarang muncul, dari waktu ke waktu, maka Anda biasanya dapat melakukannya tanpa programmer. Tidak, tentu saja, ini bukan tentang belajar melakukannya dengan kekuatan pikiran. Ini berarti bahwa memahami bagaimana programmer berinteraksi dengan mikrokontroler saat menulis dan membaca informasi dalam mode pemrogramannya, kita dapat bertahan dengan alat yang tersedia untuk tujuan yang lebih luas. Alat-alat ini harus menggantikan perangkat lunak dan perangkat keras programmer. Bagian perangkat keras harus menyediakan koneksi fisik ke chip MK, kemampuan untuk menerapkan level logika ke inputnya dan membaca data dari outputnya. Bagian perangkat lunak harus memastikan pengoperasian algoritma yang mengontrol semua proses yang diperlukan. Kami juga mencatat bahwa kualitas informasi rekaman di MK tidak tergantung pada seberapa "keren" programmer Anda. Tidak ada yang namanya "lebih baik" atau "lebih buruk". Hanya ada dua pilihan: "terdaftar" dan "tidak terdaftar". Ini karena MC sendiri yang mengontrol proses perekaman di dalam kristal. Anda hanya perlu menyediakannya dengan daya berkualitas tinggi (tanpa gangguan dan riak) dan mengatur antarmuka dengan benar. Jika, menurut hasil pembacaan kontrol, tidak ada kesalahan yang terdeteksi, maka semuanya beres - Anda dapat menggunakan pengontrol untuk tujuan yang dimaksudkan.

Untuk menulis program ke MK tanpa programmer, kita memerlukan konverter port USB-RS232TTL dan juga. Konverter USB-RS232TTL memungkinkan Anda membuat port COM menggunakan port USB, yang berbeda dari port "asli" hanya karena level logika TTL digunakan pada input dan outputnya, yaitu tegangan dalam kisaran 0 hingga 5 volt (untuk lebih jelasnya, lihat artikel " "). Bagaimanapun, berguna untuk memiliki konverter seperti itu di "rumah tangga", jadi jika Anda belum memilikinya, Anda harus membelinya. Sedangkan untuk level logika, dalam kasus kami TTL bahkan merupakan keunggulan dibandingkan port COM biasa, karena input dan output dari port tersebut dapat langsung dihubungkan ke mikrokontroler mana pun yang ditenagai oleh 5 V, termasuk ATtiny dan ATmega. Tetapi jangan mencoba menggunakan port COM biasa - tegangan dalam kisaran -12 hingga +12 V (atau -15 ... + 15V) digunakan di sana. Koneksi langsung ke mikrokontroler dalam hal ini tidak dapat diterima!!!

Gagasan membuat skrip untuk program "Perpetuum M", yang mengimplementasikan fungsi seorang programmer, muncul setelah membaca sejumlah publikasi di Internet yang menawarkan solusi tertentu untuk firmware MK. Dalam setiap kasus, ditemukan kekurangan yang serius atau kompleksitas yang berlebihan. Kami sering menemukan rangkaian programmer yang berisi mikrokontroler, dan pada saat yang sama, saran yang diberikan cukup serius seperti: "... dan untuk memprogram mikrokontroler untuk programmer ini, kita perlu ... itu benar - programmer lain!" . Selanjutnya, diusulkan untuk pergi ke teman, mencari layanan berbayar, dll. Kualitas perangkat lunak yang didistribusikan di internet untuk tujuan ini juga tidak mengesankan - banyak masalah diperhatikan baik dengan fungsionalitas maupun dengan "kekeruhan" antarmuka pengguna. Seringkali dibutuhkan banyak waktu untuk memahami cara menggunakan program - itu harus dipelajari bahkan untuk melakukan tindakan yang paling sederhana. Program lain dapat melakukan sesuatu untuk waktu yang lama dan rajin, tetapi pengguna akan tahu bahwa tidak ada yang ditulis ke MK hanya setelah seluruh firmware selesai dan pembacaan kontrol selanjutnya selesai. Ada juga masalah seperti itu: pengguna mencoba memilih MK-nya dari daftar kristal yang didukung, tetapi tidak ada dalam daftar. Dalam hal ini, tidak mungkin untuk menggunakan program - sebagai aturan, pencantuman dalam daftar MK yang hilang tidak disediakan. Selain itu, memilih pengontrol secara manual dari daftar terlihat aneh, mengingat programmer dalam banyak kasus dapat menentukan sendiri jenis MK. Semua ini dikatakan bukan untuk membuang lumpur pada produk yang ada, tetapi untuk menjelaskan alasan munculnya skrip program "Perpetuum M" yang dijelaskan dalam artikel ini. Masalahnya benar-benar ada, dan ini terutama menyangkut pemula yang tidak selalu berhasil mengatasi "tembok" ini untuk mengambil langkah pertama mereka ke dunia mikrokontroler. Skrip yang diusulkan memperhitungkan kekurangan yang ditemukan di program lain. "Transparansi" maksimum dari algoritme telah diterapkan, antarmuka pengguna yang sangat sederhana yang tidak memerlukan studi dan tidak meninggalkan kesempatan untuk bingung dan "mengklik di tempat yang salah". Dengan tidak adanya MK yang diperlukan di antara yang didukung, dimungkinkan untuk menambahkan deskripsinya sendiri, mengambil data yang diperlukan dari dokumentasi yang diunduh dari situs web pengembang MK. Dan yang terpenting, naskahnya terbuka untuk dipelajari dan dimodifikasi. Siapa pun dapat, setelah membukanya di editor teks, mempelajari dan mengeditnya sesuai kebijaksanaan mereka, mengubah fungsi yang ada sesuai selera mereka dan menambahkan yang hilang.

Versi pertama skrip dibuat pada Juni 2015. Versi ini hanya mendukung ATtiny dan ATmega MCU Atmel dengan fungsi tulis / baca memori flash, dengan bit konfigurasi yang disetel, dengan deteksi tipe pengontrol otomatis. Penulisan dan pembacaan EEPROM tidak diterapkan. Ada rencana untuk melengkapi fungsionalitas skrip: tambahkan penulisan dan baca EEPROM , menerapkan dukungan untuk pengontrol PIC, dll. Untuk alasan ini, skrip belum diterbitkan. Namun karena kurangnya waktu, implementasi rencana itu tertunda, dan agar yang terbaik tidak menjadi musuh yang baik, diputuskan untuk menerbitkan versi yang ada. fungsi yang diterapkan tidak akan cukup, tolong jangan kecewa. Dalam hal ini, Anda dapat mencoba menambahkan sendiri fungsi yang diinginkan. Saya tidak akan menyembunyikannya: ide membuat skrip ini awalnya juga mengandung makna pendidikan.Setelah memahami algoritma dan menambahkan sesuatu dari Anda sendiri, Anda akan dapat lebih memahami pekerjaan MK dalam mode pemrograman, sehingga di masa depan Anda tidak akan berada di posisi cewek di depan layer mobil yang bergerak, dengan serius melihat bagian dalamnya dan tidak mengerti mengapa mobil itu "tidak mau jalan".

2. Antarmuka MK dalam mode pemrograman

Ada beberapa cara berbeda untuk menempatkan pengontrol ke mode pemrograman dan bekerja dengannya dalam mode ini. Yang paling mudah diterapkan untuk pengontrol seri ATtiny dan ATmega mungkin adalah SPI. Kami akan menggunakannya.

Namun, sebelum melanjutkan ke pertimbangan sinyal-sinyal yang diperlukan untuk pembentukan SPI, kami akan melakukan sejumlah reservasi. Mikrokontroler memiliki bit konfigurasi. Ini seperti sakelar sakelar, sakelar yang memungkinkan Anda untuk mengubah beberapa properti sirkuit mikro sesuai dengan kebutuhan proyek. Secara fisik, ini adalah sel-sel memori non-volatile, seperti yang di dalamnya program ditulis. Perbedaannya adalah jumlahnya sangat sedikit (hingga tiga byte untuk ATmega), dan mereka tidak termasuk dalam ruang alamat memori apa pun. Menulis dan membaca data konfigurasi dilakukan dengan perintah terpisah dari mode pemrograman MK. Sekarang penting untuk dicatat bahwa beberapa bit konfigurasi mempengaruhi kemampuan untuk menggunakan SPI. Dengan beberapa nilainya, ternyata SPI tidak bisa digunakan. Jika Anda menemukan mikrokontroler seperti itu, maka metode yang diusulkan dalam artikel ini tidak akan membantu. Dalam hal ini, Anda harus mengubah pengaturan bit konfigurasi di programmer, yang mendukung mode pemrograman yang berbeda, atau menggunakan mikrokontroler yang berbeda. Tetapi masalah ini hanya menyangkut MK yang digunakan, atau yang dengannya seseorang telah "bermain" dengan tidak berhasil. Faktanya adalah bahwa MK baru datang dengan pengaturan bit konfigurasi yang tidak mencegah penggunaan SPI. Ini juga dikonfirmasi oleh hasil pengujian skrip programmer untuk program "Perpetuum M", di mana empat MK yang berbeda (ATmega8, ATmega128, ATtiny13, ATtiny44) berhasil di-flash. Mereka semua baru. Pengaturan awal bit konfigurasi konsisten dengan dokumentasi dan tidak mengganggu penggunaan SPI.

Mengingat hal di atas, Anda harus memperhatikan bit berikut. Bit SPIEN secara eksplisit mengaktifkan atau menonaktifkan penggunaan SPI, oleh karena itu, dalam kasus kami, nilainya harus permisif. Bit RSTDISBL mampu mengubah salah satu output sirkuit mikro (yang telah ditentukan sebelumnya) menjadi input sinyal "reset", atau tidak untuk mengubahnya (tergantung pada nilai yang ditulis ke bit ini). Dalam kasus kami, input "reset" diperlukan (jika tidak ada, tidak mungkin untuk mentransfer MK ke mode pemrograman melalui SPI). Ada juga bit dari grup CKSEL yang menentukan sumber sinyal clock. Mereka tidak mencegah penggunaan SPI, tetapi mereka juga perlu diingat, karena jika tidak ada pulsa clock, atau jika frekuensinya lebih rendah dari yang diizinkan untuk kecepatan SPI tertentu, tidak ada hal baik yang akan terjadi. Biasanya, MCU baru yang memiliki osilator RC internal memiliki bit grup CKSEL yang disetel untuk menggunakannya. Kami cukup puas dengan ini - pencatatan jam kerja disediakan tanpa upaya tambahan dari pihak kami. Anda tidak perlu menyolder resonator kuarsa, Anda juga tidak perlu menghubungkan generator eksternal. Jika bit yang ditentukan berisi pengaturan yang berbeda, Anda harus menjaga pencatatan jam kerja sesuai dengan pengaturan tersebut. Dalam hal ini, mungkin perlu untuk menghubungkan resonator kuarsa atau generator jam eksternal ke MK. Tetapi dalam kerangka artikel ini, kami tidak akan mempertimbangkan bagaimana ini dilakukan. Contoh menghubungkan MK untuk pemrograman yang terdapat dalam artikel ini dirancang untuk kasus yang paling sederhana.

Beras. 1. Komunikasi SPI dalam mode pemrograman

Sekarang mari kita beralih ke Gambar 1, diambil dari dokumentasi untuk MK ATmega128A. Ini menunjukkan proses pengiriman satu byte ke MCU dan secara bersamaan menerima satu byte dari MCU. Kedua proses ini, seperti yang kita lihat, menggunakan pulsa clock yang sama yang berasal dari programmer ke mikrokontroler pada input SCK - salah satu pin dari sirkuit mikro, yang peran ini ditetapkan dalam mode pemrograman SPI. Dua jalur sinyal lagi menyediakan penerimaan dan transmisi data satu bit per jam. Melalui input MOSI, data masuk ke mikrokontroler, dan data yang dibaca diambil dari output MISO. Perhatikan dua garis putus-putus yang ditarik dari SCK ke MISO dan MOSI. Mereka menunjukkan pada saat mikrokontroler "menelan" bit data yang ditetapkan pada input MOSI, dan pada saat apa ia menetapkan bit datanya sendiri pada output MISO. Semuanya cukup sederhana. Tetapi untuk memasukkan MK ke mode pemrograman, kita masih membutuhkan sinyal RESET. Jangan lupa juga tentang kabel GND umum dan catu daya VCC. Secara total, ternyata hanya 6 kabel yang perlu dihubungkan ke mikrokontroler untuk mem-flash-nya melalui SPI. Di bawah ini kami akan menganalisis ini secara lebih rinci, tetapi untuk saat ini kami akan menambahkan bahwa pertukaran data dengan MK dalam mode pemrograman melalui SPI dilakukan dalam paket 4 byte. Byte pertama dari setiap paket pada dasarnya sepenuhnya dicadangkan untuk pengkodean perintah. Byte kedua, tergantung pada yang pertama, dapat berupa kelanjutan dari kode perintah, atau bagian dari alamat, atau dapat memiliki nilai arbitrer. Byte ketiga digunakan terutama untuk mentransmisikan alamat, tetapi dalam banyak perintah dapat memiliki nilai yang berubah-ubah. Byte keempat biasanya membawa data, atau memiliki nilai arbitrer. Bersamaan dengan transfer byte keempat, beberapa perintah menerima data yang berasal dari MK. Rincian setiap instruksi dapat ditemukan di dokumentasi pengontrol dalam tabel yang disebut "Set Instruksi Pemrograman Serial SPI". Untuk saat ini, kami hanya mencatat bahwa seluruh pertukaran dengan pengontrol dibangun dari urutan paket 32-bit, di mana masing-masing tidak lebih dari satu byte informasi berguna yang ditransmisikan. Ini tidak terlalu optimal, tetapi secara umum berfungsi dengan baik.

3. Menghubungkan MK untuk pemrograman

Untuk memastikan bahwa semua sinyal yang diperlukan dipasok ke input mikrokontroler untuk mengatur antarmuka SPI dan membaca data dari output MISO-nya, tidak perlu membuat programmer. Ini mudah dilakukan dengan konverter USB-RS232TTL yang paling umum.

Di Internet, Anda sering dapat menemukan informasi bahwa konverter semacam itu lebih rendah, bahwa tidak ada yang serius yang dapat dilakukan dengan mereka. Tetapi untuk sebagian besar model konverter, pendapat ini salah. Ya, ada konverter untuk dijual yang tidak memiliki semua input dan output yang tersedia dibandingkan dengan port COM standar (misalnya, hanya TXD dan RXD), sementara memiliki desain yang tidak dapat dipisahkan (sirkuit mikro diisi dengan plastik - itu tidak mungkin untuk sampai pada kesimpulannya). Tapi ini tidak layak dibeli. Dalam beberapa kasus, Anda bisa mendapatkan input dan output port yang hilang dengan menyolder kabel langsung ke sirkuit mikro. Contoh konverter "ditingkatkan" seperti itu ditunjukkan pada Gambar 2 (sirkuit mikro PL-2303 - lebih lanjut tentang tujuan pinnya dalam artikel ""). Ini adalah salah satu model termurah, tetapi memiliki kelebihan tersendiri jika digunakan dalam desain buatan sendiri. Kabel adaptor berfitur lengkap dengan konektor sembilan pin standar di ujungnya, seperti port COM, juga tersebar luas. Mereka berbeda dari port COM biasa hanya di tingkat TTL dan ketidakcocokan dengan perangkat lunak usang dan beberapa perangkat keras lama. Dapat juga dicatat bahwa kabel berdasarkan chip CH34x dalam berbagai pengujian ekstrem menunjukkan diri mereka jauh lebih andal dan stabil dibandingkan dengan konverter berdasarkan PL-2303. Namun, dalam penggunaan normal, perbedaannya tidak terlalu mencolok.

Saat memilih konverter USB-RS232TTL, Anda juga harus memperhatikan kompatibilitas drivernya dengan versi sistem operasi yang digunakan.

Mari kita pertimbangkan secara lebih rinci prinsip menghubungkan mikrokontroler dan konverter USB-RS232TTL menggunakan contoh empat model MK yang berbeda: ATtiny13, ATtiny44, ATmega8 dan ATmega128. Gambar 3 menunjukkan skema umum koneksi semacam itu. Mungkin mengejutkan Anda bahwa sinyal RS232 (RTS, TXD, DTR dan CTS) disalahgunakan. Tapi jangan khawatir tentang itu: program Perpetuum M dapat bekerja dengannya secara langsung - atur nilai output dan baca status input. Bagaimanapun, konverter USB-RS232TTL yang banyak digunakan berdasarkan chip CH34x dan PL-2303 memberikan peluang seperti itu - ini telah diverifikasi. Konverter populer lainnya juga tidak akan menjadi masalah, karena fungsi standar Windows digunakan untuk mengakses port.

Resistor yang ditunjukkan pada diagram umum, pada prinsipnya, tidak dapat dipasang, tetapi tetap lebih baik untuk dipasang. Apa tujuan mereka? Menggunakan TTL "input dan output dari konverter dan catu daya lima volt dari mikrokontroler, dengan demikian kami menghilangkan kebutuhan untuk mencocokkan level logis - semuanya cukup benar. Ini berarti bahwa koneksi dapat langsung. Tetapi apa pun bisa terjadi selama eksperimen. Misalnya, menurut hukum kekejaman, obeng bisa jatuh tepat di tempat yang tidak bisa jatuh, dan menutup sesuatu yang tidak boleh ditutup. Tentu saja, apa pun bisa berubah. menjadi "obeng. Resistor dalam hal ini terkadang mengurangi konsekuensinya. Lebih dari satu tujuannya adalah untuk menghilangkan kemungkinan konflik keluaran. Faktanya adalah bahwa pada akhir pemrograman mikrokontroler masuk ke operasi normal, dan itu mungkin terjadi bahwa outputnya terhubung ke output konverter (RTS, TXD atau DTR) juga menjadi output, sesuai dengan yang baru saja direkam dalam program MK.Dalam hal ini, akan sangat buruk jika dua output yang terhubung langsung "bertarung" - coba untuk mengatur tingkat logika yang berbeda. Dalam "pertarungan" seperti itu seseorang bisa "kalah", tetapi kita tidak membutuhkan ini.

Nilai dari tiga resistor dipilih pada level 4,3 kOhm. Ini berlaku untuk koneksi antara output konverter dan input mikrokontroler. Keakuratan resistor tidak berperan: Anda dapat mengurangi resistansi menjadi 1 KΩ atau meningkatkannya menjadi 10 KΩ (tetapi dalam kasus kedua, risiko interferensi meningkat saat menggunakan kabel panjang dalam perjalanan ke MC). Adapun koneksi antara input konverter (CTS) dan output mikrokontroler (MISO), resistor 100 Ohm digunakan di sini. Ini karena kekhasan input konverter yang digunakan. Selama pengujian, konverter digunakan pada chip PL-2303, yang inputnya, tampaknya, ditarik ke daya plus dengan resistansi yang relatif rendah (berurutan beberapa ratus ohm). Untuk "membunuh pull-up" saya harus meletakkan resistor dengan resistansi kecil. Namun, Anda tidak bisa meletakkannya sama sekali. Pada konverter, ini selalu merupakan input. Itu tidak bisa menjadi jalan keluar, yang berarti tidak akan ada konflik jalan keluar dalam perkembangan peristiwa apa pun.

Jika IC memiliki pin AVCC khusus untuk menyalakan konverter A/D (seperti ATmega8 atau ATmega128), maka harus dihubungkan ke pin daya umum VCC. Beberapa IC memiliki lebih dari satu pin daya VCC atau lebih dari satu GND. Misalnya, ATmega128 memiliki 3 pin GND dan 2 pin VCC. Dalam desain permanen, lebih baik menghubungkan kesimpulan dengan nama yang sama satu sama lain. Dalam kasus kami, pada saat pemrograman, Anda dapat menggunakan satu output VCC dan GND.

Dan inilah tampilan koneksi ATtiny13. Gambar tersebut menunjukkan penetapan pin yang digunakan saat memprogram melalui SPI. Di sebelah foto - bagaimana koneksi sementara terlihat dalam kenyataan.


Seseorang mungkin mengatakan bahwa ini tidak serius - koneksi kabel. Tapi kami adalah orang-orang yang bijaksana. Tujuan kami adalah memprogram mikrokontroler dengan waktu dan sumber daya minimum lainnya, dan tidak untuk pamer di depan seseorang. Kualitas tidak menderita. Metode "pada posting" dalam hal ini cukup efektif dan dibenarkan. Firmware pengontrol adalah prosedur satu kali, jadi tidak masuk akal untuk menggantungnya dengan "rhinestones". Jika seharusnya mengubah firmware di masa depan tanpa melepas pengontrol dari sirkuit (dalam produk jadi), maka ini diperhitungkan dalam pemasangan selama pembuatan perangkat. Biasanya, konektor dipasang untuk tujuan ini (RESET, SCK, MOSI, MISO, GND), dan MK dapat di-flash bahkan setelah dipasang di papan. Tapi ini sudah merupakan kesenangan kreatif. Kami mempertimbangkan kasus paling sederhana.

Sekarang mari kita beralih ke ATtiny44 MK. Semuanya hampir sama di sini. Menurut gambar dan foto, bahkan seorang pemula tidak akan sulit untuk mengetahui koneksinya. Seperti ATtiny44, Anda dapat menghubungkan MK ATtiny24 dan ATtiny84 - penetapan pin untuk trinitas ini sama.


Contoh lain dari koneksi sementara pengontrol untuk pemrogramannya adalah ATmega8. Ada lebih banyak kesimpulan di sini, tetapi prinsipnya sama - beberapa kabel, dan sekarang pengontrol siap untuk "mengisi" informasi ke dalamnya. Kabel hitam ekstra di foto, yang berasal dari pin 13, tidak berpartisipasi dalam pemrograman. Ini dirancang untuk menghilangkan sinyal suara darinya setelah MK keluar dari mode pemrograman. Ini disebabkan oleh fakta bahwa selama debugging skrip untuk "Perpetuum M", program kotak musik diunduh ke MK.


Seringkali satu pengontrol tersedia dalam kasus yang berbeda. Pada saat yang sama, penugasan pin untuk setiap kasing didistribusikan dengan caranya sendiri. Jika kasing pengontrol Anda tidak terlihat seperti yang ditunjukkan pada gambar, tentukan tujuan pin sesuai dengan dokumentasi teknis, yang dapat diunduh dari situs web pengembang MK.

Untuk melengkapi gambar, mari kita lihat koneksi chip MK dengan sejumlah besar "kaki". Tujuan dari kabel hitam ekstra di foto yang berasal dari pin 15 persis sama dengan kasus ATmega8.


Anda mungkin sudah melihat bahwa semuanya cukup sederhana. Siapa yang tahu bagaimana menghitung kesimpulan dari sirkuit mikro (dari tanda dalam lingkaran berlawanan arah jarum jam), dia akan mengetahuinya. Dan jangan lupa untuk berhati-hati. Sirkuit mikro suka rapi dan tidak memaafkan sikap ceroboh terhadap diri mereka sendiri.

Sebelum melanjutkan ke bagian perangkat lunak, pastikan driver konverter USB-RS232TTL telah diinstal dengan benar (periksa Windows Device Manager). Ingat atau tulis nomor port COM virtual yang muncul saat Anda menghubungkan konverter. Nomor ini perlu dimasukkan dalam teks skrip, yang dapat Anda baca di bawah.

4. Skrip - pemrogram untuk "Perpetuum M"

Kami menemukan bagian perangkat keras dari "programmer". Ini sudah setengah pertempuran. Sekarang tinggal berurusan dengan bagian perangkat lunak. Perannya akan dilakukan oleh program "Perpetuum M" di bawah kendali skrip, di mana semua fungsi yang diperlukan untuk berinteraksi dengan mikrokontroler diimplementasikan.

Arsip dengan skrip harus dibongkar ke folder yang sama tempat program perpetuum.exe berada. Dalam hal ini, ketika Anda menjalankan file perpetuum.exe, menu dengan daftar skrip yang diinstal akan ditampilkan di layar, di antaranya akan ada baris "programmer MK AVR" (mungkin satu-satunya). Ini adalah garis yang kita butuhkan.

Script ini terletak di folder PMS di file "MK Programmer AVR.pms". File ini dapat dilihat, dipelajari, dan diedit sesuai kebutuhan di editor teks umum seperti Windows Notepad. Sebelum menggunakan skrip, kemungkinan besar Anda perlu membuat perubahan pada teks yang terkait dengan pengaturan port. Untuk melakukan ini, periksa nama port yang digunakan di Pengelola Perangkat Windows dan, jika perlu, buat perubahan yang sesuai pada baris "PortName="COM4";" - alih-alih nomor 4, bisa ada nomor lain. Juga, saat menggunakan model konverter USB-RS232TTL yang berbeda, mungkin perlu untuk mengubah pengaturan inversi sinyal (baris skrip dimulai dengan kata "Tinggi"). Anda dapat memeriksa inversi sinyal oleh konverter USB-RS232TTL menggunakan salah satu contoh yang terdapat dalam instruksi untuk program Perpetuum M (bagian fungsi untuk bekerja dengan port).

Subfolder MK_AVR berisi file dengan deskripsi pengontrol yang didukung. Jika pengontrol yang diinginkan tidak ada di antara mereka, Anda dapat menambahkan yang diperlukan sendiri, bertindak dengan analogi. Ambil salah satu file sebagai sampel, dan menggunakan editor teks, masukkan data yang diperlukan, ambil dari dokumentasi untuk mikrokontroler Anda. Yang utama adalah hati-hati, masukkan data tanpa kesalahan, jika tidak MK tidak akan terprogram, atau salah terprogram. Versi asli mendukung 6 mikrokontroler: ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8 dan ATmega128. Script mengimplementasikan pengenalan otomatis dari pengontrol yang terhubung - Anda tidak perlu menentukannya secara manual. Jika tidak ada pengenal yang dibaca dari MK di antara deskripsi yang tersedia, sebuah pesan ditampilkan bahwa pengontrol tidak dapat dikenali.

Arsip dengan skrip juga berisi informasi tambahan. Folder "AVR controllers inc files" berisi kumpulan file deskripsi pengontrol yang sangat berguna dan lengkap. File-file ini digunakan saat menulis program Anda sendiri untuk MK. Empat folder lagi "MusicBox_..." berisi file dengan program assembler dan firmware yang siap untuk diunduh ke MK secara terpisah untuk ATtiny13, ATtiny44, ATmega8 dan ATmega128. Jika Anda telah menghubungkan salah satu MK ini untuk pemrograman, seperti yang disarankan dalam artikel ini, maka Anda dapat mem-flash-nya sekarang - Anda akan mendapatkan kotak musik. Lebih lanjut tentang itu di bawah ini.

Ketika Anda memilih baris "Programmer MK AVR" di menu skrip, skrip mulai dijalankan. Pada saat yang sama, ia membuka port, mengirim perintah untuk beralih ke mode pemrograman ke MC, menerima konfirmasi dari MC tentang transisi yang berhasil, meminta pengidentifikasi MC dan mencari deskripsi MC ini dengan pengidentifikasinya di antara file yang tersedia dengan deskripsi. Jika tidak menemukan deskripsi yang diperlukan, itu mengeluarkan pesan yang sesuai. Jika deskripsi ditemukan, maka menu utama programmer terbuka. Anda dapat melihat tangkapan layarnya pada Gambar 8. Tidak sulit untuk mengetahuinya lebih lanjut - menunya sangat sederhana.

Dalam versi skrip pertama, beberapa fungsi programmer penuh tidak diimplementasikan. Misalnya, tidak ada cara untuk membaca dan menulis ke EEPROM. Tetapi jika Anda membuka skrip di editor teks, Anda akan melihat bahwa itu memiliki ukuran yang sangat kecil, terlepas dari kenyataan bahwa hal utama sudah diterapkan di dalamnya. Ini menunjukkan bahwa menambahkan fitur yang hilang tidak begitu sulit - bahasanya sangat fleksibel, memungkinkan Anda untuk mengimplementasikan fungsionalitas yang kaya dalam program kecil. Tetapi untuk kebanyakan kasus, bahkan fungsi yang ada sudah cukup.

Beberapa batasan fungsionalitas dijelaskan langsung dalam teks skrip:
// mengimplementasikan record hanya dari alamat nol (Extended Segment Address Record diabaikan, LOAD OFFSET juga)
//urutan dan kontinuitas catatan dalam file HEX tidak dicentang
//checksum tidak dicentang
Ini berlaku untuk bekerja dengan file HEX, dari mana kode firmware untuk MK diambil. Jika file ini tidak rusak, memeriksa checksum tidak akan memengaruhi apa pun. Jika terdistorsi, tidak mungkin mendeteksinya melalui skrip. Pembatasan yang tersisa dalam banyak kasus tidak akan merugikan, tetapi Anda tetap harus mengingatnya.

5. Kotak musik - kerajinan mudah untuk pemula

Jika Anda memiliki salah satu mikrokontroler ini: ATtiny13, ATtiny44, ATmega8 atau ATmega128, Anda dapat dengan mudah mengubahnya menjadi kotak musik atau kartu musik. Untuk melakukan ini, cukup menulis firmware yang sesuai ke dalam MK - salah satu dari empat yang terletak di folder "MusicBox_..." dalam satu arsip dengan skrip. Kode firmware disimpan dalam file dengan ekstensi ".hex". Menggunakan ATmega128 untuk kerajinan seperti itu, tentu saja, "gemuk", seperti halnya ATmega8. Tapi itu bisa berguna untuk pengujian atau eksperimen, dengan kata lain - untuk tujuan pendidikan. Teks program assembler juga dilampirkan. Program tidak dibuat dari awal - program kotak musik dari buku A.V. Belov "Mikrokontroler AVR dalam praktik radio amatir" diambil sebagai dasar. Program asli telah mengalami sejumlah perubahan signifikan:
1. disesuaikan untuk masing-masing dari empat MK: ATtiny13, ATtiny44, ATmega8 dan ATmega128
2. tombol dihilangkan - tidak ada yang perlu dihubungkan ke pengontrol, kecuali daya dan pemancar suara (melodi dimainkan satu demi satu dalam loop tanpa akhir)
3. durasi setiap not dikurangi dengan durasi jeda antar not untuk menghilangkan gangguan irama musik
4. melodi kedelapan terhubung, tidak digunakan dalam versi buku
5. subjektif: beberapa "perbaikan" untuk pengoptimalan dan persepsi algoritma yang lebih mudah

Dalam beberapa melodi seseorang dapat mendengar kepalsuan dan bahkan kesalahan, terutama dalam "Senyum" - di tengah. Kode melodi diambil dari buku (lebih tepatnya, diunduh dari situs web penulis bersama dengan file asm asli) dan tidak diubah. Ternyata, ada kesalahan dalam pengkodean melodi. Tapi ini bukan masalah - mereka yang "berteman" dengan musik akan dengan mudah mengetahuinya dan memperbaiki semuanya.

Di ATtiny13, karena kurangnya penghitung 16-bit untuk memainkan not, perlu menggunakan penghitung 8-bit, yang menyebabkan beberapa penurunan akurasi suara not. Tapi dengan telinga itu hampir tidak terlihat.

Tentang bit konfigurasi. Pengaturannya harus sesuai dengan keadaan mikrokontroler baru. Jika MCU Anda pernah digunakan di suatu tempat sebelumnya, Anda perlu memeriksa status bit konfigurasinya, dan, jika perlu, menyesuaikannya dengan pengaturan mikrokontroler baru. Anda dapat mengetahui status bit konfigurasi mikrokontroler baru dari dokumentasi untuk MK ini (bagian "Fuse Bits"). Pengecualian adalah ATmega128. MCU ini memiliki bit M103C yang memungkinkan mode kompatibilitas dengan ATmega103 yang lebih lama. Mengaktifkan bit M103C sangat mengurangi kemampuan ATmega128, dan bit ini aktif pada MK baru. Anda perlu mengatur ulang M103C ke status tidak aktif. Untuk memanipulasi bit konfigurasi, gunakan bagian yang sesuai dari menu skrip programmer.

Tidak masuk akal untuk memberikan diagram kotak musik: hanya memiliki mikrokontroler, catu daya, dan pemancar suara piezo. Daya disuplai dengan cara yang persis sama seperti yang kami lakukan saat memprogram MK. Pemancar suara terhubung antara kabel biasa (output GND dari pengontrol) dan salah satu output MK, yang jumlahnya dapat ditemukan dalam file dengan kode assembler program (*.asm). Di awal teks program untuk setiap MK di komentar ada baris: "sinyal suara dihasilkan pada output XX". Ketika pemrogram skrip berakhir, mikrokontroler keluar dari mode pemrograman dan beralih ke mode operasi normal. Pemutaran lagu segera dimulai. Dengan menghubungkan pemancar suara, Anda dapat memeriksa ini. Biarkan sounder terhubung saat memprogram chip hanya jika suara diambil dari pin yang tidak digunakan di SPI, jika tidak, kapasitansi tambahan pada pin dapat mengganggu pemrograman.

Bagaimana cara mem-flash mikrokontroler AVR? Itulah yang akan kami lakukan dalam artikel ini.

Apa itu "flash" dan "firmware"?

Mari kita definisikan dulu apa arti kata itu "kilatan"? Saya pikir Anda sering mendengar ungkapan seperti "flash telepon", "firmware telah terbang", "firmware bengkok" dll. Apa "firmware"?

Firmware, secara kasar, adalah sistem operasi untuk perangkat kecil seperti ponsel, pemutar MP3, kamera digital, dan sebagainya. Artinya, ini adalah program kecil yang mengontrol perangkat ini. Anda juga sering mendengar ini: "Ponsel saya "kereta", saya sangat membutuhkannya “reflash“.

Dalam hal ini, ini berarti Anda perlu menginstal ulang sistem operasi pada ponsel Anda. Cara, “flash MK” berarti mengunggah program di dalamnya yang akan mengontrol MK ini, dan MK sudah akan mengontrol beberapa perangkat. Artinya, secara teori, MK adalah perantara antara program dan beberapa perangkat yang perlu dikendalikan ;-)


Peralatan untuk firmware MK

Jadi, apa yang kita perlukan untuk mem-flash MK?

  1. mikrokontroler itu sendiri.
  2. Komputer dengan perangkat lunak pra-instal (SW).
  3. Programmer.
  4. Beberapa jumper.
  5. Papan roti. Saya akan merekomendasikan membeli kit AVR pemula segera. Perangkat ini bertenaga USB.
  6. Lengan lurus tumbuh dari tempat yang tepat.

Kami setuju untuk menggunakan Atiny2313 MK dalam paket DIP-20:

Mempersiapkan MK untuk firmware

Dalam artikel sebelumnya, kami mempertimbangkan programmer Gromov. Kerugian utamanya adalah kita membutuhkan port COM, yang hampir tidak dapat ditemukan di komputer sekarang, tetapi ada konektor USB di setiap komputer. Oleh karena itu, diputuskan untuk membeli programmer USB termurah untuk AVR MK. Programmer seperti itu disebut dan terlihat seperti ini


Jika Anda menggali dengan baik pada Ali, Anda dapat menemukan harga yang sangat manis untuk programmer seperti itu. Sebagai contoh, . Anda bahkan mungkin merasa lebih murah. Jika Anda mengambil dari penjual lain, maka perhatikan baik-baik prasasti dan elemen radionya terletak persis seperti di foto saya. Rata-rata, harganya pada saat penulisan adalah sekitar 120 rubel. Pemrogram seperti itu dalam kasus ini akan sedikit lebih mahal.

Ini dia tampilan belakangnya:


Konektor yang berfungsi terlihat seperti ini:


Pemrogram juga dilengkapi dengan kabel


yang di satu ujung menempel pada konektor kerja programmer:


Kami akan menghubungkan ujung kabel yang lain ke MK.


Jika Anda perhatikan lebih dekat, Anda dapat mengetahui pin mana di konektor yang pertama. Panah akan menunjuk ke pin pertama konektor:


Setelah Anda mengetahui di mana pin pertama berada, Anda dapat dengan mudah mengidentifikasi pin lainnya:


Jadi, tugas kita adalah menghubungkan output MK ke output programmer.

Untuk melakukan ini, kami mencolokkan kabel ke jack MOSI, RST, SCK, MISO, VTG (VCC), GND ke konektor kabel. GND saya mengambil soket 10, adalah mungkin dan lain, di mana GND ditulis. Sebanyak 6 kabel jumper:


VTG (alias VCC) kita berpegang teguh pada kaki ke-20 MK

SCK(UCSK) kami berpegang teguh pada MK kaki 19

SUP KEDELAI JEPANG kita berpegang teguh pada MK 18 kaki

MOSI untuk 17 kaki

GND untuk 10 kaki

RST di leg pertama

Seharusnya menjadi seperti ini:


Setelah mencolokkan programmer ke port USB PC untuk pertama kalinya, Pengaturan perangkat kita akan diberikan perangkat baru:

Kami tidak takut, unduh pengarsip di sini, buka kemasannya dan tunjukkan jalurnya saat memasang "kayu bakar". Ketika "kayu bakar" diinstal pada programmer, kita akan melihat sesuatu seperti ini:

Semuanya baik-baik saja, programmer siap untuk bertempur.

Dalam arsip yang sama kami menemukan folder "avrdudeprog", buka, temukan file yang dapat dieksekusi AVRDUDEPROG di sana dan jalankan. Ini adalah cangkang perangkat lunak untuk mem-flash MK menggunakan programmer kami.

Dia terlihat seperti ini. Jangan lupa untuk memilih MK kami dalam daftar.

Untuk mem-flash MK, kita perlu memilih file dengan ekstensi HEX. Jadi inilah file saya. Pertama-tama, saya menekan tombol "Hapus semuanya". Bagaimana jika seseorang telah menggunakan MK dan beberapa program telah diunggah di sana? Oleh karena itu, sebelum melakukan flashing, kita hapus memori MK tersebut. Jika "cuci" berhasil, maka program akan memberi kita pesan seperti ini:

Berkedip MK AVR

Klik pada tombol pemilihan file:

Dan sekarang kita pilih file kita "Pelajaran 1.hex". Ini adalah program kami.

Dan sekarang kita tekan tombol "Pemrograman"

Setelah semuanya berjalan dengan baik, sesuatu seperti ini akan ditampilkan:

Tapi itu tidak semua! Seperti yang Anda ingat, pada artikel terakhir kami mengatur frekuensi menjadi 8 megahertz. Untuk menghindari kebingungan, sekarang kita perlu membagi frekuensi ini dengan 8. Untuk ini, ada sekering yang membagi frekuensi clock dengan 8. Kami menempatkan penanda pada “sekring langsung”, lalu centang kotak untuk CKDIV.

Setelah Anda melakukan dua langkah ini, klik tombol "Pemrograman":

Memeriksa MK di perangkat keras

Sekarang kami merakit sirkuit kami, yang disebutkan dalam artikel terakhir:


dan nikmati hasilnya:

Dengan posting ini, saya ingin mulai menerbitkan siklus di mana teknik dasar untuk mengembangkan, mem-flash, dan menyiapkan perangkat pada mikrokontroler akan dipertimbangkan secara rinci. Posting juga akan berguna bagi mereka yang hanya akan mengulang perangkat yang sudah jadi tanpa mengganggu diri mereka sendiri dengan pengembangan dan debugging mereka. Kami (saya dan administrasi situs) berharap bahwa penerbitan siklus ini akan membantu banyak pemula dan bukan amatir radio untuk mulai mengembangkan dan (atau) mengulang peralatan berbasis mikrokontroler. Artikel ini akan mengumpulkan dan mensistematisasikan materi dari berbagai sumber terbuka, termasuk majalah Radio favorit kita. Kami akan secara singkat melihat apa itu MK, dan apa yang dimakannya, mengapa kompiler diperlukan, dan jenis hewan mengerikan apa yang duduk di file dengan file *. HEX, *. tempat sampah , *. asm , dll., mari selami sedikit sejarah dan akhirnya buat programmer pertama kita SI-Prog (menurut saya, sangat sederhana, andal, universal, dan tidak sepatutnya dilupakan) dan kami akan mem-flash MK, selain itu, menggunakan contoh spesifik, kami akan menangani cangkang perangkat lunak RopuRgo g 2000 dan IS-Prog . Jadi mari kita mulai. Bukan rahasia lagi bahwa, di antara sirkuit terpadu digital, MK saat ini menempati tempat yang hampir sama dengan amplifier operasional di antara yang analog. Ini adalah perangkat universal, penggunaannya dalam perangkat elektronik untuk berbagai keperluan terus berkembang. Hampir semua perusahaan besar dan menengah yang mengkhususkan diri di bidang elektronik semikonduktor terlibat dalam pengembangan dan produksi MC. Daftar dan parameter utama MK dari beberapa keluarga populer dapat ditemukan, misalnya, di Internet.

Mikrokomputer modern (dulu disebut mikrokomputer chip tunggal) menggabungkan dalam kasus mereka inti prosesor yang kuat, perangkat memori untuk menyimpan program dan data yang dapat dieksekusi, perangkat untuk menerima input dan menghasilkan sinyal output, dan banyak node tambahan. Tren umum "bangunan mikrokontroler" modern adalah penurunan jumlah elemen eksternal yang diperlukan untuk operasi normal. Pada chip sirkuit mikro, tidak hanya pembanding, konverter analog-ke-digital dan digital-ke-analog ditempatkan, tetapi juga semua jenis resistor beban dan "pull-up", sirkuit reset.

Buffer keluaran MK dirancang untuk secara langsung menghubungkan beban yang paling umum, seperti indikator LED. Hampir semua keluaran MK (kecuali, tentu saja, keluaran kabel biasa dan catu daya) dapat digunakan oleh pengembang atas kebijaksanaannya sendiri sebagai masukan atau keluaran. Akibatnya, perangkat yang cukup kompleks dalam hal fungsinya seringkali dapat dilakukan hanya pada satu sirkuit mikro.

Pengurangan konstan dalam biaya mikrokontroler dan perluasan fungsinya telah menurunkan ambang batas kompleksitas perangkat yang disarankan untuk dibangun berdasarkan mereka. Hari ini masuk akal untuk merancang pada MK bahkan perangkat seperti itu, yang implementasinya dengan metode tradisional akan membutuhkan kurang dari selusin sirkuit mikro logis dengan tingkat integrasi menengah dan rendah. Mungkin kendala utama di jalur ini adalah konservatisme pengembang, banyak di antaranya masih menganggap MK sebagai sesuatu yang rumit.

Sementara itu, proses pengembangan program untuk MK dan diagram sirkuit konvensional perangkat digital dalam banyak hal serupa. Dalam kedua kasus, "bangunan" dengan bentuk yang diinginkan dibangun dari "batu bata" dasar, hanya saja "batu bata" berbeda: dalam kasus pertama - satu set elemen logis, yang kedua - satu set perintah mikrokontroler .

Alih-alih berinteraksi antar elemen menggunakan pertukaran sinyal melalui kabel, transfer data dari satu sel memori ke sel memori lainnya di dalam MK. Proses transfer "terpercik" ketika MK berkomunikasi dengan sensor, indikator, aktuator, dan memori eksternal yang terhubung dengannya. Alatnya juga berbeda. Pensil, kertas, besi solder, dan osiloskop digantikan oleh komputer dan programmer, meskipun pada tahap terakhir debugging produk, Anda masih tidak dapat melakukannya tanpa osiloskop dan besi solder.

Kesulitan lain adalah kurangnya dokumentasi teknis lengkap dan literatur referensi dalam bahasa Rusia. Sebagian besar publikasi semacam ini di majalah dan terutama di Internet berbahasa Rusia seringkali tidak lebih dari terjemahan interlinear dari aslinya dalam bahasa Inggris. Selain itu, penerjemah, kadang-kadang sedikit akrab dengan subjek dan terminologi, menafsirkan tempat-tempat "gelap" dengan cara mereka sendiri, dan mereka (tempat-tempat itu) ternyata cukup jauh dari kebenaran Praktis tidak ada perangkat lunak berbahasa Rusia untuk mengembangkan dan men-debug program MK.

Bagi banyak orang, kenalan pertama dengan MK dimulai dengan pengulangan salah satu desain berdasarkan mereka yang diterbitkan di majalah Radio yang sama atau publikasi lain. Dan di sini perbedaan utama antara MC dan sirkuit mikro konvensional segera memanifestasikan dirinya: ia tidak dapat melakukan apa pun yang berguna sampai sebuah program dimasukkan ke dalam perangkat penyimpanan internal (kadang-kadang eksternal), mis. satu set kode yang menentukan urutan operasi yang akan dilakukan. Prosedur untuk menulis kode ke dalam memori MK disebut pemrograman atau firmware (jangan dikelirukan dengan proses sebelumnya mengembangkan program itu sendiri dengan nama yang sama).

Kebutuhan akan firmware, pada pandangan pertama, mungkin tampak seperti kerugian. Faktanya, ini adalah keuntungan utama, berkat itu, dengan membuat, misalnya, hanya satu papan dengan MK dan beberapa indikator dan tombol LED yang terhubung dengannya, jika diinginkan, ubah semuanya menjadi pengukur frekuensi, penghitung pulsa, jam elektronik , meter digital dari setiap kuantitas fisik, remote control dan kontrol dan banyak lagi.

Kemampuan untuk merahasiakan kode program membantu produsen peralatan di MK dalam memerangi pesaing. Benar, kerahasiaan program yang berlebihan sering kali menimbulkan kesulitan tambahan dalam perbaikan atau peningkatan perangkat pada MK dari desain "asing". Tapi itu masalah lain.

Sampai baru-baru ini, ketika mulai merancang struktur pada MC, pengembang menghadapi masalah apakah mungkin untuk menyelesaikan masalah menggunakan perangkat dari satu atau dua jenis yang dikenalnya. Hari ini situasinya telah berubah secara radikal. Dari set MC yang tersedia, seseorang harus memilih salah satu dengan bantuan yang masalah akan diselesaikan secara optimal. Sayangnya, tidak semua orang melakukan ini. Bahkan ada "fashion" tertentu untuk produk dari berbagai jenis, kelompok khusus pendukung MK dari keluarga tertentu terbentuk. Mereka membenarkan pilihan mereka, sebagai suatu peraturan, pada tingkat "suka - tidak suka" Seringkali pendapat negatif tentang perangkat dijelaskan oleh satu upaya yang gagal untuk menggunakannya, seringkali tanpa upaya untuk menganalisis dan menghilangkan penyebab kegagalan. Beberapa perusahaan mendistribusikan dokumen yang disebut "Kebenaran Tentang ..." dengan perbandingan "objektif" perangkat mereka dengan produk pesaing, dan, sebagai suatu peraturan, mendukung yang pertama. Anda seharusnya tidak terlalu mempercayai publikasi semacam itu, akan selalu ada laporan perbandingan dengan hasil dan kesimpulan kembali.

Saya ingin mengatakan bahwa, seperti dalam banyak kasus lain, tidak ada MK yang jelas baik atau buruk, dan tidak mungkin ada. Masing-masing dari mereka mampu menunjukkan hasil yang sangat baik dalam memecahkan masalah kelas tertentu dan hampir tidak mengatasi yang lain. Oleh karena itu berbagai jenis. Sebagai aturan, keuntungan dalam satu parameter disertai dengan penurunan pada yang lain. Contoh paling sederhana: MK yang dirancang untuk beberapa pemrograman ulang selalu lebih mahal daripada rekan yang dapat diprogram satu kali, dan perangkat yang lebih cepat lebih sensitif terhadap kebisingan impuls lambat dan lebih menuntut pelacakan PCB. Tentu saja, ada perangkat universal yang cukup cocok untuk memecahkan kelas masalah yang luas. Namun, jika hanya perlu mengulangi satu atau beberapa desain, tidak ada peluang khusus untuk memilih MK, Anda perlu menggunakan yang ditunjukkan dalam deskripsi atau analog lengkapnya, misalnya, dari antara yang diproduksi oleh perusahaan lain di bawah lisensi. Ketika ditanya apakah mungkin untuk mengganti MK dari satu jenis dengan yang lain, seseorang sering harus memberikan jawaban negatif, meskipun secara teoritis ada kemungkinan seperti itu: Anda hanya perlu mengerjakan ulang program, dan jika jumlah dan tujuan pin dari MK diganti dan diganti berbeda, maka papan sirkuit tercetak.

Ketika datang untuk mengganti mikrokontroler dengan struktur yang sama dan milik keluarga yang sama, atau mengganti produk usang dengan analog modern, sebagai suatu peraturan, dimungkinkan untuk mengadaptasi program. Microchip dan ATMEL bahkan menyertakan rekomendasi untuk adaptasi tersebut dalam data referensi MC-nya. Dalam kasus umum, transfer penuh dari sebuah program ke MK lain membutuhkan tidak hanya "firmware" EPROM yang biasanya diterbitkan, tetapi juga teks sumber lengkap, lebih disukai dengan komentar programmer. Daftar yang diperoleh sebagai hasil pembongkaran "firmware" jauh dari setara penuh. Pemrogram akan membutuhkan kualifikasi yang jauh lebih tinggi daripada yang cukup untuk pengembangan dari awal, dan biaya tenaga kerja tidak akan kurang.

Disarankan untuk memulai pengembangan perangkat secara independen pada MK dan, tentu saja, program untuk itu dari studi dan menyusun diagram blok dari algoritma untuk operasinya. Hanya sesuai dengan hasil tahap ini, Anda dapat membuat pilihan MC yang tepat.

Kami akan membangun cerita kami selanjutnya pada contoh spesifik. Entah bagaimana, baru-baru ini, diperlukan penghitung yang dapat menghitung persimpangan dengan objek tertentu dari batas tertentu dalam satu arah dan yang lain. Melihat melalui edisi majalah Radio, saya menemukan perangkat yang cocok, tetapi tampaknya terlalu rumit (11 sirkuit mikro, termasuk EPROM berkapasitas besar) dan, terlebih lagi, tidak memiliki beberapa fungsi yang diperlukan, khususnya, kemampuan untuk pra- atur pembacaan meter dan ingat statusnya setelah mematikan daya. Ada ide untuk membuat perangkat yang diperlukan pada MK. Untuk alasan yang disebutkan di bawah, MK PIC16F84 (PIC16F84А) dipilih. Akibatnya, skema perangkat dipilih lahir ( Nasi. satu),


hanya berisi dua sirkuit mikro. Perangkat dapat menggunakan mikrokontroler PIC16F84 dan PIC16F84 SEBUAH dengan frekuensi pembatas, jenis casing, dan rentang suhu operasi apa pun (parameter ini ditunjukkan oleh indeks numerik dan alfabet setelah tanda hubung dalam penunjukan chip, misalnya, -101 / P). Dan jika peningkatan program tidak diharapkan, Anda juga dapat menggunakan analog PIC16CR84 yang dapat diprogram satu kali, jika, tentu saja, Anda dapat menemukannya.

Sensor gerakan objek - optocoupler transistor dengan saluran terbuka AOT147B (U1, U2). Beban phototransistor mereka adalah resistor internal yang tersedia di MK. Diperbolehkan menggunakan optocoupler yang terdiri dari cahaya dan fotodioda (fototransistor) yang terpisah. Sensor optik, jika perlu, diganti dengan yang lain: magnetik, kontak, induktif. Hanya penting bahwa ketika dipicu, level logis berubah pada input MK yang sesuai.

Perangkat ini menggunakan indikator LED tujuh segmen empat digit CA56-11SR dari Kingbright. Dimungkinkan juga untuk menggunakan indikator LED tujuh segmen dengananoda, misalnya, empat ALS324B domestik. Satu set resistor DR1 dapat menggantikan satu keluargaresistor 300 ohm konvensional.Program yang perlu dimasukkan ke dalam memori MK DD2 untuk mengubah perangkat menjadi penghitung diberikandi meja. 1. Saat daya dihidupkan, angka nol menyala di semua digit indikator. Setelah setiap eksekusi siklus "U1 diarsir" - "U1 dan U2 diarsir" - "U1 tidak diarsir" - "U2 tidak diarsir" pembacaan bertambah satu. Penghitung dapat dibalik, oleh karena itu, ketika sensor dipicu dalam urutan terbalik, pembacaan menurun dengan jumlah yang sama - 9999 diikuti oleh nol.

Artikel berikutnya dalam siklus akan berbicara tentang bagaimana sirkuit dan program penghitung dibuat dan di-debug, tentang peningkatannya dan pengenalan fungsi tambahan. Contoh ini akan mengilustrasikan fitur utama PIC16F84 MK dan cara bekerja dengan alat pemrograman dan debugging gratis. Mereka digabungkan ke dalam paket MPLAB, versi terbaru yang dapat "diunduh" dari situs Internet www.microchip.com atau www.microchip.ru. Atau dari halaman forum ALEXANDRA Ini juga menjelaskan secara rinci cara menginstalnya.

Untuk memasukkan kode dari tabel. 1 ke memori internal MK, seorang programmer diperlukan. Namun, dia tidak "tahu cara" membaca kode dari halaman Internet, oleh karena itu, pertama-tama, Anda perlu membuat file dengan kode-kode ini di komputer dalam format yang "dapat dimengerti" oleh programmer. Di meja. 1 mereka disajikan dalam format yang disebut HEX yang dikembangkan oleh Intel dan yang telah menjadi standar de facto untuk pemrograman ROM untuk berbagai tujuan. (Saya harus mengatakan bahwa format lain dengan nama yang sama, misalnya, Microchip HEX, tidak ada, nama seperti itu hanya digunakan karena kesalahpahaman). Format serupa yang dikembangkan oleh perusahaan lain belum menemukan aplikasi luas dan dimaksudkan, sebagai suatu peraturan, hanya untuk perangkat keras dan perangkat lunak dari desain mereka sendiri, yang sebagian besar "memahami" format Intel HEX.

Kode dimasukkan ke komputer menggunakan editor teks apa pun, termasuk Microsoft Word, persis dalam bentuk yang diberikan di tab. satu.


Jika Anda memiliki pemindai dan program pengenalan teks seperti FineReader, Anda dapat menggunakannya. Tetapi dalam kasus terakhir, data yang dibaca harus diperiksa terhadap aslinya, karena pengenalan otomatis tidak sempurna (kesalahan mungkin terjadi). Harap dicatat bahwa di HEXfile, hanya karakter titik dua, angka dan huruf latin A - F yang digunakan. Setiap baris dimulai dengan titik dua di posisi pertama dan diakhiri dengan menekan tombol ENTER. Spasi tidak diperbolehkan. Setelah selesai mengetik dan memeriksa kode, simpan file dalam mode "Text DOS" atau "Text Only", beri nama apa pun dengan ekstensi *.hex.

Cukup sering, kode program diterbitkan dalam bentuk yang disebut "memory dump". Ini adalah tabel yang lebih visual (daripada format HEX). Ini terdiri dari baris yang dimulai dengan alamat heksadesimal (biasanya empat digit) diikuti oleh spasi yang dipisahkan oleh kode heksadesimal dua digit yang disimpan dalam sel memori yang berurutan (byte). Alamat di awal baris mengacu pada sel pertama, dan biasanya ada total 16 sel. Sebagai perbandingan, di tab. 2 di sini adalah dump yang berisi data yang sama dengan tab. satu. HEX dan dump dapat dengan mudah dikonversi dari satu ke yang lain sebagai berikut (lihat tab. 3).

Dua karakter pertama setelah titik dua adalah jumlah byte informasi dalam string. Dalam hal ini, ada 16 (10 H ). Ini diikuti oleh alamat byte pertama (0020H), diikuti oleh kode penetapan baris dua digit:

0 - baris berisi data;

1 - baris terakhir file (:00000001 FF); tidak berisi data, jumlah byte dan alamat di dalamnya adalah nol. Dalam banyak kasus, nol byte sudah cukup untuk mengenali string sebagai penghentian;

2 - di area data ada alamat segmen memori, relatif terhadap awalnya, alamat yang ditentukan dalam baris berikut dihitung. Perhatikan bahwa dua byte alamat segmen berada dalam urutan tinggi-rendah. Nomor yang akan ditambahkan ke alamat saat ini diperoleh dengan menggeser kode biner dari alamat segmen dengan empat digit biner ke kiri, yaitu dengan mengalikannya dengan 16;

3 - di area data ada empat byte alamat awal program dalam format IBM PC CS:IP biasa;

4 - di area data ada (dalam urutan dari yang tertinggi ke yang terendah) empat byte dari alamat absolut, yang nilainya, tanpa transformasi apa pun, harus ditambahkan ke alamat yang ditunjukkan pada baris berikut;

5 - sama dengan 04, tetapi menentukan nilai absolut dari alamat awal program.

Baris dengan kode tujuan 02 dan 04 digunakan jika perlu untuk menentukan alamat yang lebih besar dari 0FFFFH. Untuk pemrograman MCU dengan memori kecil (seperti PIC16F84) mereka tidak diperlukan. Namun, terkadang string serupa yang menentukan alamat awal nol ditempatkan di awal file HEX. Itu bisa dihilangkan tanpa rasa sakit.

Baris dengan kode 03 dan 05 sangat jarang, karena alamat awal program MK paling sering ditentukan oleh arsitektur yang terakhir dan tidak dapat diubah. Di MK keluarga PICmicro, itu nol.

Kode tujuan diikuti oleh area data dengan jumlah byte yang ditentukan di awal baris. String diakhiri dengan byte kontrol. Algoritme untuk menghitung nilainya cukup sederhana: delapan bit paling tidak signifikan dari jumlah semua byte string, termasuk panjangnya, dua byte alamat, kode tujuan, data, dan kontrol, harus sama dengan nol.

Format HEX awalnya dirancang untuk menyimpan data 8-bit. Kode dengan kapasitas yang lebih besar dibagi ke dalam jumlah byte yang sesuai, yang ditulis ke file dalam urutan dari rendah ke tinggi. Misalnya, masing-masing instruksi 14-bit dari MK IS16F84 diberi dua byte, dan dua bit paling signifikan dari byte kedua tetap bebas (kode dalam byte ini tidak melebihi 3FH).

Akibatnya, alamat dalam file HEX menjadi dua kali lipat dibandingkan dengan alamat sebenarnya dari instruksi program. Misalnya, garis

:080008008C0003088D000408C0 menjelaskan urutan kode program seperti itu;

Kode Alamat

4008С

5 0803

6008D

7 0804

Beberapa alat perangkat lunak (sebagai aturan, memimpin silsilah mereka bukan dari komputer yang kompatibel dengan IBM) menulis ke file dan melihat byte data dalam urutan terbalik - yang lebih tua, kemudian yang lebih muda. Anda harus memperhatikan ini jika programmer "nakal", tidak ingin membaca file dengan benar.

Format representasi data multi-bit yang dijelaskan sering disebut sebagai Digabung. Kadang-kadang ada opsi lain: file HEX dibagi menjadi dua, salah satunya berisi semua byte yang lebih rendah, dan yang kedua - semua byte atas dari kata-kata program. Format ini disebut Terpisah.

Harap dicatat bahwa file mungkin tidak menentukan urutan kode yang berkelanjutan. Misalnya, di antara kode di dua baris pertama tab. satu celah enam byte tetap tidak terisi (tiga instruksi program). Format HEX tidak memberikan informasi apa pun tentang isinya. Tergantung pada algoritma pemrogram, mereka tetap dalam keadaan awal yang tidak terprogram atau mereka menyimpan kode yang sebelumnya direkam. PADA tab. 2 sel yang tidak digunakan diisi dengan kode nol.

Seperti yang Anda ketahui, MK berisi memori permanen untuk berbagai keperluan: FLASH atau program yang dapat diprogram satu kali, EEPROM untuk data, sel khusus untuk konfigurasi dan identifikasi MK. Informasi yang ditujukan untuk area ini sering disimpan dalam file terpisah dan

pemrograman, Anda harus menentukan secara manual di mana tepatnya untuk menulisnya. Namun dalam keluarga PICmicro, keputusan telah dibuat untuk menggabungkan semuanya dalam satu file HEX. Area yang disebutkan di atas, yang terletak untuk prosesor MK di ruang alamat yang berbeda, digabungkan menjadi satu dari sudut pandang programmer. Untuk PIC16F84, distribusinya adalah sebagai berikut (dalam tanda kurung - alamat "byte"):

0-3FFH (0-7FFH) - kode program; untuk MK dengan memori yang lebih besar, area ini dapat diperluas hingga 1FFFH (3FFFH);

2000N-2003N (4000N-4007N) - kode identifikasi;

2007H (400EN, 400FH) - kata konfigurasi;

2100H-213FH (4200H-427FH) - kode yang ditulis ke alamat 0-3FH EEPROM.

Terlepas dari kenyataan bahwa organisasi EEPROM adalah delapan-bit, dalam hal ini, masing-masing kode yang dimaksudkan untuk itu dalam file HEX diberikan dua byte, yang tertinggi adalah dengan konten nol

BERSAMBUNG >>>>>

SEMUA PERTANYAAN ON

Jadi, jika program sudah terinstal, mari kita mulai mengeksplorasi kemampuannya.

Kami memasang mikrokontroler di panel pemrograman, menghubungkan programmer ke komputer dan menjalankan "PICkit 2 Programmer".

Saat diluncurkan, program melakukan polling kepada pemrogram dan secara otomatis menentukan jenis mikrokontroler yang diprogram oleh bit identifikasi (disebut ID perangkat). Perhatian! Chip dari keluarga Baseline, serta chip EEPROM dan KeeLOG, tidak memiliki ID perangkat. Agar program dapat bekerja dengan sirkuit mikro ini, Anda harus memilih produk tertentu melalui menu "Keluarga Perangkat".

Jika alih-alih gambar yang ramah, yang ini muncul ...

Maka Anda perlu memeriksa apakah kabel usb terhubung dengan benar, dan melalui menu "Alat" - "Periksa Komunikasi", sambungkan kembali perangkat.

Membuka file firmware.

Untuk menulis program MK ke dalam memorinya, Anda harus memilih item menu "File" - "Import Hex".

Kemudian pilih file firmware yang diinginkan di jendela yang terbuka.

Setelah itu, jendela program memory (Program Memory) dan data (EEPROM Data) akan menampilkan isi dari file .hex tersebut.

Merekam acara di MK.

Sekarang Anda dapat memprogram MK. Untuk melakukan ini, klik tombol "Tulis". Proses perekaman memakan waktu 3 - 5 detik.

Tulisan "Pemrograman Berhasil" akan memberi tahu Anda tentang keberhasilan penyelesaian prosedur perekaman.

Untuk kepastian yang lebih besar, Anda dapat melakukan prosedur verifikasi. Ketika Anda mengklik tombol "Verifikasi", program membandingkan data file hex dan data yang direkam dalam MK. Jika verifikasi berhasil, kotak pesan akan menampilkan "Verifikasi Berhasil".

Perhatian! Jika Anda menginstal PIC12F675, PIC12F629 dan mikrokontroler serupa dengan generator jam internal, maka kesalahan mungkin muncul selama verifikasi. Faktanya adalah bahwa Programmer PICkit2 (versi 6.21) menyimpan konstanta kalibrasi, dan kemudian menulisnya ke sel memori terakhir MK. Dapat dipahami bahwa file firmware asli dan data yang direkam dalam memori akan berbeda. Konstanta kalibrasi akan dibahas kemudian.

Tombol cepat.

Tombol "Impor Hex + Tulis Perangkat Otomatis" akan menarik bagi mereka yang ingin "mendorong firmware" ke MK dengan menekan satu tombol. Satu klik dan program akan meminta Anda untuk memilih file firmware, dan kemudian segera menulisnya ke MK.

Tombol "Baca Perangkat + Ekspor File Hex" melakukan fungsi sebaliknya - tombol ini membaca data dari MK dan menawarkan untuk menyimpan file firmware ke file .hex.

Mengubah bit konfigurasi.

Bit konfigurasi mengatur parameter dasar untuk pengoperasian MK. Ini adalah jenis generator (kuarsa, sirkuit RC), mengaktifkan / menonaktifkan yang disebut "pengatur waktu pengawas", pengaturan perlindungan terhadap pembacaan memori program, dan beberapa lainnya. Sebagai aturan, saat menulis algoritme untuk pengoperasian MK (program), nilai ditulis yang perlu ditulis ke bit konfigurasi. Saat mem-flash, shell mengambil data konfigurasi dari file firmware itu sendiri dan tidak perlu dipaksa untuk menentukan data ini.

Namun, sebagai pemula, tidak berlebihan bagi kita untuk mengetahui cara melihat atau mengubah bit konfigurasi tertentu. Untuk melakukan ini, klik tulisan "Konfigurasi". Jendela Edit Bit Konfigurasi akan terbuka.

Jika Anda perlu mengubah 0 menjadi 1, maka ubah - klik "Simpan". Secara alami, perlu untuk mengubah secara sadar. Saya ulangi, saat menggunakan file firmware yang sudah jadi, Anda tidak perlu mengubah apa pun, program akan melakukan semuanya secara otomatis.

Memilih model mikrokontroler.

Mikrokontroler berbeda. Oleh karena itu, ketika memprogram MK, mungkin perlu untuk menentukan model mikrokontroler tertentu. Saat Anda memilih item menu "Device Family", daftar keluarga mikrokontroler akan muncul. Ada juga chip memori EEPROM di antara daftar ini.

Tidak seperti mikrokontroler, chip memori EEPROM tidak secara otomatis terdeteksi oleh perintah "Alat" - "Periksa Komunikasi". Oleh karena itu, ketika membaca / menulis chip EEPROM dalam program, Anda harus menentukan penandaan chip.

Di menu, pilih item "Keluarga Perangkat" - "EEPROMS" - "24LC".

Kalibrasi konstan.

Seperti yang Anda ketahui, mikrokontroler membutuhkan generator jam untuk beroperasi. Elemen yang mengatur frekuensi generator ini dapat berupa resonator kuarsa eksternal, sirkuit RC. Tetapi di antara mikrokontroler PIC, ada yang berisi sirkuit penggerak yang diperlukan di dalam sirkuit mikro itu sendiri. MK tersebut termasuk, misalnya, PIC12F629, PIC12F675.

Di pabrik, konstanta khusus ditulis ke dalam memori mikrokontroler tersebut, yang menetapkan parameter osilator bawaan pada 4 MHz. Konstanta kalibrasi 34xx ini ditulis ke lokasi memori program terakhir pada 0x3FF.

Saat memprogram mikrokontroler, konstanta ini mudah dihapus. Dan meskipun PICkit2 Programmer versi 2.61 secara otomatis menyimpan konstanta ini dan kemudian menuliskannya selama pemrograman, tidak akan berlebihan untuk menuliskan nilai dari konstanta OSCCAL.

Jika perlu, konstanta dapat dengan mudah ditentukan secara manual. Untuk melakukan ini, pilih item menu "Alat" - "OSCCAL" - "Atur Secara Manual".

Di bidang "nilai OSCCAL", tentukan nilai konstanta yang direkam sebelumnya. Klik tombol "Setel".

Sekarang Anda sudah familiar dengan fitur dasar PICkit2 Programmer, Anda dapat dengan aman mulai merakit beberapa perangkat pada mikrokontroler, misalnya,

Mikrokontroler untuk pemula. Pelajaran video. Kami menulis program ke mikrokontroler (kami mem-flash chip)

________________________________________________________________________________________________________

Program sederhana pertama yang mengontrol tegangan pada pin mikrokontroler. Pemrograman dalam editor CodeVisionAVR. Mentransfer program ke memori mikrokontroler (chip firmware). unduh(36 MB)


Isi

Jika video tidak sedang direkam, aturpemutar flash dan periksa kartu suara, baikunduh bahan (36 MB). Jika ada layar hijau bukan video, instal ulang flash player (download saja versi terbaru). Jika video "berkedut", tunda dan biarkan memuat sedikit. Player untuk melihat flash-video di mesin rumah. Perluas video ke layar penuh. Jika mereka menulis "Video tidak ditemukan", "Video tidak ditemukan" - mulai ulang video lagi.

Editor CodeVisionAVR - situs resmi

Jika mikrokontroler tidak di-flash, maka:
1) Jangan ribut. Sisihkan desainnya, istirahat, minum teh dan bersantai. Desain nyata jarang mulai bekerja pertama kali - ini normal, terutama untuk pemula (karena ada terlalu banyak faktor yang tidak dapat dipahami oleh otak dengan segera).
Pengembang profesional mengulang desain mereka beberapa lusin kali :)))
Properti otak yang menarik: Seperti yang dikatakan Mark Twain, "Jangan tunda sampai besok apa yang bisa Anda tunda sampai lusa." Terkadang tidak mungkin untuk menulis program pada jarak dekat, membuat sirkuit elektronik, dll. Dalam hal ini, Anda tidak perlu melakukan upaya ekstra. Letakkan tugas di pikiran bawah sadar dan tunggu beberapa hari. Setelah istirahat, semuanya sering berjalan dengan sendirinya. Dan jauh lebih cepat dan lebih baik daripada jika Anda menderita beberapa hari yang sama dari pagi hingga malam.

2) Setelah istirahat, periksa kembali dengan seksama:
Makanan - tidak lebih rendah dari 4,5 volt, disarankan untuk mengambilnya dari USB komputer tempat programmer terhubung (untuk mengecualikan kemungkinan arus penyamaan). Periksa voltase dengan tester;
Apakah kabel dari komputer ke programmer terlalu panjang? Kabel panjang terganggu dan kemungkinan kegagalan transmisi data meningkat;
Mungkinkah kabelnya putus di dalam? Ring semua kabel dengan tester.
Apakah kabelnya sudah tercampur? MOSI, SUP KEDELAI JEPANG, SCK, mengatur ulang, GND, di tempat yang tepat terjebak?
Apakah programmer diatur dengan benar di Pengaturan >> Programmer;
Proyek >> Konfigurasi >> Kompilator C;
Apakah jenis kristalnya benar? Alat >> Pemrogram Chip;

Fuzy tidak menyentuh? Jika disentuh, Anda harus meletakkan kuarsa eksternal.
Apakah Anda membersihkan chip sebelum mem-flash? Alat >> Pemrogram Chip >> Program >> Hapus Chip;
Terkadang membersihkan chip membantu. Alat >> Pemrogram Chip besar
Tombol Reset Chip (setara dengan mengirim pulsa ke pin RESET);
Letakkan di bagian bawah jendela Alat >> Pemrogram Chip tiga kutu Periksa Tanda Tangan, Periksa penghapusan , Memeriksa ;
Atau sebaliknya - hapus centang pada kotak ini. Coba cara ini dan itu.
Jika semuanya gagal, maka pesan chip baru. Sebuah chip yang ditarik dari suatu tempat dapat berubah menjadi terbakar, dan disetel ke generator eksternal, dan dengan pin yang terbakar, dan sejenisnya.
Ya, dan di toko-toko mereka kadang-kadang rusak tersedot, tk. mereka menjaga siapa yang tahu di mana. Terkadang lebih mudah untuk membeli chip baru daripada memikirkan apa yang terjadi dengan yang lama (tetapi jangan membuangnya, ketika Anda mendapatkan pengalaman - pulihkan).
Jika Anda menemukan komputer lama - coba
lakukan pemrogram LPT(tiba-tiba seorang programmer USB yang rusak tergelincir?). Tidak ada yang lebih sederhana dari seorang programmer LPT; Saya melakukannya di selusin komputer - selalu mulai bekerja segera dan tidak pernah ada kegagalan.
Ingat sebelum instalasi kepalkan tanganmu o baterai, keran, atau struktur baja besar (pagar, rak buku), atau beli gelang atau tikar antistatis (listrik statis dari tangan dapat merusak sirkuit mikro yang tipis).
Akhirnya, cara yang paling sesat - coba komputer lain. Kebetulan motherboard bermasalah, port di dalamnya terbakar, kabel dari kontak menjauh, dll.

Pelajari mikrokontroler tidak hanya dari video dari situs ini. Otak membutuhkan variasi. Baca buku, forum, Wikipedia, situs lain. Mintalah saran dari teman elektronik Anda. Berlatih dan bereksperimen sendiri. Mengumpulkan ilmu dan pengalaman.