Servus miteinander,
ich habe ein Problem mit meinem UART beim AtMega168.
Das hier ist meine Init-Routine:
Die MCU läuft mit einem externen Crystal mit 18,xxxx MHz. Der ist auch im Betrieb über die Fuse-Bits.
Das hier ist meine Senderoutine:
Und das hier ist die ISR:
Main-Rotine:
Das Problem:
Ich kann nichts senden, bzw. ich sehe nichts im HyperTerminal.
Wenn ich aber irgendwas an die MCU sende, löst die ISR sauber aus und die LED, die angeschlossen ist, geht auch an.
Ideen woran es liegen könnte?
Danke & Grüsse
Heinrich
ich habe ein Problem mit meinem UART beim AtMega168.
Das hier ist meine Init-Routine:
Code:
void uart_init (unsigned int BaudRate) {
int ubrr = (F_CPU/16/BaudRate - 1);
UBRR0H = (unsigned char)(ubrr >> 8);
UBRR0L = (unsigned char)ubrr;
UCSR0B =( 1 << RXCIE0 )|( 1 << RXEN0 )|( 1 << TXEN0 );
UCSR0C = (1<<USBS0)|(3<<UCSZ00);
}
Das hier ist meine Senderoutine:
Code:
void sendUart(char* cmd)
{
do
{
while (!(UCSR0A & (1<<UDRE0))) {} // Warten bis mansenden kann
UDR0 = *cmd++; // senden und zumnächsten zeichen wechseln
}
while(*cmd); // so lange bis dasende erreicht ist
}
Code:
ISR(USART_RX_vect) {
PORTC |=(1 << PC1); // Ausgang 1 aktivieren
}
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include "uart.h"
#include "mcu_init.h"
int main (void) {
uart_init(9600);
set_ports();
sei();
sendUart("Programm gestartet\n");
while (1) {
}
return 0;
}
Ich kann nichts senden, bzw. ich sehe nichts im HyperTerminal.
Wenn ich aber irgendwas an die MCU sende, löst die ISR sauber aus und die LED, die angeschlossen ist, geht auch an.
Ideen woran es liegen könnte?
Danke & Grüsse
Heinrich