Forum: Mikrocontroller und Digitale Elektronik PIC24FJ256GB106 UART läuft nicht, bitte um Hilfe?


von Lyric (Gast)


Lesenswert?

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

von Manuel (Gast)


Lesenswert?

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

von Lyric (Gast)


Lesenswert?

Hallo Manuel

Vielen Dank für Deine Hilfe. Nun läuft mein Programm. Es waren noch 
diverse Bits im Main falsch gesetzt.

Grüsse

von Densil (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.