Zugriff auf struct schlägt fehl

Gast #997556
Ich arbeite mit AVRStudio 4.12 SP4 und WinAVR20071221auf einem ATmega32.
Nun habe ich in einer header Datei eine struct definiert (header Datei 
in main.c natürlich eigebunden), dcf77.h:
1
typedef struct {
2
   char min[2];
3
   char hour[2];
4
   char day[2];
5
   char weekday[2];
6
   char month[2];
7
   char year[2];
8
} dcf_struct;
9

10
uint8_t calc_dcf77 (uint8_t dcf_array[59], dcf_struct* dcfstruct);
in der main.c wird die struct nun eigentlich angelegt:
1
dcf_struct dcf_complete;
2
uint8_t dcf[59];
diese soll einer funktion übergeben werden.
Funktionsaufruf in main.c:
1
calc_dcf77 ( dcf, &dcf_complete);
funktion in dcf77.c:
1
uint8_t calc_dcf77 (uint8_t dcf_array[59], dcf_struct* dcfstruct)
2
{
3
...
4
//buffer ist auch ein char array der länge 2
5
dcfstruct->hour[0]=buffer[0];
6
...
7
}

Problem ist nun, dass die dcf77.c z.b nichts mit der definierten struct 
anfangen kann ( error: expected declaration specifiers or '...' before 
'dcf_struct', diese Fehlermeldung kommt in dcf77.c am anfang der 
Funktion).
Füge ich die gleiche Tyeedef wie in der header Datei dcf77.h ein, 
funktioniert schon mal alles ohne Fehler.

Nun aber das zerite Problem, ist der Zugriff auf die char arrays der 
struct denn überhaupt so richtig. naja, funktionieren tuts ja^^
Persönliche Seite
Du musst dcf77.h überall dort einbinden, wo die darin enthaltene 
Strukturdefiniton benötigt wird, also auch in dcf77.c

1
//buffer ist auch ein char array der länge 2
2
dcfstruct->hour[0]=buffer[0];

Der Kommentar lässt vermuten, daß Du hier zwei Bytes kopieren möchtest, 
das aber tust Du nicht, Du kopierst nur ein Byte.

Was möchtest Du an dieser Stelle nun genau anstellen? Und welchen 
Zusammenhang haben buffer und dcf_array ?
Gast
Zum besseren Verständnis hab ich mal das Projekt angefügt.

>>Der Kommentar lässt vermuten, daß Du hier zwei
>>Bytes kopieren möchtest,
>>das aber tust Du nicht, Du kopierst nur ein Byte.
da hast du recht, ich hab euch nur einen Ausschnitt gezeigt, ich kopiere 
schon alles

dcf77.h ist nun auch in dcf77.c eingefügt, thx (Brett vorm Kopf)

Soweit funktioniert auch alles, ich empfange zumindest Daten.
aber als Anzeige bekomme ich immer
00:00
xx 00.00.00
da ich aber in der isr jeweils bei empfang einer 0 oder 1 jeweils 2 Led 
toggeln lasse, weiss ich dass Daten ankommen. Ich find nur nicht den 
Fehler warum die Auswertung nicht klappt. Ich dachte eben es könnte an 
der strukt oder dem array liegen
Angehängte Dateien:
Gast
hat sich alles erledigt
bin jetzt auf die detektion der pausen umgestiegen 
(800ms,900ms,1800ms,1900ms) und da klappt alles
zudem war der timer mit 10ms etwas zu schnell eingestellt, so dass die 
isr nicht richtig abgearbeitet werden konnte
bin nun auf 50ms umgestiegen
thx trotzdem, auch wenns nichts mehr mit der eigentlichen frage zu tun 
hat
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.