PIC empfängt keine Daten am UART

Gast #5130162
Lesenswert?

Guten Tag Community,

ich sitze seit einigen Studen daran, zwei UART's am PIC18F46J50 zum 
laufen zu bringen.

Das Schreiben von Daten ist dabei kein Problem. Allerdings schaffe ich 
es nicht, Daten zu lesen.

UART2 geht über Ft232 an PC.
Der andere ist quasi frei.

Da ich problemlos Zeichen senden kann, kann die Takterzeugung nicht 
falsch konfiguriert sein.

Desweiteren ist CREN (Receive Enable) gesetzt.
Ich habe die Datenübertragung vom PC auf das Board mit dem Oszilloskop 
geprüft und die Verbindungen durchgeklingelt. Das kommt alles so an, wie 
es soll.

Zudem sind die Pin-Zuordnungen (PPS) auch durchgeführt worden und 
mittlerweile auch so 20mal kontrolliert.

Die innere While-Schleife bleibt hängen (RC2IF wird nie gesetzt).
1
while(1)
2
    {
3
        while(! (PIR3bits.RC2IF))
4
            ;        
5
        _putch(RCREG2, EUSART_2);  
6
    }

Ich halte es am wahrscheinlichsten, dass dies durch eine 
Fehlkonfiguration des PPS kommt. Aber das habe ich mittlerweile einige 
Male kontrolliert und kann es ausschließen.

Am einfachsten wäre es, wenn jemand einen funktionierenden Codeabschnitt 
hat. Dann kann ich vergleichen und den Fehler finden. Aber ich bin für 
weiterhelfende Ideen auch ziemlich dankbar.
Gast #5130165
Lesenswert?

Ich tippe auf einen falsch initialisierten rx Pin. Da steht im 
Datenblatt was im uart Kapitel wie er initialisiert werden muss, wenn 
ich mich recht entsinne. Das war glaube ich recht unintuitiv weil man 
den als Ausgang konfigurieren muss oder sowas. Ich bin da glaub auch 
drüber gestolpert.
Gast #5130204
Lesenswert?

Es gibt doch viele Beispiele im weiten Netz, z.B.:
https://coolcapengineer.wordpress.com/2012/12/26/tutorials-usart-communication-for-pic18-microcontroller/
http://extremeelectronics.co.in/microchip-pic-tutorials/rs232-communication-using-pic18f4520s-usart-pic-microcontroller-tutorial/

oder noch besser im Datenblatt Seite 327:
http://ww1.microchip.com/downloads/en/DeviceDoc/39931b.pdf
Wenn dieser Ablauf nicht funktioniert, dann ist höchstwahrscheinlich 
deine Pin-Konfiguration falsch oder beisst sich mit einer anderen 
Funktion auf dem 'vermeintlich' zugeteilten RxPin.
Aber das ist alles ein Ge-rate ohne Einblick in den Code!
Gast #5130296
Lesenswert?

Volker S. schrieb:
> Der Pin auf den RX gemappt wurde hat AUCH Analog-Input-Funktion und die
> ist nicht deaktiviert...

Richtig geraten. Jetzt läuft es.

Und dabei hatte ich die Idee auch. Allerdings habe ich dann das 
Datenblatt nach 'ANSEL' durchsucht und gar nichts gefunden. Wie nett, 
dass die die Registernamen gewechselt haben.
#5130334
Lesenswert?

Student schrieb:
> Wie nett,
> dass die die Registernamen gewechselt haben.

Kann ADCONx, ANCONx oder ANSELx heißen. Je nach Version des ADC Moduls. 
(ANSEL ist bei den moderneren üblich)

Am Ende jedes Kapitels im Datenblatt ist eine Zusammenfassung der 
Register, die für das Modul relevant sind.
-> Im Inhaltsverzeichnis auf das nächste Kapitel klicken und eine Seite 
zurück blättern...
Gast #5130505
Lesenswert?

Student schrieb:
> Richtig geraten.
> ...
> Wie nett,
> dass die die Registernamen gewechselt haben.

Guter Student, lass Die noch eines auf Deinen Lebensweg mitgeben:

Ein kleines Danke an Volker wäre angebrachter als eine Kritik an "die", 
welche ein ordentliches Datenblatt erstellt haben.

Dafür gabe es immerhin 3 Personen, die trotz minimalster Information von 
Dir Dich auf den richtigen Weg gelenkt haben.

Es kommt im Umfeld besser an, wenn man seine eigenen Fehler eingesteht, 
anstatt irgendeinen Schuldigen zu suchen. Wenn man dabei noch höflich 
ist, dann hat man das Umfeld auf seiner Seite.
Bis zum Berufsleben kannst Du noch ein wenig üben, denn da wirst Du es 
brauchen!
Gast #5130542
Lesenswert?

Da das Problem nun gelöst ist, möchte ich mich bei allen, die Ihre Ideen 
einbracht haben bedanken.

Und klar war das mein Fehler, das habe ich nie bestreiten wollen. Aber 
ich bin von "früher" gewohnt, dass es ANSELA, ANSELB usw. usf. gibt. 
Daher habe ich eine falsche Annahme gemacht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren