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
Hallo, Meiner Meinung ist die Initialisierung korrekt wenn dein interner Clock 4MHz hat. Falls du den Beispielcode für das "PIC24F Starter Kit" verwendest und #define USE_FRC auskommentiert ist verwendet der Controller gemäss Kommentar im Code den 12MHz Clock vom PIC18 das heisst interner Clock ist 6MHz und das U2BRG Register wäre falsch gesetzt. Korrekt wäre U2BRG = 38; Aber trotz diesem Fehler solltest du mit dem Oszilloskop etwas am Pin 11 (TX) sehen. (Pin 10 ist Vdd kann nicht TX sein). Kann deinen Code leider nicht testen weil ich mein Starter Kit nicht zur Hand habe. Viel Glück bei der Fehlersuche. Gruss Manuel
Hallo Manuel Vielen Dank für Deine Hilfe. Nun läuft mein Programm. Es waren noch diverse Bits im Main falsch gesetzt. Grüsse
Hi, Bin gerade beim selbe problem. Ich wollte mal wissen die UART Pin nummern bei PIC24FJ256GB106 im starter kit welche pins sind auf uart..? wie hast du die pins gelötet zum external peripherie ? kanst du mal ein bischien helfen ? vg densil
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.