hallo, ich hab ein problem mit dem beschreiben des eeproms im atmega16 im anhang hab ich einfach mal das ganze c file mitgepostet. das problem ist folgendes: wenn ich die zeile 119 wegkommentiere dann funktioniert das programm problemlos, bis aufs eeprom beschreiben. wenn die zeile aber nicht kommentiert ist, dann macht der controller irgendetwas undefinierbares. die funktion write_2bytes_to_eeprom(address, max_rpm); selbst funktioniert eigentlich, aber nur nicht in dem programm. wenn ich in dieser funktion den teil weglasse, wo das 2. byte ins eeprom geschrieben wird, funktionierts auch, nur dass eben nicht der gesamte wert gespeichert ist. ich bin mittlerweile echt ratlos. wäre nett wenn mir irgendwer einen hinweis geben könnte. mfg markus
Du rufst aus einem Interrupt heraus cli() und sei() auf, wenn ich das richtig sehe; geht das gut? Wenn das Schreiben lange genug dauert, wird mit einem sei() der Interrupt selbst wieder unterbrechbar.
Ich glaube auch nicht, dass es eine so gute Idee ist, das EEPROM aus der ISR heraus zu beschreiben, weil die Schreibzyklen eher länger dauern. Abgesehen davon, dass Du damit laufend das EEPROM beschreibst, und das hat nur eine begrenzte Anzahl von Schreibzyklen. Der Prozessor hat damit nur einen geringe Lebenserwartung.
guten morgen danke für die schnellen antworten. am cli und sei hats wohl gelegen. darauf hätt ich ja fast selber kommen können. habs jetzt aus dem ISR raus genommen und nach ein paar versuchen hats jetzt auch endlich geklappt. danke nochmal und noch einen schönen tag mfg markus
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.