www.mikrocontroller.net

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


Autor: Lyric (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lyric (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Densil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.