mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung WinAVR


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fange grad an mit der ganzen Programmiererei, also verzeiht mir bitte 
diese Frage. Für euch wird sie wohl das einfachste der welt sein.
Kann mir diese Fehlermeldungen von WinAVR erklären?

#include <avr/io.h>
#include <stdio.h>
#define  Takt 8000000UL
#define BAUD 9600UL
void inituart(void)
{
unsigned char x;
#ifdef UBRRL
UBRRL = (TAKT / (16 * BAUD)) -1
UCSRB |= (1 << TXEN) | (1<< RXEN);
UCSRC |= (1 << URSEL) | (1<< UCSZ1) | (1<< UCSZ0);
#else
UBRR = (TAKT / (16 * BAUD)) -1
UCR |= (1 << TXEN) | (1 << RXEN);
#endif
x = UDR
}
int putch (char X)
{
#ifdef UCSRA
while ( !(UCSRA & (1 << UDRE)));
#endif
UDR = x;
return 0;
}
int getch (void)
{
#ifdef UCSRA
while (!(UCSRA & (1 << RXC)))
#else USRA
while (!(USRA & (1 << RXC)))

#endif
return UDR;
}

int getche (void)
{
unsigned char x;
x = getch();
putch (x);
return x;
}


UART.c:1: error: expected identifier or '(' before '<' token
UART.c:1:51: warning: unknown escape sequence '\P'
UART.c:1:51: warning: unknown escape sequence '\P'
UART.c:1:51: warning: unknown escape sequence '\N'
UART.c:1:51: error: incomplete universal character name \UA
make.exe: *** [UART.o] Error 1

Hoffentlich kann man das überhaupt jetzt alles erkennen.
Und gleich noch eine Frage.
Ich möchte mit dem Controller (AT90USB) per USART eine Anfrage an ein 
Modul schicken. Kann ich den dafür genutzten HEX-Wert gleich bei z.B. 
UDR = x; eintragen?
Dank euch schon mal.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>UBRRL = (TAKT / (16 * BAUD)) -1

UBRRL = (TAKT / (16 * BAUD)) -1;

>while (!(UCSRA & (1 << RXC)))

while (!(UCSRA & (1 << RXC)));

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt die fehlenden ; ersetzt. Waren ja doch nen ganzer Sack voll.
Die Fehlermeldungen sind aber geblieben und sogar noch welche dazu 
gekommen.

UART.c:1: error: expected identifier or '(' before '<' token
UART.c:1:51: warning: unknown escape sequence '\P'
UART.c:1:51: warning: unknown escape sequence '\P'
UART.c:1:51: warning: unknown escape sequence '\N'
UART.c:1:51: error: incomplete universal character name \UA
UART.c:1:145: warning: unknown escape sequence '\P'
UART.c:1:145: warning: unknown escape sequence '\P'
UART.c:1:145: warning: unknown escape sequence '\N'
UART.c:1:145: warning: unknown escape sequence '\L'
make.exe: *** [UART.o] Error 1


Kann man bei WinAVR nicht die Zeilen sehen wo der Fehler steckt? Dieses 
1:51: scheint ja nicht die Zeile zu sein.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fällt dir hier was auf ?

>#define  Takt 8000000UL
>UBRRL = (TAKT / (16 * BAUD)) -1;

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte es denn? Ich komme auf 51,08. Passt doch. Oder?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Takt != TAKT

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C ist Case-sensitiv! "TAKT" ist nicht gleich "Takt"...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Sollte es denn?

Takt
TAKT

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab ich gändert, aber die Meldungen sind immer noch da.

Autor: horst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
takt und TAKT :D C ist case sensitIve ;)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab ich gändert, aber die Meldungen sind immer noch da.

Dann liegt der Fehler nicht in uart.c

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Editor hast du dafür verwendet? Word?

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso Editor? Hab ich aus WinAVR kopiert.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weil die Fehlermeldungen nichts im dem erkennbaren Inhalt des Files zu 
tun haben. Ist der Quelltext möglicherweise ein Unicode-File?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Welchen Editor hast du dafür verwendet? Word?

He, he der ist gut ;)

Poste mal den kompletten Code.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann man "aus WINAVR" etwas kopieren?

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

Bewertung
0 lesenswert
nicht lesenswert
Hab ich doch oben schon getan. Das ist alles. Ich hab doch nicht den 
Plan von dem ganzen.
Hab ihn mal als HTML exportiert. Richtig so?
Kopieren, rechte Maustaste, copy

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du sollst das File nicht exportieren, nicht importieren und nicht 
apportieren, sondern unverändert hier reinstellen.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hab ihn mal als HTML exportiert. Richtig so?

Nein, natürlich nicht. Exportiert von wo aus ?

Die erste Fehlermeldung kommt vermutlich von dieser Zeile

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

Du kannst mit Winavr keinen HTML Code compilieren !

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was meinst du fängt ein Compiler mit Quelltext an, der so anfängt:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><htm... 
xmlns='http://www.w3.org/1999/xhtml'>
<head>
  <meta http-equiv='Content-Type' content='text/html; 
charset=iso-8859-1' />
  <title></title>
  <style type='text/css' media='all'>

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ist dann wohl was schief gegangen mit dem exportieren.
So wie hier steht er in WinAVR und mir ist sehr wohl klar, dass ein 
Compiler mit Metadaten nichts anfangen kann. Das er diese nun ausspuckt 
konnte ich vorher nicht wissen.

#include <avr / io.h>
#include <stdio.h>
#define  TAKT 8000000UL
#define BAUD 9600UL
void inituart(void)
{
unsigned char x;
#ifdef UBRRL
UBRRL = (TAKT / (16 * BAUD)) -1;
UCSRB |= (1 << TXEN) | (1<< RXEN);
UCSRC |= (1 << URSEL) | (1<< UCSZ1) | (1<< UCSZ0);
#else
UBRR = (TAKT / (16 * BAUD)) -1;
UCR |= (1 << TXEN) | (1 << RXEN);
#endif
x = UDR;
}

int putch (char X)
{
#ifdef UCSRA
while ( !(UCSRA & (1 << UDRE)));
#endif
UDR = x;
return 0;
}

int getch (void)
{
#ifdef UCSRA
while (!(UCSRA & (1 << RXC)));

#else USRA
while (!(USRA & (1 << RXC)));
#endif
return UDR;
}

int getche (void)
{
unsigned char x;
x = getch();
putch (x);
return x;
}

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
#include <avr / io.h>
Mach mal die Leerzeichen weg.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keine Änderung

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube für dich gibt nur einen Weg: Drucke den Quelltext aus und 
tippe ihn per AVR Studio oder Programmers Notepad neu ein. Sonst wirst 
du den HTML-Kram wahrscheinlich nie los. ;-)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Exportiert von wo aus ?

Womit bearbeitest du den Code ?

Beantworte diese Fragen.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mal die Datei so anhängen, wie du sie compilierst ? Es treten 
Fehler in Zeile 145 auf, ich sehe aber keine 145 Zeilen...

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So viele Zeile hat die datei auch eigentlich nicht. Irgendetwas ist 
jetzt wirklich mächtig schief gegangen. Die Datei mit dem Quelltext 
sollte doch eigentlich ne ganz normale .c Datei. Oder? Wenn ich die 
öffne, dann kommt folgendes <Workspace name="New Project Group"><Project 
path="D:\Programmierung PulsOxi\Programm PulsOxi\Neuer 
Ordner\UART.pnproj"></Project></Workspace>

Daher dann auch die Fehler. Nur woher kommt das?

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie schon erwähnt, keine Ahnung was da schief gegangen ist.

Nochmal alles von vorn und jetzt kommt das raus.

#include <avr/io.h>
#include <stdio.h>
#define TAKT 8000000UL
#define BAUD 9600UL
void inituart(void)
{
unsigned char x;
#ifdef UBRRL
UBRRL = (TAKT / (16 * BAUD)) -1;
UCSRB |= (1 << TXEN) | (1<< RXEN);
UCSRC |= (1 << URSEL) | (1<< UCSZ1) | (1<< UCSZ0);
#else
UBRR = (TAKT / (16 * BAUD)) -1;
UCR |= (1 << TXEN) | (1 << RXEN);
#endif
x = UDR;
}
int putch (char X)
{
#ifdef UCSRA
while ( !(UCSRA & (1 << UDRE)));
#endif
UDR = x;
return 0;
}
int getch (void)
{
#ifdef UCSRA
while (!(UCSRA & (1 << RXC)));
#else USRA
while (!(USRA & (1 << RXC)));

#endif
return UDR;
}

int getche (void)
{
unsigned char x;
x = getch();
putch (x);
return x;
}


UART.c:1:21: warning: avr/io.h: No such file or directory
UART.c:2:20: warning: stdio.h: No such file or directory
UART.c: In function 'inituart':
UART.c:13: error: 'UBRR' undeclared (first use in this function)
UART.c:13: error: (Each undeclared identifier is reported only once
UART.c:13: error: for each function it appears in.)
UART.c:14: error: 'UCR' undeclared (first use in this function)
UART.c:14: error: 'TXEN' undeclared (first use in this function)
UART.c:14: error: 'RXEN' undeclared (first use in this function)
UART.c:16: error: 'UDR' undeclared (first use in this function)
UART.c: In function 'putch':
UART.c:23: error: 'UDR' undeclared (first use in this function)
UART.c:23: error: 'x' undeclared (first use in this function)
UART.c:30:7: warning: extra tokens at end of #else directive
UART.c: In function 'getch':
UART.c:31: error: 'USRA' undeclared (first use in this function)
UART.c:31: error: 'RXC' undeclared (first use in this function)
UART.c:34: error: 'UDR' undeclared (first use in this function)
make.exe: *** [UART.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

Sind ja wenigstens schon mal normale Fehlermeldungen

Der Fehler mit x ist dann auch eine Frage von meinen Thread ganz oben
"Ich möchte mit dem Controller (AT90USB) per USART eine Anfrage an ein
Modul schicken. Kann ich den dafür genutzten HEX-Wert gleich bei z.B.
UDR = x; eintragen?
"

Autor: Marcus B. (raketenfred)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß dass der Thread schon bisschen angestaubt ist, jedoch kommt er 
bei der Fehlersuche, nach dem Fehler aus dem letzten Post

hatte bis gerade das gleiche Problem, aber dann einen Tipp gefunden:

MartinFunk - 14.01.2008, 17:28
Titel: Hi irobot,
versuch dein projekt nicht in den Eigenen Dateien zu compilieren sonder 
z.B. in C:\Asuro\projektname denn WinAVR macht probleme bei ordner namen 
mit Leer zeichen (C:\Dokumente und Einstellungen\Petersen.PN15\Eigene 
Dateien\)

MfG Martin

Quelle: http://www.roboternetz.de/phpBB2/printview.php?t=3...

Selbst getestet und froh dadrüber dass es läuft

mfg

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.