Gast
#2163513
hallo, ich versuche über usart meinem pc einfach ein zeichen zu senden.
ich mache das mit dem stk500 (atmega8515) und über einen usb->rs232
adapter.
doch nichts passiert (ich benutze hterm) ;(
kabel von rxd /txd sind verlegt, baudraten sind beiderseits gleich
eingestellt (9600 asynchron 8N1)..
hier der code:
[c]
#define F_CPU 1000000UL
#define BAUD 9600
#include <avr/io.h>
#include <inttypes.h>
#include <avr/interrupt.h>
#include <util/setbaud.h>
#include <util/delay.h>
void init_USART ()
{
UCSRB |= (1<<RXEN) | (1<<TXEN); //send und recieve anschalten
UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //Asynchron 8N1
UBRRH |= UBRRH_VALUE; //Baudrate durch "setbaud.h" bestimmen
UBRRL |= UBRRL_VALUE;
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
unsigned char USART_Receive( void )
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR;
}
void USART_Flush( void )
{
unsigned char dummy;
while ( UCSRA & (1<<RXC) ) dummy = UDR;
}
int main ()
{
init_USART();
USART_Flush();
unsigned char test = 'a';
while (1)
{
USART_Transmit (test);
_delay_ms(1000);
}
return 0;
}
[c]
danke für jede hilfe