123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /*
- entering the programming mode
- */
- void programMode() {
- // checking if advance programmer board connected?
- #ifdef SPS_ENHANCEMENT
- if (digitalRead(SW_SEL) == 0) {
- advancePrg();
- }
- else {
- #endif
- dbgOutLn("PrgMode");
- addr = 0;
- do {
- dbgOut("Adr:");
- dbgOutLn(addr);
- // LoNibble Adresse anzeigen
- doPort(addr);
- delay(300);
- lighting();
- // HiNibble Adresse anzeigen
- data = (addr & 0xf0) >> 4; //Adresse anzeigen
- doPort(data);
- delay(300);
- lighting();
- byte Eebyte = EEPROM.read(addr);
- data = Eebyte & 15;
- com = Eebyte >> 4;
- dbgOutLn('commando eingeben');
- doPort(com); //Befehl anzeigen
- digitalWrite(PWM_1, HIGH);
- do {
- }
- while (digitalRead(SW_SEL) == 1); // S2 = 1
- delay(DEBOUNCE);
- prog = 1; //Phase 1: Befehl anzeigen
- do {
- dbgOut("C:");
- dbgOut(com);
- dbgOut(", D:");
- dbgOut(data);
- dbgOut(", P:");
- dbgOutLn(prog);
- if (digitalRead(SW_PRG) == 0) {
- if (prog == 1) {
- prog = 2;
- com = 15;
- }
- if (prog == 2) { //Phase 2: Befehl verändert
- com = com + 1;
- com = com & 15;
- doPort(com);
- digitalWrite(PWM_1, HIGH);
- }
- if (prog == 3) { //Phase 3: Befehl unverändert, Daten ändern
- prog = 5;
- data = 15;
- }
- if (prog == 4) { //Phase 4: Befehl und Daten geändert
- prog = 5;
- data = 15;
- }
- if (prog == 5) { //Phase 5: Daten verändert
- data += 1;
- data = data & 15;
- doPort(data);
- digitalWrite(PWM_1, LOW);
- }
- delay(DEBOUNCE);
- do {
- }
- while (digitalRead(SW_PRG) == 1);
- delay(DEBOUNCE);
- }
- if (digitalRead(SW_SEL) == 0) {
- if (prog == 3) {
- prog = 7; //nur angezeigt, nicht verändert
- }
- if (prog == 4) {
- doPort(255 - data);
- digitalWrite(PWM_1, LOW);
- prog = 6;
- }
- if (prog == 2) {
- doPort(data); // Portd = Dat Or &HF0
- digitalWrite(PWM_1, LOW);
- prog = 4;
- }
- if (prog == 6) { //nur Kommando wurde verändert
- data = data & 15;
- Eebyte = com * 16;
- Eebyte = Eebyte + data;
- EEPROM.write(addr, Eebyte); // Writeeeprom Eebyte , Addr
- doPort(0x0F);
- delay(600);
- addr += 1;
- prog = 0;
- }
- if (prog == 5) { //Daten wurden verändert
- data = data & 15;
- Eebyte = com * 16;
- Eebyte = Eebyte + data;
- EEPROM.write(addr, Eebyte); // Writeeeprom Eebyte , Addr
- doPort(0xF0);
- delay(600);
- addr += 1;
- prog = 0;
- }
- if (prog == 7) {
- addr += 1;
- prog = 0;
- }
- delay(DEBOUNCE);
- do {
- }
- while (digitalRead(SW_SEL) == 0);
- delay(DEBOUNCE);
- }
- }
- while (prog != 0);
- }
- while (true);
- #ifdef SPS_ENHANCEMENT
- }
- #endif
- }
- void lighting() {
- doPort(0x0F);
- delay(200);
- }
|