mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten Empfangen via RS232


Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen!

Habe ein Problem beim Empfangen der Daten! Empfänger PIC 16f88
Sender PIC 16f887. Programmiert wird mit MPLAB in Assembler

Programm sieht wie folgt aus fürs Empfangen:

receive_data                  nop
        btfss   PIR1,RCIF
        goto   $-1
        movf  RCREG,w
                                return

So zu meinem Problem: Ich sende die Daten (z.B.: d'200') vom PIC16f887 
zum PIC 16f88. Der 16f88 erkennt dass er Daten bekommt und springt vom 
Befehl btfss PIR1,RCIF zum Befehl movf RCREG,w. Nur im RCREG steht dann 
nicht dezimal 200 sondern 0 drinnen. Warum steht jetzt aber nicht 200 
drinnen wenn er denn Befehl btfss übersprungen hat!
PS:Die Daten d'200' vom PIC16f887 gelangen mit Sicherheit auf die TX 
Leitung werden also gesendet.

Hat jemand eine Idee?

LG

Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ich noch hinzufügen muss!

Die Daten werden gesendet wenn ein Taster gedrückt wird!
Jedoch werden die Daten nicht immer geschickt wenn der Taster gedrückt 
wird.
Mal geht es, mal geht es nicht!

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du ein Oszi hast, kannst du verfolgen, ob die Signale sicher 
gesendet werden. Fehlerquellen sehe ich:

- falsche Baudrate eingestellt(also verschiedene)
- keinen sauberen Takt.(interner RC-Osz. statt Baudratenquarz)

wird receive Data zur richtigen Zeit ausgeführt? Ich würde den seriellen 
Empfang als Interrupt laufen lassen. Ist sicher in ASM auch möglich. 
Somit ist sichergestellt, dass du auf jedes Zeichen reagieren kannst. 
Evtl. hast du einen kompl. 8-Bit-Port frei? Dann könntest du die Daten 
parallel auf den Ausgangsport schicken zur Kontrolle. Wenn ich mich 
recht entsinne gibt es eine gute Seite für PICs, sprut.de heißt sie....

Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja Oszi hab ich gerade nciht bei der Hand!
Aber Baudrate ist mit Sicherheit die Richtige eingestellt. Das habe ich 
schon einmal mit dem Oszi überprüft.
Beim Takt wird der interne RC osz verwendet, aber das ist ja egal da 
Baudraten aufeinander abgeglichen worden sind mit dem OSCTUNE.
Ja das mit dem Interrupt hab ich mir auch schon einmal überlegt!

Jedoch besteht noch immer die Frage warum der Empfänger manchmal Daten 
bekommt und manchmal nicht und wenn er sie bekommt dann sind es die 
falschen Daten.

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
er bekommt nicht immer daten, weil du nicht ständig hörst.

Wenn du selbst Ohrenstöpsel nutzt, und diese immer kurz rausholst, aber 
sofort wieder reinsteckst, hörst du nicht, was andere Leute flüstern. Du 
hörst nur Wortfetzen! du musst die Ohrenstöpsel rauslassen und ständig 
hören! Dann bekommst du alles mit! Also Interrupt zum Empfang! Dann in 
einen Buffer schreiben.

Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja..ich versteh was du meinst.
Aber ich höre immer! Also ich habs im Debug Modus rennen und befinde 
mich dann dauernd zwischen btfss PIR1, RCIF und goto $-1 .. und dann 
drück ich den Taster. Und manchmal überspringt er das goto $-1 also wenn 
er die Daten bekommt und manchmal nicht!

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.