Hallo, brauche ja nicht viel zu schreiben, hier die Ausgabe des Terminalprogrammes: 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an 2.�1. LED an usw. usf. und hier der Code: /**************************************************************** Projekt: USART auf dem Testboard von www.Pollin.de Aufgabe: Changelog: 12 Mai 2006 Projektstart ****************************************************************/ #include <inttypes.h> #include <avr/io.h> #include <avr/interrupt.h> // USART //#ifndef F_CPU #define F_CPU 7372800UL //#endif #define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1L) #define UART_BAUD_RATE 9600UL volatile char x='t'; int uart_putc(unsigned char c) { while (!(UCSRA & (1<<UDRE))); /* warten bis Senden moeglich */ UDR = c; /* sende Zeichen */ return 0; } void uart_puts (char *s) { while (*s) { /* so lange *s != '\0' also ungleich dem "String-Endezeichen" */ uart_putc(*s); s++; } } /* //SIGNAL(SIG_UART_RECV) ISR(USART_RXC_vect) { PORTD &= ~(1<<PD5); x = UDR; if(x=='1') PORTD |= (1<<PD6); if(x=='2') PORTD &=~(1<<PD6); } */ int main( void ) { //Initialisierung WDTCR &= ~(1<<WDTOE); WDTCR |= (1<<WDE); UBRRH = (uint8_t)(UART_UBRR_CALC(UART_BAUD_RATE,F_CPU)>>8); UBRRL = (uint8_t)UART_UBRR_CALC(UART_BAUD_RATE,F_CPU); UCSRB |= (1<<TXEN)|(1<<RXEN)|(1<<RXCIE); // UART RX & TX einschalten // UCSRB |= (1<<TXEN)|(1<<RXEN); // UART RX & TX einschalten UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1 DDRD |= (1<<PD5)|(1<<PD6); PORTD |= (1<<PD5); uart_puts("1. LED an\n2. LED aus\n"); sei(); while(1) { asm volatile ("nop"); } uart_puts("restart"); return 0; /* NEVEREACHED */ }
> uart_puts("1. LED an\n2. LED aus\n");
ist m.E. kein Null-terminierter String, sofern der Compiler da nicht
irgend etwas hinten dran hängt. Somit liest uart_putc() fleißig im
Speicher weiter, bis es knallt...
Ciao Thomas.
> ist m.E. kein Null-terminierter String
Doch das sollte Null-Terminiert sein.
Aber wenn ich daß richtig sehe wird der Watchdog aktiviert und dann
nicht getriggert => Reset
so... habe nun ein \0 eingefügt und den watchdog rausgeschmissen. aber nun passiert sowas: 1. LED an 2. LED au.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L ��,KH� ����.�L � auch noch bissel komisch, oder?
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.