TXC-Flag macht Porbleme bei ATmega162

Gast #49170
Lesenswert?
• ▲
▼
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!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren