Gast
#76761
Hi, ich habe erst vor kurzem angefangen mich für die Welt der AVRs zu interessieren. Schnell habe ich mir das hier erhältliche Boards inkl. ISP bestellt, sowie einen Atmel 90S4433. Ich entwickle in C mit WinAVR und progge meinen Chip mit PonyProg2000 unter Win NT. Ich habe 2 Probleme, bei denen ihr mir sicher helfen könnt, ist bestimmt nur 'ne Kleinigkeit. Wenn ich in meiner Main-Methode (nicht innerhalb einer Schleife!!!) einen Character ans UART sende, dann empfängt mein Hyperterminal dieses Zeichen andauernd, hört gar nicht mehr auf. Das gleiche passiert, wenn ich das Zeichen aus einer Methode heraus, die in der Main aufgerufen wird, schicken will. Schicke ich das Zeichen in einem Interrupt, dann funktioniert's wunderbar. Das 2. Problem ist, dass immer, wenn ein Zeichen aus diesem Interrupt gesendet wird, direkt die LED ausgeht. Ich schicke mal ein paar Codeauszüge mit... So schicke ich Zeichen ans UART: void uart_putchar(char c) { if (c == '\n') uart_putchar('\r'); loop_until_bit_is_set(UCSRA, UDRE); UDR = c; } Das ist mein Interrupt: SIGNAL(SIG_UART_RECV) { if(inp(UCSRA) & (1 << RXC)) { switch (inp (UDR)) { case '0': turnOffLEDC5(); break; case '1': turnOnLEDC5(); break; default: break; } uart_putchar(inp(UDR)); } } Meine Main: int main(void) { PORTC = 0xff; DDRC = 0xff; outp((1<<RXCIE) | (1<<TXCIE) | (1<<RXEN) | (1<<TXEN), UCSRB); outp(CONTROLLER_BAUD_RATE, UBRR); uart_putchar('x'); sei(); for(;;) { turnOnLEDC5(); delay(1000000); turnOffLEDC5(); delay(1000000); } return 0; } Bin für jede Hilfe dankbar, Dennis