Gast
#2894418
Hallo Community, eigentlich möchte ich nur das interne EEPROM nutzen, um Daten aus dem RAM für den nächsten Start zu speichern. Normalerweise ist das keine große Sache. Aber irgendwie gelingt es mir nicht, den Schreibprozess auszulösen. Ich arbeite mit dem AVR-Studio 6.0 (Beta). Wenn ich den Kram in C-schreibe, wie im Datenblatt beschrieben, dann macht die "native"-Toolkette soviel Schnörkelkram, dass die 4 Taktzyklen zwischem dem Setzen von EEMWE und EEWE überschritten werden. Also, habe ich meine alten Assemblerkenntnisse hervorgekramt um da etwas direkter anzusteuern. Nach einigem Hin- und Her habe ich auch rausgefunden, dass RAM-Adresse der IO-Register nicht der tatsächlichen für die Befehle sbi und cbi entsprechen soll und darum steht bei den sbi-Befehelen auch nicht 0x3F für das EECR sonder 0x1F. Trotzdem programmiert der Controler die EEPROM-Adresse nicht. Wer kann mir sagen, wo der Gedankenfehler liegt? /* Startaddresse in das EEAR laden */ EEAR = Startaddresse++; /* Daten aus Quellbereich holen */ EEPROM_Daten_lokal = (*LeseZielAddresse); EEDR = EEPROM_Daten_lokal; LeseZielAddresse += 1; /* Master setzen */ //EECR |= (1<<EEMWE); /* Schreibaufforderung setzen */ //EECR |= (1<<EEWE); /*; Schreibe Logische Null in Controlbit EEWE */ asm("cbi 0x1F,0x02"); /* ; Write logical one to EEMWE */ asm("sbi 0x1F,0x04"); /*; Start eeprom write by setting EEWE */ asm("sbi 0x1F,0x02"); Für jeden nützlichen Tipp danke ich Euch jetzt schon. Gruß cskulkw