Gast
#423020
Hallo,
hätte da mal ne Frage versuch gerade mittels Atmega8535 über
Hyperterminal ein ASCII-Zeichen auf den Controller zu schicken und diese
möchte ich wieder auf dem Hyperterminal ausgeben.
Hab leider keine Ahnung was falsch läuft.
Gruß Flo.
#define F_CPU 4000000L // Taktfequenz
#define BAUD 9600L // Baudrate
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <stdlib.h>
#include <util/delay.h>
#define MYUBRR ((F_CPU)/((BAUD)*16L)-1) // Uebergabewert
#define PORTC_OUT DDRC = 0xff;
void Portinit(void)
{
PORTC_OUT;
}
void UARTinit(void)
{
UBRRH=(unsigned char)(MYUBRR>>8);
UBRRL=(unsigned char) MYUBRR;
UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1
UCSRB |= (1<<TXEN)|(1<<RXEN); // UART TX und RX einschalten
}
void uart_putc(unsigned int c)
{
while (!(UCSRA & (1<<UDRE))); // warten bis Senden moeglich
UDR = c; // sende Zeichen
}
void Usart_Rx(void)
{
while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar
{
uart_putc(UDR); // Zeichen zurück senden
PORTC ^= 0xff; // PORTC toggeln
}
}
int main(void)
{
Portinit();
UARTinit();
while(1)
{
Usart_Rx();
}
return(0);
}