|
@@ -5,11 +5,31 @@
|
|
|
#define BLINK_DELAY 500
|
|
|
#define SHOW_DELAY 1000
|
|
|
#define KEY_DELAY 250
|
|
|
+#define ADDR_LOOP 50
|
|
|
+
|
|
|
+const byte demoPrg[] = { 0x4F, 0x59, 0x1F, 0x29, 0x10, 0x29, 0x5A, 0x40,
|
|
|
+ 0x59, 0x64, 0x54, 0x29, 0x4F, 0x59, 0x10, 0xCD,
|
|
|
+ 0x11, 0x28, 0xCC, 0x18, 0x28, 0x4F, 0x59, 0x5A,
|
|
|
+ 0x72, 0x26, 0xC0, 0x35, 0x80, 0x90, 0xFF
|
|
|
+ };
|
|
|
+
|
|
|
|
|
|
enum PROGRAMMING_MODE {ADDRESS, COMMAND, DATA};
|
|
|
|
|
|
PROGRAMMING_MODE prgMode;
|
|
|
|
|
|
+void prgDemoPrg() {
|
|
|
+ byte value = EEPROM.read(0);
|
|
|
+ if (value == 0xFF) {
|
|
|
+ value = EEPROM.read(1);
|
|
|
+ if (value == 0xFF) {
|
|
|
+ for (byte i = 0; i < sizeof(demoPrg); i++) {
|
|
|
+ EEPROM.write(i, demoPrg[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void programMode() {
|
|
|
// checking if advance programmer board connected?
|
|
|
#ifdef SPS_ENHANCEMENT
|
|
@@ -32,14 +52,14 @@ void programMode() {
|
|
|
dbgOut("Adr:");
|
|
|
dbgOutLn(addr);
|
|
|
// LoNibble Adresse anzeigen
|
|
|
- doPort(addr);
|
|
|
- delay(SHOW_DELAY);
|
|
|
+ doAddr(addr);
|
|
|
+ //delay(SHOW_DELAY);
|
|
|
|
|
|
blinkD2();
|
|
|
// HiNibble Adresse anzeigen
|
|
|
data = (addr & 0xf0) >> 4; //Adresse anzeigen
|
|
|
- doPort(data);
|
|
|
- delay(SHOW_DELAY);
|
|
|
+ doAddr(data);
|
|
|
+ //delay(SHOW_DELAY);
|
|
|
|
|
|
byte Eebyte = EEPROM.read(addr);
|
|
|
data = Eebyte & 15;
|
|
@@ -76,7 +96,7 @@ void programMode() {
|
|
|
}
|
|
|
while (digitalRead(SW_PRG) == 1); // S2 = 1
|
|
|
delay(DEBOUNCE);
|
|
|
-
|
|
|
+
|
|
|
byte newValue = (com << 4) + data;
|
|
|
if (newValue != Eebyte) {
|
|
|
EEPROM.write(addr, newValue); // Writeeeprom Eebyte , Addr
|
|
@@ -128,3 +148,12 @@ void blinkNull() {
|
|
|
doPort(0x00);
|
|
|
delay(BLINK_DELAY);
|
|
|
}
|
|
|
+
|
|
|
+void doAddr(byte value) {
|
|
|
+ for (byte i = ADDR_LOOP; i > 0; i--) {
|
|
|
+ doPort(value);
|
|
|
+ delay(19);
|
|
|
+ doPort(0x0F);
|
|
|
+ delay(1);
|
|
|
+ }
|
|
|
+}
|