Problem mit Programm

Gast #2469503
Lesenswert?

Hallo,

ich habe ein Programm geschrieben, welches Messwerte in ein EEPROM 
(Microchip 24FC1025) speichert und wieder zurückliest.
Leider ist das Ergebnis nicht ganz das, was ich mir vorgestellt habe. 
Angezeigt wird immer der letzte Datensatz, was nicht korrekt ist.

Ich habe das mal in das GCC-Forum gestellt, da die Hardware etc. 
funktioniert.

Hier die Programmausgabe und anbei der Source-Code.
1
write_data_to_eeprom: write_buffer_len = 28, block = 0, page = 0,0  -->15:46:19,25.9,25.9,26.0,26.0
2
write_data_to_eeprom out: write_buffer_len = 28, block = 0, page = 0,0  -->15:46:19,25.9,25.9,26.0,26.0
3
write_data_to_eeprom: write_buffer_len = 28, block = 0, page = 0,1  -->15:46:34,25.9,25.9,26.0,26.0
4
write_data_to_eeprom out: write_buffer_len = 28, block = 0, page = 0,1  -->15:46:34,25.9,25.9,26.0,26.0
5
write_data_to_eeprom: write_buffer_len = 28, block = 0, page = 0,2  -->15:47:04,25.9,25.9,26.0,26.0
6
write_data_to_eeprom out: write_buffer_len = 28, block = 0, page = 0,2  -->15:47:04,25.9,25.9,26.0,26.0
7
write_data_to_eeprom: write_buffer_len = 28, block = 0, page = 0,3  -->15:47:34,25.9,25.9,26.0,26.0
8
write_data_to_eeprom out: write_buffer_len = 28, block = 0, page = 0,3  -->15:47:34,25.9,25.9,26.0,26.0
9
readpage in: write_buffer = 154803, len=6, i=0
10
readpage break: write_buffer = 11115:47:34,25.9,25.9,26.0,26.0, len=31, i=31
11
readpage out: write_buffer = 11115:47:34,25.9,25.9,26.0,26.0, len=31, i=31
12
writesd block:0 page:0 -->11115:47:34,25.9,25.9,26.0,26.0 (31)
13
readpage in: write_buffer = 11115:47:34,25.9,25.9,26.0,26.0, len=31, i=0
14
readpage break: write_buffer = 1115:47:34,25.9,25.9,26.0,26.0, len=30, i=30
15
readpage out: write_buffer = 1115:47:34,25.9,25.9,26.0,26.0, len=30, i=30
16
writesd block:0 page:1 -->1115:47:34,25.9,25.9,26.0,26.0 (30)
17
readpage in: write_buffer = 1115:47:34,25.9,25.9,26.0,26.0, len=30, i=0
18
readpage break: write_buffer = 115:47:34,25.9,25.9,26.0,26.0, len=29, i=29
19
readpage out: write_buffer = 115:47:34,25.9,25.9,26.0,26.0, len=29, i=29
20
writesd block:0 page:2 -->115:47:34,25.9,25.9,26.0,26.0 (29)
21
readpage in: write_buffer = 115:47:34,25.9,25.9,26.0,26.0, len=29, i=0
22
readpage break: write_buffer = 15:47:34,25.9,25.9,26.0,26.0, len=28, i=28
23
readpage out: write_buffer = 15:47:34,25.9,25.9,26.0,26.0, len=28, i=28
24
writesd block:0 page:3 -->15:47:34,25.9,25.9,26.0,26.0 (28)
25
write_data_to_eeprom: write_buffer_len = 28, block = 0, page = 0,4  -->15:48:05,25.9,25.9,26.0,26.0
26
write_data_to_eeprom out: write_buffer_len = 28, block = 0, page = 0,4  -->15:48:05,25.9,25.9,26.0,26.0
27
write_data_to_eeprom: write_buffer_len = 28, block = 0, page = 0,5  -->15:48:34,25.9,25.9,26.0,26.0
28
write_data_to_eeprom out: write_buffer_len = 28, block = 0, page = 0,5  -->15:48:34,25.9,25.9,26.0,26.0
Angehängte Dateien:
Gast #2469553
Lesenswert?

Hallo,

was sollen wir jetzt tun,

- erraten wie deine Klasse aufgebaut ist
- erraten welche Methoden du in welcher Reihenfolge aufrufst ???
- erraten wie .....
.
.
   bitte keine Ratespiele

eine genaue Frage stellen und alle nötigen Quellen zeigen anhand man 
dein  Problem nachvollziehen kann !!!!
Gast #2469653
Lesenswert?

Das Problem ist folgendes:

Es wird ein String (15:47:34,25.9,25.9,26.0,26.0) weggeschrieben, aber 
beim Lesen des Strings werden scheinbar führenden "1" eingefügt. 
Außerdem ist der eingelesene String immer der letzte, der geschrieben 
wurde.

Ich würde mich freuen, wenn jemand über mein C-Programm schauen könnte, 
ob ich da fehlerhaft programmiert habe.

Interessant sind die Funktionen readpage und  write_to_sd.

Vielen Dank!
Gast #2470371
Lesenswert?

Das Problem ist gelöst. Die Adressierung des Data-Pointers für das 
EEPROM war nicht ganz korrekt. Ein Multiplizieren mit 128 wirkte Wunder 
:-)

Vielen Dank an alle, die sich die Mühe gemacht haben in den Code zu 
schauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren