TXC-Flag macht Porbleme bei ATmega162

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!!
Gast #49171
Hallo, ich nochmal,

es hat sich erledigt.

Ich hatte in meinem Code:

UCSR1B = (1<<UCSZ12);

statt

UCSR1B |= (1<<UCSZ12);

und damit habe ich die UART immer deaktiviert.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.