Guten Abend, ich beginne gerade mich in die Programmierung von AVRs in Bascom Basic einzulesen: Ich habe die "grundlegensten Grundlagen" bei diesem Thema wohl jetzt drauf, jetzt möchte ich den EEPROM des atmega32 benutzen: Mal angenommen es werden 100 verschiedene Zahlen an den Controller gesendet und ich möchte die alle systematisch abspeichern, wie mache ich das? Mit nur einer Zahl ist das ja einfach: "Dim E As Eram Byte E = 5" Natürlich möchte ich nicht 100 Variablen deklarieren, jedes Zeichen soll abgespeichert werden, wenn es ankommt. Und wie kann ich die Daten wieder (systematisch) auslesen? Christian
Hi, > Dim E As Eram Byte > E = 5 wird so auch nicht gehen, da du mit Bascom erst den Wert in eine RAM-Vaiable lesen muss, und du nur RAM-Variablen in das EEPROM speichern kannst. Also eher: Dim E1 As Byte Dim E2 As Eram Byte E1=5 E2=E1 Zu deiner eigentlichen Frage, arebite mit Arrays, und wenn deine Daten immer die gleiche Speicherposition haben, also du immer deine 100 Werte speicherst, dann kannst du die so auch wieder lesen. Dim E1(100) As Byte , I As Byte Dim E2(100) As Eram Byte For I = 1 To 100 E1(I) = I E2(I) = E1(I) Next I Kleine Routine die die Werte 1..100 an 100 Speicherstellen im EEPROM ablegt. Das ganze nun noch mit einer Empfangsroutine kombinieren, und los gehts, wenns komplizierter werden soll, wie z.B. einzelne Werte ändern, kannst du das auch leicht einfliessen lassen. Grüße Addy
Ich komm aus der ASM-Ecke, aber >Dim E1(100) As Byte , I As Byte >Dim E2(100) As Eram Byte > >For I = 1 To 100 > E1(I) = I > E2(I) = E1(I) >Next I ist doch pure Speicherverschwendung?! Wie wärs damit: Dim Ex As Byte , I As Byte Dim E2(100) As Eram Byte For I = 1 To 100 Ex = I E2(I) = Ex Next I
Danke für die ausführliche Antwort. Eine Frage habe ich aber noch: Wie geht das lesen? Geht das einfach umgekehrt also irgendwie so: Dim E1(100) As Byte , I As Byte Dim E2(100) As Eram Byte For I = 1 To 100 E1(I) = E2(I) Next I Geht das so? Christian
@ Sven ;-) klar logisch, den RAM kann man sich sparen, wenn du aber evtl. noch nachbearbeiten willst oder ordnen oder was auch immer kann man das aber temporär über ein Arrayfeld im RAM lösen. @ Christian Genau so liest du dir die EEPROM-Werte temporär ins RAM, aber wie eben oben beschrieben auf die speicherfressende Variante, wenn du weißt welche Werte du brauchst kanns du die auch einzeln aus dem EEPROM laden.
Mh, das Auslesen der Werte klappt irgendwie nicht. Zwischendurch habe ich den COntroller aber auch kurz ausgeschaltet, aber das sollte ja nicht weiter stören, oder? Was mir aufgefallen ist: Woher weiß der Controller eigentlich bei Aufruf von Dim E1(100) As Byte , I As Byte Dim E2(100) As Eram Byte For I = 1 To 100 E1(I) = E2(I) Next I wo er das herauslesen soll? Danke für eure Hilfe, Christian
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.