PIC verschluckt Zeichen

Gast #35238
Lesenswert?
• ▲
▼
Hallo zusammen...

ich arbeite zur zeit mit dem PIC16F877, für diesen habe wurde das 
beigelegt Programm geschrieben.
Das Programm entfängt Zeichen von der seriellen Schnittstelle
und sendet diese auch gleich wieder zurück. Weiter schreibt er die 
Zeichen auch noch auf einen Ausgang.

Mein Probem ist nun wenn ich einen "Lehrzeichen" und dann ein "w" 
senden, kommt nur das "Lehrzeichen" und dann ein 00H zurück.
Wenn aber nun "ww" gesendet wird bekomme ich nur "w" zurück.
Der Efekt ist auch noch bei ein paar anderen Zeichen vorhanden.
Allerdings werden die Daten richtig auf dem Ausgang geschrieben.

Meiner Meinung nach kann es an dem Programm nicht liegen(habe eine ganze 
Menge Simulationen laufen lassen.
Der verwendete MAX232 ist scheint auch i.O. zusein, habe ihn mal die 
gesendeten Daten gleich wider zurück schicken lasse.

Hat einer von Euch mal derartiege Probeme gehabt?

MfG Tom
Angehängte Dateien:
Gast #35239
Lesenswert?
• ▲
▼
Hallo Tom,

Erster Fehler in der ISR, Du lädst das Statusreg. mit movf zurück, was 
das Z-Flag verändert. Das sollte aber nicht das Problem sein. (oder 
vielleicht doch)

PIE1,RCIF wird durch lesen von RCREG zurückgesetzt, brauchst Du also 
nicht per Hand zu machen. Allerdings sollte man in der ISR abfragen ob 
der Interupt überhaupt freigegeben ist und das Flag abfragen. Gut bei 
dir ist nur ein Interupt freigegeben da sollte eigentlich nichts weiter 
passieren.

Vor dem Beschreiben von TXREG sollte man überprüfen, ob PIR1,TXIF 
gesetzt ist, sonst könnte ein Wert verloren gehen aber das dürfte auch 
nicht das Problem sein, da die Daten ja so gesendet werden wie sie 
reinkommen und die Zeit zwischen zwei Bytes ja mindestens 500µs (=500 
Befehlszyklen @4MHz) beträgt.

Könnte es evtl. sein, das b eim Sender ein Paritätsbit mit gesendet 
wird? Das könnte den Effekt erklären.

MfG
Steffen
Gast #35240
Lesenswert?
• ▲
▼
Hallo Steffen;

mit der ISP du hast du natürlich recht. Aber meiner Meinung nach 
überprüft man das TXSTA,TRMT -bit auf Pufferüberlauf.

Wie auch immer selbst mit dem Änderungen ist der Fehler immernoch da.
Gast #35241
Lesenswert?
• ▲
▼
Hallo Tom,

Du mußt warten bis das Transmit Shift Register (TXSTA,TRMT) auch 
wirklich leer ist, bevor Du das nächste Zeichen ins TXREG lädst, sonst 
werden da wirklich Zeichen verschluckt.

MFG Olli
Gast #35244
Lesenswert?
• ▲
▼
Hallo Steffen,

sobalt das bit3 vom Portb setze bricht die Spannung auf der Platiene 
zusammen, dabei ist an ihm gerade mal eine 2mA Led angeschlossen.
Zum PortC kann ich dich beruiegen. Das Programm das ich euch zu 
verfügung gestellt habe, ist nur ein Ausschnitt eines
ca. 600 Zeilen-Programmes, und in diesem ist der PortC initialisierst. 
Aber Danke für den Hinweis

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.