Hallo ich bin absoluter AVR Anfänger und möchte Daten in das EEProm eines ATTiny26 schreiben und danach wieder auslesen. Leider komm ich mit dem was im Datenblatt steht überhaupt nicht klar. Würde mich über einen kleinen Codeschnipsel ö.ä. sehr freuen. Gruß Marcus
Ja, hab ich auch schon gesehen. Doch da ist das Problem das da für den Anfang zu viel Info drin steckt. Ich mach das eher mit "learning by doing" sprich, ich hab lieber ein korrektes Codebeispiel das ich anhand der Funktion zu verstehen versuche.
Naja, das Datenblatt ist natürlich ziemlich mühselig, aber wenn Du zu faul bist, dir das Gewünschte aus dem relativ guten Tutorial rauszusuchen, hast Du wohl Pech gehabt. Konkrete Antworten gibt's nur auf konkrete Fragen.. Schreib was mit AVR Studio ins EEProm, und versuch dann, Dir das im µC auszulesen. Ist schonmal ein kleiner Schritt. Beim Schreiben extrem vorsichtig ein, der Speicher ist irgendwann hin. Das kann schnell gehen. Viel Erfolg!
Hallo, schön das Du mich als Faul bezeichnest, ich sehe das allerdings anders. Leider hab ich nicht die Zeit und auch nicht die Muse mir ein 120 Seiten Tutorial durchzulesen (was ich im übringen vor geraumern Zeit doch getan habe), um danach festzustellen das das geschriebene mit dem im Datenblatt dann doch nicht übereinstimmt. Zu der konkreten Antwort auf eine konkrete Frage. Hat mir jemand einen Codeschnipsel in dem diese Funtion enthalten ist ???
>schön das Du mich als Faul bezeichnest
Tut mir leid, daß Du das falsch verstanden hast.
sowas?:
1 | #include <avr/eeprom.h> |
2 | #include <avr/io.h> |
3 | #include <stdint.h> |
4 | |
5 | uint8_t eebyte EEMEM; /* ein Variable im EEPROM, Adrese wird vom Linker festgelegt, kann auch gleich initialisiert werden: */ |
6 | int8_t anders EEMEM = -34; |
7 | uint8_t einbyte; //ein Byte im RAM |
8 | |
9 | einbyte = eeprom_read_byte(&eebyte); /*Der Funktion die Adresse von eebyte geben, die Funktion "eeprom_read_word()" funktioniert genauso für 16-Datentypen, für alles andere gibts "eeprom_read_block()"*/ |
10 | |
11 | //Byte ins EEPROM schreiben:
|
12 | eeprom_write_byte(&eebyte, einbyte); |
13 | /* größere Typen entsprechend ..._word(), bzw .._block()
|
14 | |
15 | wenn du an eine feste Adresse schreiben willst (das KANN in die Hose gehen..): */
|
16 | eeprom_write_byte((uint8_t*)0x10, einbyte); |
Das Tut. ist zum überfliegen ein bischen zu dicht gepackt, zugegeben :( -Jörg
Superfettes Dankeschön, genau das was ich gesucht habe
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.