Hallo, Ich habe vor mit nem Mega32 Messwerte die ich mit nem mobilen Gerät (da ist der Mega32 drin) speichere dann zuhause am PC auszulesen.. Soweit eigentlich nicht schwer, aber wie kann ich das genau in C umsetzen?? Ich nutze Codevision.. Ich dachte mir ich nehme eine Variable als Pointer´, speichere meinen Messwert an der Stelle wo der Pointer draufzeigt, erhöhe den Pointer um eins, lese den nächsten Wert ein usw... am PC dachte ich es mir so, Pointer auf ersten Wert stellen, Wert lesen, auf 232 ausgeben, wertzuende senden, Pointer erhöhen...usw... Aber wie nutze ich pointer in C? wo fängt der EEProm Speicher an? Wo hört er auf? Habe schon mal beim Studium auf nem 8051 in Assembler mit Pointern programmiert, die Funktiosweise ist mir klar, aber nicht wie ich das in C umsetzen kann.,... Danke schonmal, Sven
Also, in Codevision würde ich einfach die Meßwerte als Array definieren (im Anfangsteil des Programms) mit dem Schlüsselwort eeprom davor. Um den Rest kümmert sich Codevision. Beispiel für eine solche Deklaration: eeprom char messwert[200]; mit der Variablen Messwert[x] kannst Du dann hinterher ganz normal im Programm arbeiten. Um die Umsetzung zum Eeprom hin kümmert sich der Compiler. Bedenke nur, daß der Speicherplatz im Eeprom begrenzt ist und der Eeprom auch nur eine begrenzte Lebensdauer von Schreib-/Lesezyklen hat... Gruß KMT
Ah so danke, besonders der letzte Tip hat mir viel weitergeholfen.. klar hat man nur begrenzte Kapazität. wie kann ich denn prüfen ob das eeprom "voll"ist? oder kann ich da nur den index des Arrays abfragen und vorher den maximal möglichen ausrechnen? Ansonsten ist das ja echt einfach... Muss ich Interrups vorher sperren oder kümmert der Compiler sich darum??
Ganz wichtig vorweg: Meine Hinweise gelten nur unter der Voraussetzung, daß du den internen, im AVR eingebauten, Eeprom benutzen willst. Du solltest das Array mit der Anzahl der zu erwartenden Meßwerte vorher ausrechnen und mit der Deklaration eeprom int (oder was auch immer) messwert[200oder was auch immer]; am Anfang des Programmes definieren. Das Ausrechnen geht folgendermaßen: Anzahl der Einträge im Array * Platzverbrauch eines einzelnen Elementes = Speicherbedarf. Der Speicherbedarf muß kleiner sein als die Größe des Eeproms. char belegt 1 Byte pro Eintrag, Integer 2 Bytes. Beispiel: hast Du ein Eeprom mit 512 Byte Kapazität, dann kannst Du entweder 512 Char-Felder belegen oder 256 Integer-Felder.
fast exakt, immer ein Byte weniger, also max. 511 char bzw 255 int-Variablen. CodeVision benutzt (aus gutem Grund!) die Adresse0 des EEPROM nicht.
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.