PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String ins EEprom schreiben



Baby2b
02.12.2006, 18:20
Hallo,

ich mühe mich seit zwei Tagen ab das EEprom zu verstehen. Klappt eigentlich ganz gut, jedenfalls solange es sich um numerische Zahlen handelt. Jetzt habe ich aber versuch auch Strings ins EEprom zu schreiben. Zum Beispiel einfach mal "AAAAA" . Wenn ich das wieder auslese ist zwar auch irgendwo ein A dabei, aber auch jede Menge andere merkwürdige Zeichen.
Kann mir jemand sagen ob ich mir das zu einfach mache wenn ich versuche "AAAA" mit writeeeprom und readeeprom ins EEprom zu verfrachten und wieder auszulesen?

Gruß

Andreas

digitali
02.12.2006, 23:41
Moin moin,

den String zerlegen und die Einzelwerte mittels ASC konvertieren und abspeichern. Wieder auslesen: Die Einzelwerte dann mit CHR konvertieren und als String wieder zusammenfummeln.
Ich denke so wuerde ich es machen…

LuK-AS
03.12.2006, 07:51
Hallo Andreas,

ich habe auch schon mal mit dem EEPROM gearbeitet, bei mir funktionierte es prima mit allen Variablen auch Strings. Wichtig ist nur, dass Du die erste Speicherzelle im EEPROM freilässt und nicht definierst. Du solltest auch festlegen wie lang der String sein soll, also bei max. 7 Zeichen auch 7 Speicherzellen festlegen. Ich will mal schauen ob ich ein bisschen Code in Bascom dazu finde.

'######### EEPROM DATEN ########
Dim Alarmnummer As Byte
Dim Tiefe As String * 4
Dim Epwert1 As Byte
Dim Epwert2 As Word
Dim Epwert3 As String * 4
Dim Epwert4 As Word

'---------------- STARTVARIABLEN AUS EEPROM LESEN -------------
'Readeeprom Alarmnummer , 1
'Readeeprom Tiefe , 3
'readeeprom Epwert1 , 8
'readeeprom Epwert2 , 12
'readeeprom Epwert3 , 17
'Readeeprom Epwert4 , 23

Hoffe es hilft Dir weiter.
Gruss
Clemens

Baby2b
04.12.2006, 07:23
Danke für die Tips, ich werde sie mal ausprobieren.

Gruß

Andreas

Baby2b
04.12.2006, 14:19
Hmm...., langsam wirds besser mit meinem EEprom aber hier habe ich was wo ich absolut nicht schlau draus werde:

Ich hab zwei Programme die das selbe machen, nämlich 10 Strings * 1 (AB.....HIJ" ins Eprom Schreinben:

1. Version mit Writeeprom und Readeeprom:

$regfile = "m32def.dat"
$framesize = 42


$swstack = 32
$hwstack = 32





$crystal = 16000000 'Quarzfrequenz
$baud = 9600


Dim I As Byte

I = 1


Dim Sn1 As String * 1
Dim Sn2 As String * 1
Dim Sn3 As String * 1
Dim Sn4 As String * 1
Dim Sn5 As String * 1
Dim Sn6 As String * 1
Dim Sn7 As String * 1
Dim Sn8 As String * 1
Dim Sn9 As String * 1
Dim Sn10 As String * 1

Sn1 = "A"
Sn2 = "B"
Sn3 = "C"
Sn4 = "D"
Sn5 = "E"
Sn6 = "F"
Sn7 = "G"
Sn8 = "H"
Sn9 = "I"
Sn10 = "J"


Writeeeprom Sn1 , I
I = I + 2
Writeeeprom Sn2 , I
I = I + 2
Writeeeprom Sn3 , I
I = I + 2
Writeeeprom Sn4 , I
I = I + 2
Writeeeprom Sn5 , I
I = I + 2
Writeeeprom Sn6 , I
I = I + 2
Writeeeprom Sn7 , I
I = I + 2
Writeeeprom Sn8 , I
I = I + 2
Writeeeprom Sn9 , I
I = I + 2
Writeeeprom Sn10 , I



Sn1 = "x"
Sn2 = "x"
Sn3 = "x"
Sn4 = "x"
Sn5 = "x"
Sn6 = "x"
Sn7 = "x"
Sn8 = "x"
Sn9 = "x"
Sn10 = "x"



Waitms 100

I = 1

Readeeprom Sn1 , I
I = I + 2
Readeeprom Sn2 , I
I = I + 2
Readeeprom Sn3 , I
I = I + 2
Readeeprom Sn4 , I
I = I + 2
Readeeprom Sn5 , 1
I = I + 2
Readeeprom Sn6 , I
I = I + 2
Readeeprom Sn7 , I
I = I + 2
Readeeprom Sn8 , I
I = I + 2
Readeeprom Sn9 , I
I = I + 2
Readeeprom Sn10 , I


Print Sn1 ; Sn2 ; Sn3 ; Sn4 ; Sn5 ; Sn6 ; Sn7 ; Sn8 ; Sn9 ; Sn10



End


Klappt eigentlich ganz gut, nur leider macht das Programm aus dem "E" beim Lesen immer ein "A" ?????????????????


2. Version arbeitet mit Dim Variable as eram string *1



$regfile = "m32def.dat"
$framesize = 42


$swstack = 32
$hwstack = 32





$crystal = 16000000 'Quarzfrequenz
$baud = 9600


Dim I As Byte

I = 1

Dim Sn1e As Eram String * 1
Dim Sn2e As Eram String * 1
Dim Sn3e As Eram String * 1
Dim Sn4e As Eram String * 1
Dim Sn5e As Eram String * 1
Dim Sn6e As Eram String * 1
Dim Sn7e As Eram String * 1
Dim Sn8e As Eram String * 1
Dim Sn9e As Eram String * 1
Dim Sn10e As Eram String * 1

Dim Sn1 As String * 1
Dim Sn2 As String * 1
Dim Sn3 As String * 1
Dim Sn4 As String * 1
Dim Sn5 As String * 1
Dim Sn6 As String * 1
Dim Sn7 As String * 1
Dim Sn8 As String * 1
Dim Sn9 As String * 1
Dim Sn10 As String * 1


Sn1 = "A"
Sn2 = "B"
Sn3 = "C"
Sn4 = "D"
Sn5 = "E"
Sn6 = "F"
Sn7 = "G"
Sn8 = "H"
Sn9 = "I"
Sn10 = "J"

Sn1e = Sn1
Sn2e = Sn2
Sn3e = Sn3
Sn4e = Sn4
Sn5e = Sn5
Sn6e = Sn6
Sn7e = Sn7
Sn8e = Sn8
Sn9e = Sn9
Sn10e = Sn10








Sn1 = "x"
Sn2 = "x"
Sn3 = "x"
Sn4 = "x"
Sn5 = "x"
Sn6 = "x"
Sn7 = "x"
Sn8 = "x"
Sn9 = "x"
Sn10 = "x"


Sn1 = Sn1e
Sn2 = Sn2e
Sn3 = Sn3e
Sn4 = Sn4e
Sn5 = Sn5e
Sn6 = Sn6e
Sn7 = Sn7e
Sn8 = Sn8e
Sn9 = Sn9e
Sn10 = Sn10e




Print Sn1 ; Sn2 ; Sn3 ; Sn4 ; Sn5 ; Sn6 ; Sn7 ; Sn8 ; Sn9 ; Sn10



End


Bei dieser Version Bleibt das "E" auch ein "E".

Hat jemand ne Idee wo hier der Bug ist?

Gruß

Andreas

Theend92
20.03.2013, 02:52
Auch wenn schon 7 Jahre alt. Bin über google drauf gestoßen.

Readeeprom Sn5 , 1
I = I + 2
Readeeprom Sn6 , I
I = I + 2
Readeeprom Sn7 , I

Am Ende von readeeprom sn5 steht 1 anstelle von I

peterfido
20.03.2013, 18:07
Ja, dafür hättest den Beitrag nicht ausgraben brauchen. Bascom ist in der Zwischenzeit viel weiter. So viele "einstellige" Strings würde ich auch nicht nehmen. Da bieten sich Bytes wesentlich besser an.