Cheap 16 bit parallel flash programmer with an arduino, two counters CD4040, one shift register 74164
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
eeprom_programmer.hArduino partx-chdr - 545.00 bytes - 04/03/2018 at 12:53 |
|
|
eeprom_programmer.inoArduino partino - 9.31 kB - 04/03/2018 at 12:53 |
|
|
Makefilemakefile - 1.06 kB - 04/03/2018 at 12:53 |
|
|
eeprom_programmer.cx-csrc - 9.72 kB - 04/03/2018 at 12:53 |
|
|
eeprom_programmer-lib.cx-csrc - 4.01 kB - 04/03/2018 at 12:53 |
|
New version using an Arduino Mega (almost no need for external component) : arduino and PC (linux) code with schematics and PCB done with Kicad : https://framagit.org/acathla/eeprom-programmer
Create an account to leave a comment. Already have an account? Log In.
Hi, nice project. Could you please share a schematics with us? It's OK if it's drawn by hand on a piece of paper. I'm interested in seeing how you generated 10V for VHH and the part with the transistor to switch between 5 / 10 V. The software part seems to be clear to me: Address buss is generated via the 2 counters by toggling the 'clock' pin (I like that, it needs just one clock pulse to generate consecutive 12 bit address), the data bus is 16 bit wide in write mode ( top byte of the data bus is generated by the shift register, bottom byte uses 8 arduino pins D2-D9), and for reading only an 8bit data mode is used where the data bits are again mapped to arduino pins D2-D9 (but this time switched as input). The rest of the code is just sending and receiving the data between the PC and MCU.
My tips for speed improvement:
1) do not write data with value 0xFF (erased flash memory has already value 0xFF)
2) In flash_databus_output you always set the pinMode for data bits even if you write 128 bytes in one go - optimise it to set the ouput pin mode just once, before the first byte is written.
3) unroll the loops where 8 bits are sent (the time spent calculating the 'for' loop is eliminated)
4) do not use digitalWrite function - although it is portable, it is also slow because it does several checks and also (if it is not inlined) there is an extra overhead of entering the function, passing the parameters, then exiting the function. Use a macro that toggles just a single pin on a specific arduino port for maximum speed.
5) use some some sort of data compression (maybe it's an overkill for a simple project like this)
Would you share what software you used to program MX29F1615?
Have you the pcb layout with all components? And how to program all this?
Become a member to follow this project and never miss any updates
https://oshwhub.com/firseve/eeprom_27
Use 74hc595 and Atmega 64Pin like atmega64 128
But ... lazybone