Hallo, ich habe nun schon den halben Tag gesucht, jedoch keinen Beispielcode für die direkte Zuweisung einer Adresse im EEProm. Wie geht das? Hardy
Du erstellst einfach einen Zeiger auf den Datentyp und speicherst per Typecast die Adresse darin:
1 | uint8_t *testbyte; |
2 | |
3 | testbyte = (uint8_t*)0x10; |
4 | eeprom_write_byte(testbyte, 10); |
Damit wird im EEPROM an der Adrese 0x10 eine 10 reingeschrieben. In anderen Sprachen sollte es ähnlich gehen.
Hallo André, ich möchte aber nicht noch zusätzlichen RAM verbrauchen. Die Adressen sind ja fest, ich möchte sie einfach in der Definitionszeile der EEProm-Variable mit angeben. Hardy
Das dürfte nicht gehen, jedenfalls nicht mit Standard C. Was du machen könntest wäre das ganze mit defines tricksen:
1 | #define testbyte ((uint8_t*)0x10)
|
2 | |
3 | eeprom_write_byte(testbyte, 10); |
Bei beiden Varianten darf du jedoch keinesfalls mehr mit EEMEM arbeiten, da es zu Adresskonflikten kommen kann. Wenn es nicht unbedingt sein muss würde ich mit EEMEM arbeiten, das ist einfacher als sich über die Adressen selber gedanken zu machen.
>ich möchte sie einfach in der Definitionszeile der EEProm-Variable mit >angeben. Du solltest vielleicht einmal schreiben, zu welchem Zweck Du das überhaupt möchtest. Dann wird vielleicht manches klarer und unsere Erklärungen sind zielgerichteter. Die Formulierung >die direkte Zuweisung einer Adresse im EEProm. ist nämlich so unkorrekt (es fehlt das Objekt im Satz), das man sie deuten muss. Wem oder soll hier eine Adresse im EEPROM zugewiesen werden? Man kann dafür sorgen, dass eine bestimmte Speicherstelle im EEPROM für irgendeinen Zweck benutzt wird und diese Adresse fest im Programm benennen (ohne zusätzlichen RAM-Speicher zu brauchen). Im allgemeinen ist das aber unnötig, da der Compiler bzw. der Linker selbst Adressen festlegen kann. Hier kommen wir zum nächsten Problem. In welcher Sprache und mit welchem Compiler willst Du arbeiten?
Hallo Kali, ich möchte einfach einen festen Aufbau aller EEProms eines großen Steuerungssystem haben, um nicht jedes mal bei Auslesen erst nachschauen zu müssen, was an welcher Adresse gespeichert wird. Es gibt aufgrund der Speicherplatzgröße des Atmel nun mehrere Programme, welche immer eine bestimmte Funktion erfüllen. Dadurch brauchen nicht alle Programme alle Variablen im EEProm. Ich kann nun natürlich immer alle Variablen in den einzelnen Programmen mit aufnehmen, aber die Variante mit dem define der Adressen ist jetzt erst mal der Übersichtlicher. > Hier kommen wir zum nächsten Problem. In welcher Sprache und mit welchem > Compiler willst Du arbeiten? Mit dem avr-gcc, welches mit winavr 20100110 installiert wurde. Hardy
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.