Hi,
Hier Codes für den Mega32 UART:
hier drei Funktionen (uart.c):
Code:
void UART_init(void){
UBRRL |= (uint8_t) UART_BAUD_SELECT;
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
void UART_transmit(uint8_t c){
while(!(UCSRA & (1<<UDRE)));
UDR = c;
}
void UART_transmit_string(uint8_t *string){
while(!(UCSRA & (1<<UDRE)));
while( *string){ UART_transmit (*string++); }
}
UART_init(); Den UART Einschalten, hier wird auch der Empfangsinterrupt aktiviert. Dein Hauptprogramm muss dann so aussehen:
Code:
// AVR-Includes
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
// Programm-Includes
#include <uart.c> // Oder die obigen Funktionen hinschreiben...
SIGNAL( SIG_UART_RECV ) { /*hier was beim Enpfang geschehen soll*/ }
int main (void){
sei(); // Interrups global aktivieren
UART_init(); // UART init funktion ausführen
while(1){
/*HAUPTSCHLEIFE*/
}
}
Lesezeichen