Hallo, möchte gerne mehrere unsigned long Werte im Eeprom meines ATmega 16 ablegen. Die Werte lade ich über die Serielle Schnittstelle in den uP. Die Funktionen für int Werte habe ich aus dem Datenblatt des ATmega 16 Ich weiß aber nicht in welchem Adressbereich der Eeprom liegt... Ein weiteres Problem sind die Long Werte... Wie speichere ich diese am Besten? Wenn einer ein paar tips hätte wäre das super! Vielen Dank im Vorraus Björn
Das EEprom wird über die IO Register gesteuert. im datenblatt ist eine genaue beschreibung mit allen einzuhaltenden Zeiten, um auf das EEprom zu zugreifen. Register: EEARH, EEARL EEDR, EEARL
Bsp. In assembler
Hier wird im EEprom an der Addresse 0 der wert im r20 Register
geschrieben.
Write: SBIC EECR,EEWE
RJMP Write
LDI r16,0
LDI r17,0
OUT EEARH,r16
OUT EEARL,r17
OUT EEDR,r20
SBI EECR,EEWE
Die Funktion habe ich... aber die Startadresse fehlte mir.
void EEPROM_write (unsigned int uiAddress, unsigned char ucData)
{
while (EECR & (1<<EEWE)); // Warte bis der letzte schreibvorgang
// beendet
EEAR = uiAddress; // Setze Adressregister
EEDR = ucData; // Setze Dataregister
EECR |= (1<<EEMWE); // setze EEMWE auf 1
EECR |= (1<< EEWE); // starte EEPROM schreibvorgang durch
//setzten EEWE
}
trotzdem danke
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.