Saat mempelajari dan memperbaiki komputer yang lebih tua dari saya, saya perlu menginstal flash ROM. Tes RAM dan periferal untuk melakukan. Saya tidak memiliki programmer normal pada waktu itu.
Tentu saja, adalah mungkin untuk berkumpul pada logika untuk port LPT, tetapi opsi ini dibuang, karena untuk penggunaan akan diperlukan untuk menyertakan beberapa orang tua lainnya. Di komputer modern, antarmuka ini masih ditemukan (meskipun bukan konektor lengkap, tetapi pada sisir) dan membeli kartu dalam slot PCI juga tidak masalah, tetapi sudah ada kesulitan dengan perangkat lunak. Sudah lama ditulis ketika bekerja dengan port input / output dalam sistem operasi dilakukan secara berbeda. Dengan demikian, dalam versi modern perangkat lunak Windows tidak akan berfungsi.
Perlu disebutkan segera bahwa saya tahu tentang keberadaan TL866. Dan bahkan selama proses pengembangan, ia membelinya untuk dirinya sendiri, tetapi ia tidak dapat mem-flash chip yang membutuhkan tegangan pemrograman tinggi. Maksimum 18 volt (TL866 + atau 21 untuk versi sebelumnya).
Googling cepat membawa saya ke repositori ini . Setelah mengumpulkan programmer, saya bisa membuang beberapa keping bunga. Tetapi dengan firmware semuanya ternyata jauh lebih rumit ... Perangkat lunak ini tidak tahu caranya ... Tentu saja, Anda dapat menipu dengan mengekspos chip yang salah, tetapi ini tidak bekerja dalam semua kasus dan jelas bukan metode kami
Saya sangat kecewa dengan antarmuka pengguna, yang, alih-alih versi klasik dengan hak untuk memilih port ke pengguna, melewati semua antarmuka serial yang tersedia. Dengan demikian, semua perangkat melakukan reboot. Ini sangat ofensif, mungkin, ketika Anda memiliki printer 3D selama 10 jam mencetak bagian dari USB flash drive, dan di sini pengaturan seperti itu ...
Dunia OpenSource indah karena Anda dapat mengambil proyek dan menambahkannya ke tugas Anda. Dalam hal ini, tidak ada kode sumber untuk antarmuka grafis. Setidaknya saya tidak menemukannya, walaupun saya bisa menulis kepada pengembang. Itu menjadi menarik dan ada alasan kecil untuk belajar Qt. Jadi perangkat lunaknya akan lintas platform.
Kami mengambil dasar skema dari proyek sebelumnya dan memodifikasi perangkat ke fungsionalitas yang diperlukan. Saya memutuskan untuk mengorbankan dukungan EEPROM dalam perangkat lunak. Ini mungkin bukan solusi yang baik, tetapi chip yang dapat dihapus secara listrik tidak lagi membutuhkan tegangan tinggi. Ketika menyelesaikan, saya mengandalkan microcircuit paling banyak (27C512 untuk DIP28) dan menghapus semua kebingungan mengenai kaki alamat. Seluruh alamat akan ditetapkan secara eksklusif menggunakan register geser (74HC595). Ini membebaskan kaki-kaki ekstra mikrokontroler itu sendiri, yang akan diperlukan untuk mengontrol pasokan tegangan pemrograman. Dan semua sinyal yang diperlukan (PRG) dapat diperoleh dengan memodifikasi alamat sebelum memuatnya ke dalam register.
Prinsip penerapan pemrograman tegangan tetap sama. Perubahan hanya di bidang perlindungan pin mikrokontroler dan register geser. Saya mengganti resistor (1 KOhm) dengan dioda dengan pull-up ke log. 0. Ini adalah opsi yang kurang agresif. Meskipun, dalam keadilan, dan resistor berfungsi.
Setelah mempelajari dokumentasi untuk semua chip yang menarik, saya memutuskan bahwa diperlukan tiga titik umpan Vpp:
- IC 27C16 21 kaki (soket DIP28 23 kaki)
- 27C32 dan 27C512 per sinyal #OE (Output Enable)
- 27C64, 27C128, 27C256 dengan 1 kaki sirkuit mikro
Microcircuits 27C16 dan 27C32 berbeda dari yang lain dalam case, sehingga mereka perlu memasok daya ke kaki 26 soket. Ini adalah alamat A13 untuk saudara-saudara yang lebih cakap. Arus dari output register geser harus cukup untuk bekerja, tetapi pada saat memuat data, outputnya masuk ke status Z. Mode serupa diizinkan, tetapi dimasukkannya membaca atau menulis satu sel hampir tidak normal. Oleh karena itu, transistor tambahan dipasang di bawah kontrol daya. Dan satu lagi diperlukan untuk 27C16, yang, untuk saat membaca, perlu memasok 5 volt ke input Vpp. Anda dapat, tentu saja, mengatur tegangan pemrograman ke 5 volt saat membaca, tetapi beralih antara 25 dan 5 volt tidak nyaman.
Jika ada kaki bebas ADC, lalu mengapa tidak mengukur tegangan pemrograman? Papan tersebut diceraikan di bawah Arduino Nano. Ada dua input tambahan di atasnya, yang tidak dapat digunakan kecuali untuk ADC. Ini sebenarnya adalah fitur dari banyak mikrokontroler AVR di perumahan pemasangan permukaan. Pada bahasa Mandarin Arduino UNO, sering ada input A6 dan A7. Mengingat fakta bahwa tegangan dapat mencapai 30 volt (tampaknya sebagian besar yang mereka inginkan RF5 domestik, 25 volt), kami menghitung pembagi dari apa yang tersedia. Keakuratan 0,5 volt sudah cukup untuk tugas ini. Fungsi ini sangat mudah, bukan voltmeter.
Tentu saja mungkin untuk menjadi bingung dan bertindak sebagai pengontrol WID (pulse width control), tetapi tidak ada kaki yang bebas. Oleh karena itu, pada papan sirkuit tercetak ada kursi untuk konverter Step-Up DC-DC pada chip MT3608, yang tersedia untuk satu sen pada Ali.
Menurut skema, itu saja.

Algoritma untuk bekerja dengan sirkuit mikro ini sangat sederhana. Anda dapat membacanya dalam video pendek.
Skema dan perangkat lunak tersedia di repositori di GitHub: https://github.com/walhi/arduino_eprom27_programmer . Selama perakitan, Anda dapat dengan aman mengubah nilai-nilai resistor. Benar, dengan pembagi, Anda perlu sedikit memperbaiki kode sketsa.