Hallo,
bin ein µC - Neuling, möchte ASCII zeichen an ein Terminalprogramm am PC
mit Hilfe der UART schicken. Wäre Hilfreich, wenn jemand ein kurzes
Beispiel, wenn möglich in C bringen könnte. Habe schoin verschiedenste
Beispiele ausprobiert, doch ohne Erfolg. Das letzte Beispiel war
folgendes:
______________________________________________________________________
#include <avr/io.h>
#include <avr/interrupt.h>
#define FOSC 1843200// Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
const int baud = 51; //wegen 8MhZ Clock
const char* data = "Hallo\0"; //Char-Pointer
int main() {
//test
DDRC = 0x01; --Kontrollregister
//PORTC = 0xFF;
USART_Init (baud);
while(1) {
USART_Transmit(data);
}
//USART_receive();
sei(); //... die Interrupts abfangen
}
void USART_Init(int baud) {
/* Set baud rate */
UBRRL = (char)baud;
/* Enable transmitter */
UCSRB = (1<<TXEN);
UCSRB = (1<<UDRIE); //KO: entweder UDRIE oder TXIE
/* Set frame format: asynchron, 1 stop - bit, 8 data - bit */
UCSRC = (0<<URSEL)|(0<<USBS)|(2<<UCSZ0); //KO: Frameformat im Prinzip
egal, muss aber mit Gegenseite übereinstimmen
}
// transmit
void USART_Transmit(const char* data ) {
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) );
/* Put data into buffer, sends the data */
UDR = data[0];
}
// C:\WinAVR-20100110\avr\include\avr\iom64.h
ISR(USART0_TX_vect) {
}
// receive
void USART_receive() {
//init receive
UCSRB = (1<<RXEN);
//wait for unread data in the register
while(!(UCSRA & (1<<RXC)));
return UDR;
}
__________________________________________________________________
Komme nicht weiter, wäre echt super, wenn mir jemand helfen könnte,
danke.
MfG Vali1991