Gast
#850666
Hi Leute hab da ein kleines Problem mit meiner UART schaltung oder der
Software bin nicht sicher.
Und zwar hab ich einen Atmega8515.
Die Uart ausgabe von uC zum PC klappt allerding scheint es so als würde
der uC nichts vom PC empfangen.Die Leitungen sind soweit alle in Ordnung
(denke ich).
hier mein Programm:
#include <avr/io.h>
#include <stdio.h>
#include <inttypes.h>
#include <stdlib.h>
#include <eeprom.h>
// Berechnungen
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000) // Fehler in Promille
#define BAUD 9600L
uint8_t ein;
uint8_t Taster;
uint8_t myByte;
uint8_t uart_getc(void)
{
while (!(UCSRA & (1<<RXC))); // warten bis Zeichen verfuegbar
return UDR; // Zeichen aus UDR an Aufrufer
zurueckgeben
}
int uart_putc(unsigned char c)
{
while (!(UCSRA & (1<<UDRE)))
{
}
UDR = c;
return 0;
}
void uart_puts (char *s)
{
while (*s)
{
uart_putc(*s);
s++;
}
}
int main(void)
{
UCSRB |= (1<<TXEN); // UART TX einschalten
UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1
UCSRB |= (1<<RXEN); //UART RX einschalten
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
while(1)
{
ein=uart_getc();
uart_putc(ein);
}
}