mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik error und ihre ursachen??


Autor: GreenhornTW (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute!

Habe folgendes Problem:
habe für den ATMEGA8(L) ein c-programm geschrieben und compiliert (im
DOS: avr-gcc code.c) und es kamen etliche fehlermeldungen (siehe weiter
unten)!
-> dürfte wahrscheinlich an der header-datei liegen - habe aba leider
keine ahnung, von wo ich die bekomme und wo ich sie einbinden muss
(welches verzeichnis, etc.!)
-> da ich ein blutiger anfänger bin, würde ich euch bitten foglendes zu
beachten: "Es gibt keine blöden Fragen, es gibt nur blöde antworten!"
;o)

thx,
Gruß
GreenhornTW


code.c:2:61: mega8.h: No such file or directory
code.c:20: error: parse error before "RxFlag"
code.c:20: warning: data definition has no type or storage class
code.c:32: error: `TIM0_OVF' undeclared here (not in a function)
code.c:32: error: syntax error before "void"
code.c: In function `timer0_ovf_isr':
code.c:34: error: `TCNT0' undeclared (first use in this function)
code.c:34: error: (Each undeclared identifier is reported only once
code.c:34: error: for each function it appears in.)
code.c: In function `pd2_int':
code.c:47: error: `TCNT0' undeclared (first use in this function)
code.c: In function `interrupt':
code.c:67: error: `TIFR' undeclared (first use in this function)
code.c:67: error: `T0V0' undeclared (first use in this function)
code.c:71: error: `GIFR' undeclared (first use in this function)
code.c:71: error: `INTF0' undeclared (first use in this function)
code.c:73: error: parse error before ')' token
code.c: At top level:
code.c:78: error: `USART_RXC' undeclared here (not in a function)
code.c:78: error: syntax error before "void"
code.c: In function `RX_int_isr':
code.c:81: error: `UDR' undeclared (first use in this function)
code.c: In function `main':
code.c:108: error: `PD3' undeclared (first use in this function)
code.c:89: warning: return type of `main' is not `int'
code.c: At top level:
code.c:123: warning: type mismatch with previous implicit declaration
code.c:90: warning: previous implicit declaration of `InitSFRs'
code.c:123: warning: `InitSFRs' was previously implicitly declared to
return `int'
code.c: In function `InitSFRs':
code.c:125: error: `PortD' undeclared (first use in this function)
code.c:126: error: `DDRD' undeclared (first use in this function)
code.c:130: error: `TCCR0' undeclared (first use in this function)
code.c:131: error: `TCNT0' undeclared (first use in this function)
code.c:135: error: `MCUCR' undeclared (first use in this function)
code.c:136: error: `GICR' undeclared (first use in this function)
code.c:139: error: `TIMSK' undeclared (first use in this function)
code.c:147: error: `UCSRA' undeclared (first use in this function)
code.c:148: error: `UCSRB' undeclared (first use in this function)
code.c:149: error: `UCSRC' undeclared (first use in this function)
code.c:150: error: `UBRRH' undeclared (first use in this function)
code.c:151: error: `UBRRL' undeclared (first use in this function)
code.c: In function `SerSend':
code.c:157: error: `UCSRA' undeclared (first use in this function)
code.c:157:26: invalid suffix "b00100000" on integer constant
code.c:159: error: `UDR' undeclared (first use in this function)
code.c: In function `MobilePhoneInit':
code.c:166: warning: passing arg 1 of `SerSend' makes integer from
pointer without a cast
code.c: In function `Dial':
code.c:175: warning: passing arg 1 of `SerSend' makes integer from
pointer without a cast
askennecode.c:2:61: mega8.h: No such file or directory
code.c:20: error: parse error before "RxFlag"
code.c:20: warning: data definition has no type or storage class
code.c:32: error: `TIM0_OVF' undeclared here (not in a function)
code.c:32: error: syntax error before "void"
code.c: In function `timer0_ovf_isr':
code.c:34: error: `TCNT0' undeclared (first use in this function)
code.c:34: error: (Each undeclared identifier is reported only once
code.c:34: error: for each function it appears in.)
code.c: In function `pd2_int':
code.c:47: error: `TCNT0' undeclared (first use in this function)
code.c: In function `interrupt':
code.c:67: error: `TIFR' undeclared (first use in this function)
code.c:67: error: `T0V0' undeclared (first use in this function)
code.c:71: error: `GIFR' undeclared (first use in this function)
code.c:71: error: `INTF0' undeclared (first use in this function)
code.c:73: error: parse error before ')' token
code.c: At top level:
code.c:78: error: `USART_RXC' undeclared here (not in a function)
code.c:78: error: syntax error before "void"
code.c: In function `RX_int_isr':
code.c:81: error: `UDR' undeclared (first use in this function)
code.c: In function `main':
code.c:108: error: `PD3' undeclared (first use in this function)
code.c:89: warning: return type of `main' is not `int'
code.c: At top level:
code.c:123: warning: type mismatch with previous implicit declaration
code.c:90: warning: previous implicit declaration of `InitSFRs'
code.c:123: warning: `InitSFRs' was previously implicitly declared to
return `int'
code.c: In function `InitSFRs':
code.c:125: error: `PortD' undeclared (first use in this function)
code.c:126: error: `DDRD' undeclared (first use in this function)
code.c:130: error: `TCCR0' undeclared (first use in this function)
code.c:131: error: `TCNT0' undeclared (first use in this function)
code.c:135: error: `MCUCR' undeclared (first use in this function)
code.c:136: error: `GICR' undeclared (first use in this function)
code.c:139: error: `TIMSK' undeclared (first use in this function)
code.c:147: error: `UCSRA' undeclared (first use in this function)
code.c:148: error: `UCSRB' undeclared (first use in this function)
code.c:149: error: `UCSRC' undeclared (first use in this function)
code.c:150: error: `UBRRH' undeclared (first use in this function)
code.c:151: error: `UBRRL' undeclared (first use in this function)
code.c: In function `SerSend':
code.c:157: error: `UCSRA' undeclared (first use in this function)
code.c:157:26: invalid suffix "b00100000" on integer constant
code.c:159: error: `UDR' undeclared (first use in this function)
code.c: In function `MobilePhoneInit':
code.c:166: warning: passing arg 1 of `SerSend' makes integer from
pointer without a cast
code.c: In function `Dial':
code.c:175: warning: passing arg 1 of `SerSend' makes integer from
pointer without a cast

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihgitt, ist ja eklig :-)

Wenn Du ein blutiger Anfänger bist, dann empfehle ich Dir das
allseitsbeliebte "Hello, World!", um erst mal Deine
Entwicklungsumgebung ordentlich einzurichten. Näheres dazu findest Du
warscheinlich im AVR-GCC Forum. So ein Mega-File gleich als erstes
Kompilieren zu wollen, ohne überhaupt zu wissen, ob die Toolchain läuft
ist zwecklos...

Gruß,
Patrick...

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, und die blöde Antwort ist: ohne diese Headerdatei kann Dir keiner
helfen.  Du mußt also schon denjenigen finden, der den originalen Code
verbrochen hat.

Unter avr-gcc wäre die passende Headerdatei via <avr/io.h> zu finden,
wobei Deine -mmcu=atmega8 Option gesetzt sein muß.  Allerdings ist der
C-Code offenbar nicht für den avr-gcc geschrieben worden.

Autor: GreenhornTW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bezüglich "Hello World" hast du natürlich recht - jedoch aus
zeitgründen war ich gezwungen es einfach so zu risikieren (also drauf
losprogrammieren und "hoffen")!
;o)

trotzdem danke für eure antworten, werde mich mal übers richtige
compilieren schlau machen... dachte das es mit avr-gcc klappt.

mfg,
GreenhornTW

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "kompilieren" wird auch mit avr-gcc klappen. Wenn die
Voraussetzungen stimmen...
Die Ausrede mit den Zeitgründen kommt immer wieder und ist schlichtweg
falsch. Die Fehlersuche kostet dann nämlich mehr Zeit als das Erstellen
eines Minimalprogrammes!

Gruß,
Patrick...

Autor: GreenhornTW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
denke ich habe jetzt die richtigen header datein(glaub ich mal).

habe den Code in WinAVR geschrieben, nur weiß ich nicht mit welchem
Befehl ich den Code kompilieren kann. avr-gcc war ja falsch.

Autor: GreenhornTW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke oldBug.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau Dir doch mal das Beispielmakefile an. Das auf Dein Projekt
angepasst sollte genau das sein, was Du brauchst.

Gruß,
Patrick...

Autor: GreenhornTW (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Back again :)

Haben jetzt alle errors ausgemerzt und das make file richtig erstellt.
Jetzt gibt es nur mehr ein paar wenige warnings zu denen wir fragen
haben.

Vielleicht hat ja jemand zeit um sich den code (siehe anhang) kurz
anzuschaun.

thx,
Greenhorn TW

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...welche warnings...?

Autor: GreenhornTW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups vergessen

avr-gcc -c -mmcu=atmega8 -I. -g -O0 -funsigned-char
-funsigned-bitfields -fpack-struct -fshort-enums -Wall
-Wstrict-prototypes -Wa,-ahlms=main.lst main.c -o main.o
main.c:48: warning: function declaration isn't a prototype
main.c:50: warning: function declaration isn't a prototype
main.c:51: warning: function declaration isn't a prototype
main.c:113: warning: function declaration isn't a prototype
main.c:113: warning: return type of `main' is not `int'
main.c:147: warning: function declaration isn't a prototype
main.c:189: warning: function declaration isn't a prototype
main.c: In function `MobilePhoneInit':
main.c:190: warning: passing arg 1 of `SerSend' makes integer from
pointer without a cast
main.c: At top level:
main.c:196: warning: function declaration isn't a prototype
main.c: In function `Dial':
main.c:199: warning: passing arg 1 of `SerSend' makes integer from
pointer without a cast
main.c:200: warning: implicit declaration of function `wait'

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, ist doch ziemlich selbsterklärend, oder?  (Die Zeilennummern
passen aber nicht zur Datei.)

> main.c:48: warning: function declaration isn't a prototype

void InitSFRs();

Sowas ist zwar eine Funktionsdeklaration, aber eine `old style'
(pre-C90, sogenanntes ``K&R C'').  Für C wäre korrekt:

void InitSFRs (void);

Unter C++ sind beide Deklarationen übrigens identisch.

> main.c:113: warning: return type of `main' is not `int'

Steht doch auch da, schon tausendmal durchgekaut: gültige
Funktionsprototypen für main() gemäß C-Standard sind

int main(void);
int main(int, char **);

Falls main() jemals zurückkehrt, wird der von ihm zurückgegebene Wert
standardgemäß an exit() weitergereicht.  Die mitgelieferte Funktion
exit() ignoriert ihn natürlich (und verbleibt in einer
Endlosschleife), aber es hinder Dich niemand daran, eine eigene
Funktion exit() zu schreiben, die mit dem Wert was anstellt.

> main.c:190: warning: passing arg 1 of `SerSend' makes integer from
> pointer without a cast

Diese Warnung stimmt nicht mit Deinem geposteten Sourcecode überein.

> main.c:200: warning: implicit declaration of function `wait'

Auch selbsterklärend: wait() ist nirgends deklariert.  Ich sehe auch
keine Implementierung, eigentlich müßtest Du einen linker error
bekommen.  Hast Du die Implementierung in einer anderen Funktion?
Dann deklariere sie (sinnvollerweise über eine Headerdatei).
Erwartest Du die Implementierung in der avr-libc?  Geht nicht, ist zu
sehr abhängig von der jeweiligen Implementierung.

Eine Implementierung könnte über einen hardware timer erfolgen, zur
Not auch (aber das ist eher `proof of concept') über die Makros in
<avr/delay.h>.  Da mußt Du aber noch eine Schleife drumrumsetzen,
sonst kommst Du nicht auf so lange Zeiten.

Weiterhin sind Deine Interrupthandler noch nicht richtig deklariert,
die mußt Du mit SIGNAL(SIG_xxx) deklarieren, siehe Doku.

Zum Stil: magische Zahlen (MCUCR=0x03;) sollte man vermeiden, schreibe
besser MCUCR = _BV(ISC00) | _BV(ISC01);.

Autor: GreenhornTW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für deine schnelle antwort...hilft uns sicha weita!!!

Gruß,
Greenhorn TW

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.