taylor22
05.11.2007, 21:41
habe folgendes programm geschrieben zur ausgabe einzelner zeichen per
USART!
das problem liegt nun darin, dass die zeichen nicht nur einmal
ausgegeben werden, sondern diese 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???? vielen dank für eure antworten! habe ATmega128!
#include <avr/io.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;
}
USART!
das problem liegt nun darin, dass die zeichen nicht nur einmal
ausgegeben werden, sondern diese 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???? vielen dank für eure antworten! habe ATmega128!
#include <avr/io.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;
}