Hallo,
ich habe folgendes Problem:
Ich arbeite mit einem PIC24FJ256GA106 und möchte mit dem UART1 etwas
einlesen und das eingelesene auf dem UART2 wieder ausgeben. Das Einlesen
mit UART1 funktioniert, auch das ausgeben mit dem UART2 funktioniert.
Wenn ich beide UART's gleichzeitig nutzen möchte, funktioniert nur der
UART der zuerst Initialisiert wurde. Dabei ist es egal welchen man
zuerst initialisiert.
Mein Code zum Initialisieren der UART1:
1 | // Data Bits = 8; Parity = None; Stop Bits = 1;
|
2 | U1MODE = (0x8008 & ~(1<<15)); // disabling UARTEN bit
|
3 | // UTXISEL0 TX_ONE_CHAR; UTXINV disabled; OERR NO_ERROR_cleared; URXISEL RX_ONE_CHAR; UTXBRK COMPLETED; UTXEN disabled; ADDEN disabled;
|
4 | U1STA = 0x00;
|
5 | // BaudRate = 115200; Frequency = 16000000 Hz; BRG 34;
|
6 | U1BRG = 0x22;
|
7 |
|
8 | PPS_DISABLE_IOLOCK;
|
9 | {
|
10 | RPINR18bits.U1RXR = 16; /* Assign UART1 Receive (U1RX) to RP16 pin */
|
11 | RPOR15bits.RP30R = 3; /* RP30 is tied to default port pin */
|
12 | }
|
13 | PPS_ENABLE_IOLOCK;
|
14 |
|
15 | UART1_Enable(); // enabling UARTEN bit
|
Mein Code zum Initialisieren der UART2:
1 | // Data Bits = 8; Parity = None; Stop Bits = 1;
|
2 | U2MODE = (0x8008 & ~(1<<15)); // disabling UARTEN bit
|
3 | // UTXISEL0 TX_ONE_CHAR; UTXINV disabled; OERR NO_ERROR_cleared; URXISEL RX_ONE_CHAR; UTXBRK COMPLETED; UTXEN disabled; ADDEN disabled;
|
4 | U2STA = 0x00;
|
5 | // BaudRate = 19200; Frequency = 16000000 Hz; BRG 207;
|
6 | U2BRG = 0xCF;
|
7 |
|
8 | /* Continue module operation in IDLE mode */
|
9 | UART2_USIDL = false;
|
10 |
|
11 | PPS_DISABLE_IOLOCK;
|
12 | {
|
13 | PRB_RX_PPS = 4; /* Assign UART2 Receive (U2RX) to RP4 pin*/
|
14 | PRB_TX_PPS = 5; /* RP2 tied to UART2 Transmit */
|
15 | }
|
16 | PPS_ENABLE_IOLOCK;
|
17 |
|
18 | UART2_Enable(); // enabling UARTEN bit
|
Hatte jemand auch schon mal dieses Problem?