PIC18F258 sendet kein Parity Bit
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  Schnittstellen (Allgemein)  |  PIC18F258 sendet kein Parity Bit « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: PIC18F258 sendet kein Parity Bit  (Gelesen 2709 mal)
 
Manuel W.
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« am: Februar 23, 2009, 16:04:10 »

Hi,
ich versuche, eine Kommunikation zwischen Pic und PC mit der USART aufzubauen. Die Kommunikation an sich funktioniert auch, allerdings will mein PIC kein Parity Bit senden, es werden nur die 8 Bit Daten, Start und Stopp Bit gesendet. Das empfangene Parity Bit kann ich ich auch auswerten. Im TXSTA ist TX9 = 1 und in TX9D steht das richtige Bit. Ich such schon den ganzen Tag nach diesem Fehler, finde ihn aber einfach nicht. Die USART ist mit der OpenUSART(... &USART_NINE_BIT&...) initialisiert. Könnt ihr mir helfen?
Gespeichert
stolik_a
Gast
« Antworten #1 am: Februar 23, 2009, 17:03:42 »

Vielleicht liegt es daran, dass der USART von PIC Hardwaremassig kein PARITY unterstützt und Du den Parity selbst berechnen und als 9-ten bit senden muss?
Gespeichert
Manuel W.
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #2 am: Februar 25, 2009, 07:07:27 »

Nein, so einfach ist es leider nicht. Ich habe mal einen Screenshort angehängt. Parity wird in einer Extra ASM Funktion berechnet. TX9  ist 1, TX9D richtig berechnet und auch da. Auf dem Oszilloskop fehlt das Bit aber.


* USART_Debug.JPG (97.06 KB, 879x400 - angeschaut 218 Mal.)
« Letzte Änderung: Februar 25, 2009, 07:10:55 von Manuel W. » Gespeichert
idata
Gast
« Antworten #3 am: Februar 25, 2009, 22:47:26 »

Probier mal als erstes bajt den TXSAT über TXREG zu senden und  schau ob der TX9 steht.
Gespeichert
idata
Gast
« Antworten #4 am: Februar 26, 2009, 15:35:35 »

vielleicht so:
Code:
TXSTAbits.TXEN = 0;
TXSTAbits.TX9 = 1;
TXSTAbits.TX9D = ...;
TXREG = data;
TXSTAbits.TXEN = 1;
oder so:
Code:
TXSTAbits.TXEN = 0;
TXSTAbits.TX9 = 1;
TXSTAbits.TXEN = 1;
TXSTAbits.TX9D = ...;
TXREG = data;
Gespeichert
Manuel W.
Newbie
*
Offline Offline

Beiträge: 3


Profil anzeigen
« Antworten #5 am: März 04, 2009, 16:23:20 »

Danke für die Tipps. Heute konnte ich mal an dem Problem weiterarbeiten, ich habe es mit den genannten Codevorschlägen versucht, TXSTA nochmal geprüft und den µC getauscht, das Problem besteht weiterhin. Gibt es eine Möglichkeit, dass ein anderes Register die UART beeinflusst?

Gespeichert
CCP1CON
Newbie
*
Offline Offline

Beiträge: 25



Profil anzeigen
« Antworten #6 am: März 08, 2009, 17:05:13 »

Hallo Manuel,

das ist nur so ne Idee:

Wie sieht denn dein RCSTA register aus?
Ich könnte mir vorstellen, dass das ADDEN bit da irgend einen Einfluss hat.
Allerdings ist das nach Reset 0 es sei denn, du schreibst es explizit.

Gruß Carsten
Gespeichert
janko.j
Newbie
*
Offline Offline

Beiträge: 4


Profil anzeigen
« Antworten #7 am: März 09, 2009, 00:46:32 »

Falls du den TXSAT über TXREG als erstes Befehl nach der Einstellung ausgibst und alle von dir eingestellten Bits so sind wie Du die davor eingestellt hast ,dann ist es unwahrscheinlich,dass ein anderes Programmteil die Register beeinflusse. Eventuell ein  Interrupt, aber dann müsste es an extrem ungünstigen Moment auslösen.   
janko
Gespeichert
astrid
Gast
« Antworten #8 am: Januar 04, 2011, 13:55:45 »

hallo manuel!

ich bin neugierig: wie hast du dein problem lösen können? (ich suche schon seit ein paar stunden am selben problem herum)

lg
astrid
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.041 Sekunden mit 19 Zugriffen.
 
Top! Top!