RS232 mit AT90CAN128 Keine Verbindung
Hallo mal wieder,
ich habe folgendes Problem. Ich bekomme keine Verbindung zum Hyperterminal. Ich hab am Oszi den Tx und Rx Ausgang gemessen und bekomme an einem 0 V und an dem anderen ca. 9V dauernd raus. An den Tx und Rx Ausgängen des Controllers messe ich 5 V dauernd. Ich habe im Forum leider keinen Thread gefunden, der mein Problem lösen konnte.
Zur Hardware: Ich verwende einen AT90CAN128, bei dem ich auf die TX1 und Rx1 gehe (Tx0 und Rx0 ist vom ISP belegt!). Ich programmiere in C mit dem AVRSTudio. Meine Baudrate ist 9600 und ich verwende einen Quarzoszillaotr mit einer Frequenz von 7372800 Hz.
Ich habe die Init aus dem Datenblatt übernommen, werd aber nicht wirklich schlau daraus. Ich habe meinen Code des Headerfile mal angehängt.
Code:
#include <avr/io.h>
#include <util/delay.h>
/*### Senden per USART - RS232-Kommunikation ###*/
void USART1_Init (void)
{
/* Set baud rate */
UBRR1H = 0;
UBRR1L = 47;
/* Set frame format: 8data, no parity & 2 stop bits */
UCSR1C = (0<<UMSEL1) | (0<<UPM1) | (1<<USBS1) | (3<<UCSZ1);
/* Enable receiver and transmitter */
UCSR1B = (1<<RXEN1) | (1<<TXEN1);
}
void USART1_Transmit (unsigned char data)
{
while(!(UCSR1A & (1<<UDRE1)))
{
}
UDR1 = data;
}
void uart_puts(char *s)
{
while(*s)
{
USART1_Transmit(*s);
s++;
}
}
Wäre super wenn mir jemand helfen könnte, ich bin am verzweifeln. ](*,)
LG Anna
Liste der Anhänge anzeigen (Anzahl: 3)
Hy Jens,
ich hab dein Programm mal rübergespielt, (danke schonmal) . Es blinkt auch, schickt aber kein a sondern ein C (siehe Screenshot, einmal das Winows-Terminal, einmal das Hterm_terminal). Es kommt auch nicht regelmäßig. Was komisch ist, wenn icvh an dem /Tx, GND, RX)-Stecker rumspiele und ihn abziehe, wird immer was gesendet. Ich habe meine Fuses-Einstellungen auch mal gepostet. Ich hab den internen RC-Oscillator genommen, um sicher zuu gehen, dass es von der Baudrate stimmt. (Hab zwar den Quarz-Oszillator dazugebaut, aber ich benutze ihn nicht....)
Bis dann lG Anna