mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC verschluckt Zeichen


Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Olli (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den Fehler gefunden! Das Probem liegt am PORTB,3. Scheinbar ist 
dieser Anschluss defekt.
Wenn die Daten nicht auf den PORTB geschrieben werden läuft das Programm 
perfekt.

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daran sollte es eigentlich nicht liegen. Was mir aber noch aufgefallen 
ist, Du initialisierst PortC nicht.
MfG Steffen

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na dann ist ja alles klar.

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.