Absender: Torsten Evers
Datum: Sa, 01.04.2006 20:56:45
In-reply-to:
<BCF016D5ED5AC34FBB655D109519ABCF083DFB@xxxxxxxxxxxxxxxxxxxx>
References:
<BCF016D5ED5AC34FBB655D109519ABCF083DFB@xxxxxxxxxxxxxxxxxxxx>
Hallo Carsten, Am Samstag, 1. April 2006 19:57 schrieb Carsten Giesen: > Ich bräuchte mal bitte Hilfe. Da ich den Code von AVR übernommen habe, tue > ich mich schwer den Fehler zu finden. [...] > > Hier rufe ich eine Routine auf: > > state = Get_byte(data_pack[i].data_ptr++,j); [...] > *rx_ptr = TWDR; > Das Problem ist, das der Werte den ich lese, nicht in > "data_pack[i].data_ptr++" ankommt. nun, wo schaust du denn nach wenn die Funktion zurückkehrt? Wenn Du in data_pack[i].data_ptr schaust, ist das klar, dass da kein Wert steht (wenn nicht, entschuldige die simple Vermutung aber sicher ist sicher ;) ). Du übergibst den Parameter ja mit Postinkrement-Operator, d.h. der Zeiger zeigt nach dem Aufruf auf den nächsten Character-Wert, d.h. eine Speicherstelle weiter. Hier ein kleines Testprogramm, das das verdeutlichen soll: #include <stdio.h> void testit(char* foo) { *foo='a'; } int main() { char test[]="123456789"; char *ptr=test; printf("String vorher: %s\n",test); testit(ptr++); printf("Zeiger zeigt auf: %c\n",*ptr); printf("String nacher: %s\n",test); } Schöne Grüße, Torsten Evers