Forum: Mikrocontroller und Digitale Elektronik PIC empfängt keine Daten am UART


von Student (Gast)


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.

von Haarbürste (Gast)


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.

von Kübel (Gast)


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!

von Volker S. (vloki)


Lesenswert?

Ich rate auch noch mit:
Der Pin auf den RX gemappt wurde hat AUCH Analog-Input-Funktion und die 
ist nicht deaktiviert...

Der Codeschnipsel sieht ja aus, als ob er aus einem Minimal-Projekt zum 
testen stammt. Vielleicht einfach mal so: 
http://microchipdeveloper.com/mplabx:projects-package packen und posten?

von Student (Gast)


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.

von Volker S. (vloki)


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...

von Kübel (Gast)


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!

von Student (Gast)


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.

von Volker S. (vloki)


Lesenswert?

Student schrieb:
> Aber ich bin von "früher" gewohnt, dass es ANSELA, ANSELB usw. usf.
> gibt. Daher habe ich eine falsche Annahme gemacht.

"früher" habe ich auch noch viel öfter falsche Annahmen gemacht als 
heute.
(ganz vermeiden lässt es sich wohl nie ;-)

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.