Kann mir jemand kurz ein Anfänger-Hilfe für den PIC32MX geben? Ich habe UART1 des PIC32MX am Laufen und möchte jetzt auch UART2 benutzen. UART1 war einfach: OpenUART1 und diverse WriteUART1 UART2 ist (soweit ich gesehen habe fest) mit RF12 und RF13 verschaltet. Also selbiges für UART2: OpenUART2 und diverse WriteUART2 Aber es kommt nichts am TX raus. Ich vermute, dass der Mode auf GPIO steht und erst auf Mode UART umgestellt werden muss. Bei UART1 war dies scheinbar automatisch bereits richtig (Default-Einstellungen?). // Initialize RF12 and RF13 mPORTFSetBits(BIT_12); mPORTFSetBits(BIT_13); mPORTFSetPinsDigitalOut(BIT_12); mPORTFSetPinsDigitalOut(BIT_13); OpenUART2(UART_EN, UART_RX_ENABLE | UART_TX_ENABLE, (GetPeripheralClock()/16/9600)-1); while(1) { unsigned long w; mPORTFSetBits(BIT_12); mPORTFClearBits(BIT_13); for(w = 0; w < 1000000; w++); mPORTFSetBits(BIT_13); mPORTFClearBits(BIT_12); for(w = 0; w < 1000000; w++); } Durch diesen Code blinken die Ausgänge, also werden beide als GPIO (und Ausgang) und nicht als UART RX/TX benutzt. Gibt es da ein plib-Makro oder plib-Funktion? Oder welches Register müsste ich mit welchem Wert füllen?
Ok, gelöst. RF12/RF13 ist nicht UART2, sondern UART5. Er wird in der Software als UART2B angesprochen. OpenUARTx gibt es nur für UART1 und UART2, nicht für UART2B, muss man also entweder auf Register-Basis ansprechen oder z.B. via UARTConfigure(UART2B, UART_ENABLE_PINS_TX_RX_ONLY); UARTSetLineControl(UART2B, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1); UARTSetDataRate(UART2B, GetPeripheralClock(), 9600); UARTEnable(UART2B, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX)); UARTSendDataByte(UART2B, 'A');
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.