Gast
#49170
Hallo!
Seit 2 Tagen suche ich schon nach dem Fehler und ich komme nicht mehr
weiter, hoffentlich kann mir jemand von euch helfen:
Ich habe ein kleines RS485-Netzwerk mit 4 ATmega8 mit einem Master. Das
Netzwerk funktioniert im Mutli-processor Mode. Bisher haben meine
Programme sehr gut funktioniert. Ich musste aber den Master wechseln
und habe nun einen ATmega162 mit 2 UART.
Dieser macht mir jetzt auch Probleme beim Senden über die UART:
SETBIT (UCSR1A, MPCM1); /* Multiprocessor Communication Mode
aktivieren */
SETBIT (UMSCHALTPORT, UMSCHALTP); /* Treiber wird auf Senden gestellt
*/
SETBIT (UCSR1B, TXB81); /* Adress-Daten werden gesendet */
bTemp = bSlaveAdresse; /* 1. Sende-Byte : Highteil ist Adresse */
bTemp |= (SENDEPROZESSABBILD); /* 1. Sende-Byte : Lowteil ist Befehl
*/
SETBIT (UCSR1A, TXC1); /* TXC-Flag wird gelöscht */
UDR1 = bTemp; /* 1. Sende-Byte wird versendet */
while (!CHECKBIT(UCSR1A, TXC1));/* warte, bis Daten gesendet */
Das TXC-Flag wird anscheinend nicht gesetzt, damit bleibt mein µC in
dieser while-Schleife.
Ich habe auch schon die andere UART benutzt, auch ohne Erfolg.
Hier noch meine UART-Initialisierung:
UBRR1H = (unsigned char) (UART_BAUD_SELECT>>8); /* Baud-Rate einstellen
*/
UBRR1L = (unsigned char) (UART_BAUD_SELECT);
UCSR1B = (1 << RXEN1) | (1 << TXEN1); /* UART sendet/empfängt */
UCSR1C = (1<<URSEL1)| (2<<UPM10) | (1<<USBS1) | (3<<UCSZ10);
UCSR1B |= (1<<UCSZ12);
/* Daten Format: 9 Bit Daten
1 Bit Parity-Bit Even
Parity
2 Bit Stopp-Bit */
UCSR1A |= (1 << MPCM1); /* Multiprocessor Communication Mode aktivieren
*/
Ich bin für jeden Hinweis dankbar!!