ja das ist wahr, also ein kalibrierungsprogramm sollte möglich sein, und das halte ich auch für sehr sinnvoll. es müsste allerdings die datenübertragung möglichst sicher gestaltet werden, damit nicht aufgrund eines fehlerhaften bytes irgend ein mist übertragen wird und der dann in allen (!) programmen kompiliert wird. evtl sollte der nutzer zum abgleich den empfangenen wert nochmal eingeben oder so etwas.
braucht ein integer wirklich nur 2 bytes? wo steht, welchen typ die variable hat? signed oder unsigned? ich kenne mich mit speicherarchitekturen nicht besonders aus, es reicht gerade für ein paar grundsätzliche pointer und adressoperationen. ansonsten könnte man ja die letzten paar bytes des eeprom reservieren, beispielsweise alle über 500 oder alle über 480 oder so. allerdings sollte eine lib so knapp wie möglich sein und deshlab nicht immer auf den eeprom angewiesen sein. auch die wiederkehrenden eeprom lese aktionen machens nicht zwingend einfacher und auch wenn sie nur ein paar bytes belegen müssen die einfach nciht sein.
ich bleibe bei den defines =)
hier mal beispielcode zum schreiben eines bytes in den eeprom (übergeben werden die adresse (ein wert zwischen 0 und 511 bzw 0 und 0x1F) und die daten (ein char)
Code:
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE))
;
/* Set up address and data registers */
EEAR = uiAddress;
EEDR = ucData;
/* Write logical one to EEMWE */
EECR |= (1<<EEMWE);
/* Start eeprom write by setting EEWE */
EECR |= (1<<EEWE);
}
und zum lesen muss nur die adresse übergeben werden:
Code:
unsigned char EEPROM_read(unsigned int uiAddress)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEWE))
;
/* Set up address register */
EEAR = uiAddress;
/* Start eeprom read by writing EERE */
EECR |= (1<<EERE);
/* Return data from data register */
return EEDR;
}
Diese funktionen sind direkt aus dem datenblatt genommen, ich vermute deshalb dass sie so minimalistisch wie möglich sind. aber eben trotzdem eigentlich unnötig.
Lesezeichen