Serielle Daten mit PIC einlesen?

Gast #259786
Lesenswert?

Hallo,
meine Suche hier hat leider nichts passendes ergeben.
Ich möchte mit einem PIC ein 8 BIT Signal einlesen.
Der verwendete PIC hat aber keine direkte Schnittstelle dafür, so
wollte ich einfach einen Eingang nutzen.

Das Byte kommt mit 9600Baud. (keine Taktleitung)

9600 Baud bedeutet doch 9600 BIT/Sekunde
Also alle 0,0001041 Sekunden ein neues BIT? ( 1/9600) Richtig?

Der PIC arbeitet mit 4 Mhz intern also mit 1Mhz
Das sind dann 1.000.000 Takte (Befehle) /Sekunde
Dann müsste ich also alle 104,1 Takte den Port abfragen (gerundet 105)
?

Statt "10000001" bekomme ich immer "11111111"
Die Abfrage startet aber beim ersten H
Der Pegelwandler ist auch OK. Der Oszi zeigt mir gute Impulse an.

Hab ich da einen Rechenfehler oder gibt es da einen einfacheren Weg.

Danke für jeden Tip.
Gast #259787
Lesenswert?

Wenn das Startbit kommt, mußt Du noch nen halben Puls länger
warten,damit Du die Mitte des Pulses erwischt und nicht die Flanke.

Schaumal bei Microchip, da gibts massig Applikationen, z.B. AN712
Autoboaud-Erkennung.
Gast #259788
Lesenswert?

Wenn Du ein zwei-Kanal-Oszi hast, dann gib mal genau zu dem Zeitpunkt,
wo Du den einen Port abfragst auf einem anderen Portpin einen
Flankenwechsel aus und beobachte diesen mit dem zweiten Kanal. Dann
kannst Du genau sehen, zu welchen Zeiten der µC die Daten einliest.

Gruß,
Markus_8051
Gast #259790
Lesenswert?

Hi

Der CCS Compiler liefert einen Software UART gleich aus Library
Funktion mit. Da kannst Du die gewünschten Pins, die Baudrate usw.
selber definieren und hast mit dem Rest fast nichts mehr zu tun. Eine
tolle Sache. Hab damit schon auf einem 8Pin / PIC in 5Min. eine UART
zum Laufen gebracht.

Gruss Andy
Gast #259791
Lesenswert?

Hallo,

vielen Dank für die zahlreichen Antworten!!!!
Stimmt 8 Bit war nicht richtig, sondern mit Start und Stopbit.
Also 5 Bits hintereinander konnte ich schon genau einlesen.
Da es aber Möglich ist, das es ohne Pause auch mehr sein können, ist
meine Routine noch zu ungenau.
Die Idee mit dem 2 Kanal-Oszi ist gut. Zum Glück hatte ich mir gleich
so einen gekauft.

Das AN721 schau ich mir dann auch mal an. Hoffentlich versteh ich das
mit meinen Englisch-Kenntnissen.

Hi Andy.
Ich arbeite mit MPLAB. Und kenne mich auch sonnst nicht so aus.
Welchen CSS-Compieler meinst Du. Falls das nicht verboten ist, könntest
Du mir das Library zusenden? Wenn das noch etwas Dokumentiert ist, wär
das eine ganz tolle Sache :o)

DANKE!
Gast #259793
Lesenswert?

Hi Schoasch

Danke für den Link!!!

>Und Hast du eh nicht darauf vergessen deinen PIN als Eingang zu
definieren?<

Den Satz versteh ich nicht ;o).
Klar ist mein Pin als Eingang definiert, sonnst geht es ja nicht.
Oder was meinst Du?
Gast #259794
Lesenswert?

Hallo Mario,

vielleicht bist Du in die berühmte "Analog-Falle" getappt. Die
I/O-Pins von Port A sind mit den AD-Modulen gemultiplext und nach einem
Reset im AD-Modus. Nähere Hinweise auf www.sprut.de

schlizbäda
Gast #259795
Lesenswert?

Hallo schlizbäda,

warst Du in einem zeitloch ? ;o)
Danke für den Tip, aber der kommt Monate zu spät.
Was ich übersehen hatte war das Stopbit, welches ein L ist und ich
dachte das kommt auch als H an. Man kann ja nicht alles wissen.
das Programm funktioniert dann auch.

Gruß Mario

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren