Gast
#1867583
Guten Tag Nachdem ich nun am verzweifeln bin, warum mein UART Programm nicht läuft, wende ich mich an euch. Ich verwende das Starterkit 1 mit dem PIC24FJ256GB106. Dort habe ich Pin10 als TX und Pin11 als RX gewählt. Jedoch messe ich beim TX Output kein Signal, wenn ich etwas sende. Hier ist meine UART Initialisierung: #include "HardwareProfile.h" #include "UART.h" #include "p24FJ256GB106.h" #include "GenericTypeDefs.h" /*********************************************************************/ void UARTInit(void) { AD1PCFGL = 0xFFFE; TRISBbits.TRISB4 = 1; // PORTB bit 4 is input (1) TRISBbits.TRISB5 = 0; // PORTB bit 5 is output (0) #if defined(PIC24FJ256GB106) RPINR18bits.U2RXR = 28; // assign RP28 to RX RPOR9bits.RP18R = 5; // assign RP18 to TX #endif #if defined(__PIC32MX) U2BRG = GetPeripheralClock() 4 BAUDRATE - 1; #else U2BRG = 25; #endif U2MODE = 0x8800; U2STA = 0x0400; } /********************************************************************/ void UARTPutChar(BYTE ch) { // Wait for Tx buffer is not full while(U2STAbits.UTXBF == 1); U2TXREG = ch; } /********************************************************************/ Und hier ist der Teil in meinem MAIN wo ich definiere, dass der Wert 6D (Entspricht "m") ausgegeben werden soll. Der Zeitpunkt der Ausgabe wird per USB definiert, wenn 6D von dem USB empfangen wird, soll 6D über RS232 weitergegeben werden. case 0x6D: UARTPutByte(0x6D); break; Wichtig ist sicher, dass meine UART-Initialisierung stimmt. Dabei will ich eine Boudrate von 9600 und es soll der Interne Clock zum bilden verwendet werden. Muss ich dafür etwas spezielles Setzen? Oder habe ich sonst einen Fehler? Ich freue mich auf eure Antworten. Grüsse