USART Problem (Schlaufe)

Gast #693597
Lesenswert?

habe folgendes programm geschrieben zur ausgabe einzelner zeichen per 
USART!
das problem liegt nun darin, dass die zeichen nicht nur einmal 
ausgegebne werden, sondern werden immer wiederholt! ????
das ganze sieht dann so "123ABC123ABC123ABC...." keine Ahnung weshalb 
die zeichen immer wiederholt werden, sollten ja nur einmal eigentlich 
ausgegeben werden, oder???? vieln dank für eure antworten!

#include <avr/io.h>
#include <avr/interrupt.h>

#define FOSC 14745600// Clock Speed
#define BAUD 2400
#define MYUBRR FOSC/16/BAUD-1

void USART_Init(unsigned int ubrr);
void USART_Transmit(unsigned char data);
unsigned char USART_Receive(void);

int main(void){
USART_Init(MYUBRR);
USART_Transmit('1');
USART_Transmit('2');
USART_Transmit('3');
USART_Transmit('A');
USART_Transmit('B');
USART_Transmit('C');
while(1);
return 0;
}

void USART_Init( unsigned int ubrr )
{
/* Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* Enable transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 1stop bit */
UCSR0C = (3<<UCSZ0);
}

void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) );
/* Put data into buffer, sends the data */
UDR0 = data;
}

unsigned char USART_Receive(void)
{
/* Wait for data to be received */
while ( !( UCSR0A & (1<<RXC0)) );
/* Put data into buffer, sends the data */
return UDR0;
}
#693671
Lesenswert?

@ Thomas (Gast)

>das problem liegt nun darin, dass die zeichen nicht nur einmal
>ausgegebne werden, sondern werden immer wiederholt! ????
>das ganze sieht dann so "123ABC123ABC123ABC...." keine Ahnung weshalb
>die zeichen immer wiederholt werden, sollten ja nur einmal eigentlich
>ausgegeben werden, oder???? vieln dank für eure antworten!

Der Watchdog bellt. Versuch mal das als erste Zeile im Programm.
1
 // Stop watchdog timer to prevent time out reset
2
  WDTCTL = WDTPW + WDTHOLD;

MFG
Falk
#694393
Lesenswert?

@ Thomas (Gast)

>also das heisst dann, dass alle normal läuft und plötzlich aus
>irgendeinem grund ein reset passiert?

Nicht aus "irgendweinem" Grund. Der Watchdog ist nach dem Anlegend er 
Betriebsspannung (POR, Power On Reset) aktiv. Wenn er nach ein paar 
hundert Milliselkunden einen Reset auslöst, ist er immer noch aktiv.

> und nach dem reset ist der
>watchdog aktiv und resetet mein uC weiter?

Genau.

MFG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren