surfer
02.01.2006, 11:52
Hallo zusammen
Erstens möchte ich euch allen einen guten Start ins neue Jahr 2006 wünschen!
Meins hat im uC-Bereich leider nicht so gut angefangen :-(
Ich arbeite an einem Projekt, bei dem ich ein Serielles Grafikdisplay mit Touchscreen und ein GPS-Empfänger habe.
Ich benutze einen ATMEGA64 wobei das Display am UART0 und das GPS am UART1 hängt.
Vor ein paar Tagen arbeitete ich noch mit einem ATMEGA162, jedoch reichte der Programmspeicher nicht aus und ich wechselte auf einen 64er.
Doch jetzt kommen die Probleme:
Nachdem ich das Makefile und den Code am 64er angepasst habe, hat dieser Mühe mit dem UART vom Display!
Wenn ich folgenden Code verarbeiten möchte, bleibt der Controller in der Schleife hängen:
volatile char buffer0;
SIGNAL(SIG_UART0_RECV)
{
buffer0=UDR0;
}
int main(void)
{
UART0_init(9600);
sei();
while(buffer0!=99) //Touchscreen liefert bei Taste x das ASCII-Zeichen 99
{
disp_text('h','l',20,20,"Das ist ein TEST"); // Text auf Display (geht über UART0)
}
}
Das komische ist, dass wenn ich in der Schleife die Textanweisung weglasse, dann geht es ohne Probleme. Also wenn nichts über den UART gesendet wird...
Ich verstehe vollkommen nicht, warum das auf dem 162er geklappt hat und auf dem 64 nicht!!!
Könnte es auch an der Verkabelung liegen (64er passt nicht auf 162er Footprint == Kabelwirrwarr)
Es gibt für mich einfach keinen Grund, warum er in der Schleife hängenbleiben soll :-(
Hoffentlich könnt ihr mir einen Tipp geben...
Erstens möchte ich euch allen einen guten Start ins neue Jahr 2006 wünschen!
Meins hat im uC-Bereich leider nicht so gut angefangen :-(
Ich arbeite an einem Projekt, bei dem ich ein Serielles Grafikdisplay mit Touchscreen und ein GPS-Empfänger habe.
Ich benutze einen ATMEGA64 wobei das Display am UART0 und das GPS am UART1 hängt.
Vor ein paar Tagen arbeitete ich noch mit einem ATMEGA162, jedoch reichte der Programmspeicher nicht aus und ich wechselte auf einen 64er.
Doch jetzt kommen die Probleme:
Nachdem ich das Makefile und den Code am 64er angepasst habe, hat dieser Mühe mit dem UART vom Display!
Wenn ich folgenden Code verarbeiten möchte, bleibt der Controller in der Schleife hängen:
volatile char buffer0;
SIGNAL(SIG_UART0_RECV)
{
buffer0=UDR0;
}
int main(void)
{
UART0_init(9600);
sei();
while(buffer0!=99) //Touchscreen liefert bei Taste x das ASCII-Zeichen 99
{
disp_text('h','l',20,20,"Das ist ein TEST"); // Text auf Display (geht über UART0)
}
}
Das komische ist, dass wenn ich in der Schleife die Textanweisung weglasse, dann geht es ohne Probleme. Also wenn nichts über den UART gesendet wird...
Ich verstehe vollkommen nicht, warum das auf dem 162er geklappt hat und auf dem 64 nicht!!!
Könnte es auch an der Verkabelung liegen (64er passt nicht auf 162er Footprint == Kabelwirrwarr)
Es gibt für mich einfach keinen Grund, warum er in der Schleife hängenbleiben soll :-(
Hoffentlich könnt ihr mir einen Tipp geben...