Habe Problem mit der angehängten UART Routine (ursprünglich von Keil). Das ganze läuft auf einem LPC21xx. Zum einfachen Test gebe ich kontinuierlich alle 0,5s die Zeichen aus: uart_putchar('0'); uart_putchar('1'); uart_putchar('2'); uart_putchar('3'); uart_putchar('4'); uart_putchar('5'); uart_putchar('6'); uart_putchar('7'); uart_putchar('8'); uart_putchar('9'); uart_putchar('a'); uart_putchar('b'); uart_putchar('c'); uart_putchar('d'); uart_putchar('e'); uart_putchar('f'); uart_putchar('g'); uart_putchar('h'); uart_putchar('i'); uart_putchar(13); //Carriage return uart_putchar(10); //line feed Wenn ich mit Optimierungs-Level 0 kompiliere funktioniert es. Hyperterminal gibt mir die Zeichen aus: 0123456789abcdefghi 0123456789abcdefghi 0123456789abcdefghi usw. Wenn ich Level Optimierungs-Level s benutze ist die Ausgabe nicht richtig. Hyperterminal Ausgabe: 00000000000000000123456789abcdefghi 0000000000000000000123456789abcdefghi 000000000000000000123456789abcdefghi 0000000000000000123456789abcdefghi 0000000000000000123456789abcdefghi Hat jemand eine Ahnung woran das liegen könnte?
Testweise ein volatile zur Deklaration der struct buf_st Objekte
Danke für den Hinweis. Macht aber leider keinen unterschied. Ich hätte oben bei Level s die Ausgabe genauer beschreiben sollen. Die erste Ausgabe erscheint richtig. 0123456789abcdefghi in der nächsten Zeile werden dann 0er angezeigt 0000000000000000 und dann wieder 0123456789abcdefghi angehängt. Also: 00000000000000000123456789abcdefghi usw. Die Anzahl der Nuller variiert.
Wenn ich anstatt uart_putchar('0'); uart_putchar('W'); schreibe ist die Ausgabe bei Level s: WWWWWWWWWWWWWWWWW123456789abcdefghi Also gibt es irgedwie ein Problem mit dem Ringspeicher?
Ok scheint ein bug mit der while Schleife zu sein bei Level s Optimierung. Wenn ich asm volatile("nop"); vor der While Schleife einfüge funktioniert es mit Level s. uart_putchar('q'); asm volatile("nop"); while(1) { if(zeit_flag==1) { zeit_flag = 0; uart_putchar('W'); uart_putchar('1'); uart_putchar('2'); uart_putchar('3'); uart_putchar('4'); uart_putchar('5'); uart_putchar('6'); uart_putchar('7'); uart_putchar('8'); uart_putchar('9'); uart_putchar('a'); uart_putchar('b'); uart_putchar('c'); uart_putchar('d'); uart_putchar('e'); uart_putchar('f'); uart_putchar('g'); uart_putchar('h'); uart_putchar('i'); uart_putchar(13); //Carriage return uart_putchar(10); //line feed } }
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.