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.
>UBRRL = (TAKT / (16 * BAUD)) -1 UBRRL = (TAKT / (16 * BAUD)) -1; >while (!(UCSRA & (1 << RXC))) while (!(UCSRA & (1 << RXC)));
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.
Fällt dir hier was auf ? >#define Takt 8000000UL >UBRRL = (TAKT / (16 * BAUD)) -1;
>Hab ich gändert, aber die Meldungen sind immer noch da.
Dann liegt der Fehler nicht in uart.c
Weil die Fehlermeldungen nichts im dem erkennbaren Inhalt des Files zu tun haben. Ist der Quelltext möglicherweise ein Unicode-File?
>Welchen Editor hast du dafür verwendet? Word?
He, he der ist gut ;)
Poste mal den kompletten Code.
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
Du sollst das File nicht exportieren, nicht importieren und nicht apportieren, sondern unverändert hier reinstellen.
>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 !
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'>
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; }
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. ;-)
Exportiert von wo aus ? Womit bearbeitest du den Code ? Beantworte diese Fragen.
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...
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?
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? "
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.