PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : String ins Eeprom speichern



userdvb
31.12.2007, 15:07
Haollo Foren Mitglieder
Ich bin neu hier und schon seit Wochen am suchen nach einer Lösung für mein Problem, kann einer von euch mir vieleicht dabei helfen?

Ich versuche einen String über die Com 1 zu Empfangen und diesen dann ins Eprom abzuspeichern. Dieser Wert soll dann irgend wann wieder ausgelesen werden und etwas schalten (Portd.1=1) oder so.

Also der String wird richtig im Sram abgespeichert, aber so bald er im Eeprom
geschoben wird fehlt die Hälfte.

Siehe Anhang (Bild vom Bascom Simulator)

Ich hoffe ich habe es so beschrieben damit Ihr was damit Anfangen könnt.

Danke für eure Hilfe und einen Guten Rutsch in neue Jahr.

PicNick
31.12.2007, 16:59
Sieht man nicht so gut in der Gif
Kann es sein, das in dem String &H00 enthalten sind ?
dann wird bascom das als Endekennzeichen nehmen und auf den Rest pfeifen

userdvb
01.01.2008, 10:14
Hi PicNick

Ein Frohes neues Jahr und danke für deine Antwort.
Wenn Du die Gif Datei mit einem Browser öffnest dann einfach nochmal ins Bild klicken dann wirds größer.

Ja Du hast recht es sind sogar 4 mal &H00 enthalten. Kann man das irgendwie abschalten ich brauche den String komplett. Gibt es die möglichkeit diesen String *14 irgenwie anders zu speicheren als einzelene Bytes die man dann wieder zusammen setzt so das man sie Speichern kann.
Ein Beispielcode wäre da sehr hilfreich.
(edit)
Ich habe mir schon öfter deinen Beitrag im Wicki
https://www.roboternetz.de/wissen/index.php/Bascom_Strings_und_Bytes
angeschaut doch ich werde sowas wie "String*14 > einzelne Byte's " brauchen.Denn nach dieser meine Hürde muß ich dann noch mehr mit diesem Input machen.

Gruß Gerd

StevieL
01.01.2008, 12:46
Hallo Gerd,

du kannst ja mittels Overlay ein Bytearray definieren was über dem String liegt. Somit kannst du mit einer Schleife die einzelnen Bytes ins Eeprom schieben:



Dim Teststring As String * 14
Dim Testarray(15) As Byte At Teststring Overlay

userdvb
01.01.2008, 15:02
Hallo StevieL

Vielen Danke für dein Antwort (an so einem Tag :) )
An sowas hatte ich auch schon mal gedacht aber mit disem Code bekomme ich gar keinen Empang:

Code Anfang:


$sim
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
$framesize = 32 ' die Größe des Frames
$swstack = 32 ' die Größe des Software-stacks
$hwstack = 32 ' die Größe des Hardware-Stacks

'Dies ist ein Code von der Rowald Seite


Dim S As String * 14 At &H60
Dim B(15) As Byte At &H60 Overlay
Dim n As Byte

On URXC OnRxD
Enable URXC
Enable Interrupts

Main:
If n > 13 Then
Print s
n = 0
End If
Goto Main

OnRxD:
Incr n
b(n) = UDR
Return


Code ende'

Seltsam ist das ich nur duch den Befehl "Inputbin S" einen String Empfange und dann auch Speichern kann.

Code Anfang:


$sim
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600
$framesize = 32 ' die Größe des Frames
$swstack = 32 ' die Größe des Software-stacks
$hwstack = 32 ' die Größe des Hardware-Stacks

Dim S As String * 14 At &H60

do
Inputbin S

Printbin S
Loop


Code ende'

Ich komme da irgenwie überhaupt nicht weiter. Ich habe versucht den String als einzelne Byte' s zu Empfangen aber auch da klappte das nur mit dem ersten Byte und dannach war alles nur im Speicher FF FF FF FF
Ich bin der Meinung da liegt mein Hund begraben oder ??

Gruß Gerd

StevieL
01.01.2008, 19:08
Hallo,

dein ursprünglicher Code hat ja funktioniert, oder? Dann sollte das ja mit dem Abändern des Writeeeprom funktionieren:




dim i as byte, address as byte

For I = 1 To 15
Address = &H1F + I
Writeeeprom Testarray(i) , Address
Next