www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24 UART Initialisierung


Autor: Thomas O. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Ich versuche jetzt schon einige Zeit lang, den UART2 meines 
PIC24FJ128GA010 zum Laufen zu bringen, aber es kommt nichts vernünftiges 
an am PC.

Hab mal den Code dazu gepostet.

Vielleicht kann mir da jemand einen Tipp geben...wäre echt Klasse.

Gruß Thomas

Autor: Thomas O. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier der Header dazu.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat da keiner Ahnung davon??

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber es kommt nichts vernünftiges an am PC.
sondern?

Hast Du das PPS korrekt eingestellt?
Was für ein PIC24 ist das?

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für deine Antwort.
Es ist ein PIC24FJ128GA010. Es kommt am Terminal nur <0> an, als wäre 
die Baudrate falsch.

Das PPS brauch ich nur, wenn ich einen PIC habe, wo ich die Pins frei 
zuweisen kann oder?

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir da noch immer keiner weiter helfen???
Wäre echt wichtig.

Autor: harry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bin auch gerade am testen eines pic24f projects
uart soll diese woche noch laufen!

aber ich hab probleme mit meinem header board

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das PPS brauch ich nur, wenn ich einen PIC habe, wo ich die Pins frei
> zuweisen kann oder?
Stimmt, bei Deinem PIC entfällt das.

> Es kommt am Terminal nur <0> an, als wäre
> die Baudrate falsch.
USART-Config sieht ganz brauchbar aus. Aber da ich das Hauptprogramm 
nicht kenne ist nicht auszuschließen, dass noch ein dicker Hund in der 
Clock-Config sitzt. Sicher, dass der PIC mit der Frequenz tickt, mit der 
Du denkst, dass er tickt?

Du könntest auch mal den Wert für den Baudratenregister von Hand 
ausrechnen und einsetzen. Sicher, dass die Terminaleinstellungen zu den 
Einstellungen des PIC passen?

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
@harry:
> aber ich hab probleme mit meinem header board
Das tut mir Leid.

> uart soll diese woche noch laufen!
Viel Glück!

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also im Main hab ich lediglich den Aufruf von UART_Init(BR_9600) und 
wenn ich dann zB. einen Char, zB 'a' mit UART_PutChar('a') senden will, 
dann kommt am Terminal nur "<0>" an. Hab aber sicher die Baud auf 9600, 
8bits, 1 stopbit, keine parität,... gestellt. Hatte auch mal probiert, 
einen char direkt in das Senderegister der UART zu stellen...selbes 
Ergebnis.

ich verwende das Explorer 16 Boad von Microchip in Verbindung mit dem 
PICTail Plus Daughter Board 2 (Touchscreen). Und im Schaltplan ist auch 
ein 8MHz Quarz eingezeichnet.

Kann der Systemclock trotzdem noch anders sein dann?

Habe das ICD 2, aber mit dem sehe ich leider nicht die Werte der 
Register, wenn ich debugge. Hatte den Wert auch schon mal ausgerechnet 
und eingesetzt->selbes Ergebnis. War glaub ich für eine Baud von 9600 
51.

Danke!

Autor: MichiB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die Initialisierung so umgesetzt:
RPINR18bits.U1RXR = 9;  // Make Pin RP9 U1RX
RPOR4bits.RP8R = 3;    // Make Pin RP8 U1TX

U1BRG  = BRGVAL;
U1MODE = 0x8000;     // Reset UART to 8-n-1, alt pins, and enable 
U1STA  = 0x0440;     // Reset status register and enable TX & RX
  
IEC0bits.U1RXIE = 1;  // Receive interrupt enable

_U1RXIF=0;        // Clear UART RX Interrupt Flag


/***** Defines *****/
#define XTFREQ          7372800             //On-board Crystal frequency
#define PLLMODE         1                   //On-chip PLL setting
#define FCY             XTFREQ*PLLMODE          //Instruction Cycle Frequency

#define BAUDRATE         9600       
#define BRGVAL          ((FCY/2/BAUDRATE)/16)-1 
/*******************/

Autor: MichiB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist allerdings für die UART1 !!!

Autor: MichiB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehler gefunden:

#define BRGVAL          ((FCY/2/BAUDRATE)/16)-1


UBRRVAL = (F_CPU/(9600L*16L)-1);

Da muss bei dir noch ein /2 rein !

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Fehler gefunden:
> Da muss bei dir noch ein /2 rein !

Hmm, möglich. Aber wir wissen immer noch nicht, mit welcher Frequenz die 
System Clock arbeitet.

Wie sehen Deine Config-Words aus?
Schau mal im Kapitel 7 vom Datasheet. Dort siehst Du, dass ein 8 MHz 
Quarz noch laaaange nicht bedeutet, dass der PIC dann auch mit 8 MHz 
arbeitet.
Ist die PLL aktiviert?
Ist der Postscaler != 1:1?
Verwendest Du überhaupt den externen OSC???

Autor: Steff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte auch USART-Probleme bei mir war es folgendes:

Pic hält externen Osci_Extern für 48MHz und nicht für 20MHz -> PLL 
richtig einstellen

Am besten nimm dir nen Osziloskop und schau nach :) hat bei mir wunder 
bewirkt

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ich hab mir das Programm nochmals genau angesehen(basiert ja auf 
einen Musterprogramm von Microchip, wo die ganze Grafik Library schon 
eingebunden ist) und da hab ich folgendes define:
#define  GetSystemClock()            (32000000ul)         // 8 MHz x 4 
PLL
#define  GetPeripheralClock()    (GetSystemClock()/2)
#define  GetInstructionClock()    (GetSystemClock()/2)

also läuft der µC doch mit mehr Takt intern....jedoch, auch wenn ich bei 
meinem UART.h die Taktfrequenz auf 16MHz stelle, weil es ja der halbe 
Systemtakt ist, kommt das selbe an.

Autor: Zwirbeljupp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> also läuft der µC doch mit mehr Takt intern
War zu erwarten.

> Wie sehen Deine Config-Words aus?
Ich frage das nicht noch einmal.
Da beim Hyperterminal ja bereits etwas ankommt, liegt es mit höchster 
Wahrscheinlichkeit an einer falschen Takteinstellung. Wenn Du Dich aber 
nicht zu den Config-Words äußerst, können wir uns hier gerne noch ein 
paar Tage im Kreis drehen.

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meinst du diese hier? für die PLL

_CONFIG2(FNOSC_PRIPLL & POSCMOD_XT) // Primary XT OSC with PLL
_CONFIG1(JTAGEN_OFF & FWDTEN_OFF)   // JTAG off, watchdog timer off

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.