Hallo allerseits, ich schaff es nicht, bei meinem AT90PWM3 auf den EEPROM zuzugreifen. Dabei verwende ich sogar die im Datenblatt vorgeschlagenen Routinen zum Lesen und Schreiben des EEPROMs: uint8_t EEPROM_Read(uint16_t Address) { while(EECR&(1<<EEWE)) {}; EEAR=Address; EECR|=(1<<EERE); return EEDR; } void EEPROM_Write(uint16_t Address, uint8_t Data) { while(EECR&(1<<EEWE)) {}; EEAR=Address; EEDR=Data; EECR|=(1<<EEMWE); EECR|=(1<<EEWE); return; } Hinweis: Interrupts sind ausgeschaltet, mit dem Bootloader hab ich auch noch nichts am Hut. int main(void) { uint8_t Temp; cli(); ... Delay_ms(2000); EEPROM_Write(0x0000,0xAA); Delay_ms(2000); Temp=EEPROM_Read(0x0000); // Temp=0xAA; // Test->funktioniert if(Temp==0xAA) TestPort|=1<<Output1; while(1); return 1; } Hinweis: Delay_ms(2000) wartet 2s. Dieser Programmausschnitt funktioniert nicht. Der Pin des Testports bleibt immer auf Low! Warum? Die Betriebsspannung ist 5V und stabil. Weiß jemand Rat? Grüsse, Steffen
Das komische ist, dass das Programm im Simulator (AStudio) einwandfrei funktioniert. In der Praxis aber nicht. Das kann doch nur ein Timing oder Spannungsproblem sein - oder? Nur: auch mit einem "Warm-Reset" (manueller Reset, also kein POR) funktioniert es nicht. Und für's Timing habe ich doch schon extra die Warteblöcke á 2s eingeschoben...
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.