Vorschlag Erweiterung read_eeprom

Begonnen von noansi, 23 Dezember 2015, 12:49:22

Vorheriges Thema - Nächstes Thema

noansi

Hallo Rudolf,

da eben angedacht, hier ein Vorschlag zu einer Erweiterung von read_eeprom in fncollection.c um das Auslesen des kompletten EEPROMs.

#ifdef HAS_EEPROM_FULL_READ
  else if(in[2] == 'N') {  // requires IO transfer functions with waiting on full buffer (and flushing)
    DC('R');                                 // prefix
    DC('<');                                 // mark Start Full Read
    for (addr = 0 ; addr <= E2END; addr++) { // Read all EEPROM bytes, or adapt to the End of the used EEPROM content
      d = erb((uint8_t *)addr);
      DH2(d);                                // display result, hex
    }
    DC('>');                                 // mark End Full Read
    DH(addr, 4);                          // number of bytes sent
  } 
#endif  // HAS_EEPROM_FULL_READ


Es gibt da nur den kleinen Pferdefuss des überlaufenden Sendepuffers. Das wäre in display.c zu korrigieren.

Alternativ könnte man auch ab einer mit übergebenen Addresse max. ((TTY_BUFSIZE-6)/2) (oder ((TTY_BUFSIZE - TTY_Tx_Buffer.nbytes - 10)/2) ) Bytes auslesen und mit Startadressangabe senden.

Aber dann kann man natürlich auch alle einzeln lesen.

Das macht aber eine Änderung bezüglich EEPROM Ende sinnvoll:

...


    DC('R');                    // prefix
    DH(addr,4);                 // EEPROM address
    DS_P( PSTR(" = ") );

    if (addr > E2END) {
      DC('-');  // don't read bejoynd End of EEPROM and signal it!
      goto read_eeprom_EndNL;
    }

    d = erb((uint8_t *)addr);
    DH2(d);                     // result, hex
    DS_P( PSTR(" / ") );
    DU(d,2);                    // result, decimal

read_eeprom_EndNL:
  DNL();
}


Gruß, Ansgar.