Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung WinAVR


von Mike (Gast)


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.

von holger (Gast)


Lesenswert?

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

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

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

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

von Mike (Gast)


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.

von holger (Gast)


Lesenswert?

Fällt dir hier was auf ?

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

von Mike (Gast)


Lesenswert?

Sollte es denn? Ich komme auf 51,08. Passt doch. Oder?

von Stefan E. (sternst)


Lesenswert?

Takt != TAKT

von Johannes M. (johnny-m)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>Sollte es denn?

Takt
TAKT

von Mike (Gast)


Lesenswert?

Hab ich gändert, aber die Meldungen sind immer noch da.

von horst (Gast)


Lesenswert?

takt und TAKT :D C ist case sensitIve ;)

von holger (Gast)


Lesenswert?

>Hab ich gändert, aber die Meldungen sind immer noch da.

Dann liegt der Fehler nicht in uart.c

von Andreas K. (a-k)


Lesenswert?

Welchen Editor hast du dafür verwendet? Word?

von Mike (Gast)


Lesenswert?

Wieso Editor? Hab ich aus WinAVR kopiert.

von Andreas K. (a-k)


Lesenswert?

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

von holger (Gast)


Lesenswert?

>Welchen Editor hast du dafür verwendet? Word?

He, he der ist gut ;)

Poste mal den kompletten Code.

von Johannes M. (johnny-m)


Lesenswert?

Wie kann man "aus WINAVR" etwas kopieren?

von Mike (Gast)


Angehängte Dateien:

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

von Andreas K. (a-k)


Lesenswert?

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

von holger (Gast)


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 !

von Andreas K. (a-k)


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"><html 
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'>

von Mike (Gast)


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;
}

von Benedikt K. (benedikt)


Lesenswert?

#include <avr / io.h>
Mach mal die Leerzeichen weg.

von Mike (Gast)


Lesenswert?

keine Änderung

von Andreas K. (a-k)


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. ;-)

von holger (Gast)


Lesenswert?

Exportiert von wo aus ?

Womit bearbeitest du den Code ?

Beantworte diese Fragen.

von Benedikt K. (benedikt)


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...

von Mike (Gast)


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?

von Mike (Gast)


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?
"

von Marcus B. (raketenfred)


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=37214&start=0

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

mfg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.