Hallo, wer kennt den DoppelUART (siehe Betreff) und vielleicht auch seine Tücken? Wenn ich im IMR-Register nur eine Freigabe für den TxRDYA-Interrupt erteile, dann funktioniert der Senden-Interrupt. Wenn ich im IMR-Register nur eine Freigabe für den RxDY/FFULLA-Interrupt erteile, dann funktioniert der Empfangen-Interrupt. Beim Auslesen des Statusregisters ISR wird auch das entsprechende Flag gesetzt. Wenn ich beide Interrupts für den Empfang und das Senden freigebe, dann wird kein Empfangen-Interrupt mehr ausgelöst. Es funktioniert nur noch der Senden-Interrupt. Initialisierung: WriteByte(0, ADDR_DUART_MR1A, 0x13); // 8 data,no parity WriteByte(0, ADDR_DUART_MR2A, 0x07); // 1 stop WriteByte(0, ADDR_DUART_CSRA, 0xBB); // 9600 Baud fuer Transmitter+Receiver WriteByte(0, ADDR_DUART_ACR, 0x00); // choose set 1 for baud rates WriteByte(0, ADDR_DUART_CRA, 0x05); // switch receiver and transmitter on WriteByte(0, ADDR_DUART_IMR, 0x03); // Transmit+Receive Interrupt DUART A enable Handler: void DUART_TX_READY_INT() interrupt 0x19 { char status; status = ReadByte(0,ADDR_DUART_ISR); // Kommt der Interrupt vom Empfang? if (status & 0x02) { UART_A_RX_BYTE; LEDERR ^= 1; } if (status & 0x01) { if (bytecounter < TlgLen ) { UART_A_TX_BYTE(TransmitBuf[bytecounter++]); } else { TX_BUSY = 0; } } } Wer weiss Rat? Grüße Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.