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???
Gast
#531978
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.
Gast
#532083
> 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).
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.