Хаклаб/Проекти/Arduino базиран EPROM програматор
[Завршено] Идејата е да се искористи Arduino наместо да се купува посебен E(E)PROM програматор. Комуникацијата со PC ќе биде по постоечкиот USB-to-Serial кој го има на Arduino-то. Во прв момент се фокусираме само на EPROM, како на пр. 27C64 (8 килобајти), а понатаму би пробале да го адаптираме и за EEPROMи.
Arduino хардверски ресурси
Arduino има на располагање 14 дигитални I/O pin-ови. Распределбата би била вака:
- 8 pin-а за дата D2-D9 (I/O)
- 1 pin OE (output enable - се користи при верификација) - Output
- 1 pin PGM (program mode - 100uS е low со што се активира програмирањето) - Output
- 1 pin Clock/Increment према бројачите - Output
- 1 pin Vpp/Vcc контрола - при програмирање мора да уклучиме напони од Vpp=13.0V и Vcc=6.5V кон EPROM-от - Output (алтренативно за reset на бројачите)
- 2 pin-а D0-D1, сериска комуникација со PC (преку стандардниот USB)
- reset-от на arduino-то е врзано на reset-от на бројачите CD4040
Додатни компоненти
- 2 бројачи CD4040 за адресирање на EPROM-от, вкупно со нив ќе може да се адресира 2^24 т.е. 16MBтни EPROM-и (какви не постојат, но сепак)
- посебен power supply уред, кој ќе ги дава специјалните напони по потреба
PSU
Ни треба PSU кое работи во два режима. Нормален READ режим кога дава Vcc=Vpp=5V и режим за програмирање кога дава Vcc=6.5V и Vpp=13.0V за EEPROM-от. Режимот се контролира од Arduino-то (алтернативно со физичка преклопка делува многу многу поедноставно).
Во режимот за програмирање веројатно и Arduino-то би се напојувало на 6.5V
Софтверска контрола
Arduino-то не смее да прави ништо на своја рака, додека не добие инструкции од PC-то седи мирно. Отприлика би работело вака (дополнително ќе се осмисли во детали):
- на бутирање Vpp/Vcc контролата е поставена во нормален режим?
- бројачите се ресетирани на 0
- OE е low (active)?
- Чека команда на серискиот порт од PC-то, првата команда е режимот во кој ќе работи до следниот reset на arduino-то:
- командата може да биде WRITE, се користи за режење на EPROM-от
- командата може да биде READ, би се користело за верификација на среженото
Веројатно е многу попаметно да се искористи Firmata (сега кога знам за тоа)
WRT\n (4 бајти)
протокол за режење по блокчиња од 512 бајти ?
RED\n (4 бајти)
протокол за читање на блокчиња од 512 бајти ?
Референци
- делумно инспирација од http://www.qsl.net/iz7ath/web/02_brew/17_eprom/english/pag01_eng.htm