Serielle Ausgabe (UART) in C geschrieben
*********************************************************************************
*********************************************************************************
// Geschwindigkeit der CPU (16MHz)
#define F_CPU 16000000UL
// Baudrate (19200 Baud)
#define BAUD 19200UL
// Baudratenberechnung
#define UBRR_VAL ((F_CPU+BAUD*8) / (BAUD*16)-1)
#include <avr/io.h>
#include <util/delay.h>
// UART-Init ATmega328P
void uart_init(void)
{
// Baudrate einstellen
UBRR0H = (unsigned char)(UBRR_VAL>>8);
UBRR0L = (unsigned char)UBRR_VAL;
// Receiver und Transmitter einschalten
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
// Frame Format: Asynchron 8N1
UCSR0C = (1<<UCSZ01)|(1<<UCSZ00);
}
// Charakter schreiben
void uart_putChar(unsigned char c)
{
// Warten bis Sendepuffer leer ist
while (!(UCSR0A & (1<<UDRE0)));
// Daten in den Puffer schreiben und senden
UDR0 = c;
}
// String senden
void uart_putStr(unsigned char *s)
{
while (*s)
{
// so lange *s != '\0' also ungleich dem "String-Endezeichen(Terminator)"
uart_putChar(*s);
s++;
}
}
*********************************************************************************
*********************************************************************************
Keine Kommentare:
Kommentar veröffentlichen