Wenn ich denn Simulator 4.12 von AVR Studio 4.12 verwenden bleibt der Simulator bei -------------------- void uart_putc(unsigned char c) { while (!(UCSRA & (1<<UDRE))) //warten bis senden möglich ist { } UDR = c; //Ausgabe des Zeichens über UDR } hängen???? ---------------- void uart_init() { // UART Transmitter anschalten // Data mode 8N1, asynchron 4800 1MHZ UBRRH = 0; // Highbyte ist 0 UBRRL = 207; // Lowbyte ist 12 ( dezimal ) UCSRB = (1 << TXEN)|( 1 << RXEN ); // UART TX RX einschalten UCSRC =(1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); } void uart_putc(unsigned char c) { while (!(UCSRA & (1<<UDRE))) //warten bis senden möglich ist { } UDR = c; //Ausgabe des Zeichens über UDR } unsigned char uart_receiver(void) { while (!(UCSRA & (1<<RXC))); /* Wait for incomming data */ return UDR; } void uart_puts (char *s) { //schleife wird so lange ausgeführt bis kein Zeichen mehr kommt while (*s) { uart_putc(*s); s++; } } int main(void) { DDRC = 0x00; uart_init(); for(;;) { if(!(PINC & 0x01)) { uart_putc(0x01); //while((PINC&0x01)); } else if(!(PINC & 0x02)) { // time(); uart_putc(0x02); //_delay_ms(100); // while((PINC&0x02)); } else if(!(PINC & 0x04)) { // time(); uart_putc(0x04); //_delay_ms(100); // while((PINC&0x02)); } } wo liegt der Fehler begraben???
Tja, offensichtlich ist die Bedungung nicht erfuellt. Am Besetn nimmst du einen freien Pin und clockst die verschiedenen Werte seriell raus. Dann dort mit dem Scope schauen was kommt.
> Dann dort mit dem Scope schauen was kommt. Das geht im Simulator ziemlich schlecht... @Mathias: Welchen µC simulierst Du denn? Bei einigen AVRs gibts im Simulator bekannte Probleme beim Schreiben der Register UBRRH und UCSRC (z.B. beim ATMega16/32).
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.