//---------------------------------------------------------
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <util/delay.h>
//---------------------------------------------------------
#ifndef F_CPU
#error "F_CPU is not defined"
#endif
//---------------------------------------------------------
#define BAUD 38400
#include <util/setbaud.h>
#include <CLED.h>
//---------------------------------------------------------
CLED *tmpLED;
void uart_init(void)
{
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
/* evtl. verkuerzt falls Register aufeinanderfolgen (vgl. Datenblatt)
UBRR = UBRR_VALUE;
*/
#if USE_2X
/* U2X-Modus erforderlich */
UCSRA |= (1 << U2X);
#else
/* U2X-Modus nicht erforderlich */
UCSRA &= ~(1 << U2X);
#endif
// hier weitere Initialisierungen (TX und/oder RX aktivieren, Modus setzen
UCSRB |= (1<<TXEN); //
UART TX einschalten
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Asynchron 8N1
}
//---------------------------------------------------------
int uart_putc( unsigned char c )
{
tmpLED->On();
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = c; /* sende Zeichen */
tmpLED->Off();
return 0;
}
//---------------------------------------------------------
void uart_puts( char *s )
{
while( *s )
{ /* so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)" */
uart_putc(*s);
s++;
}
}
//---------------------------------------------------------
int main( void )
{
tmpLED = new CLED( ERegC, 3, false );
tmpLED->Off();
uart_init();
tmpLED->Off();
while (1)
{
uart_puts( "hallo" );
_delay_ms( 4000 );
tmpLED->On();
_delay_ms( 1000 );
tmpLED->Off();
}
return 0;
}
//---------------------------------------------------------
Lesezeichen