PIC18, Eingang abfragen

OP #1534108
Lesenswert?

Hallo Leute.

Ich sitze grade an einem Projekt und komme nicht weiter.

Kurze Einführung:

Ich habe eine Schaltung die IR-Signale sendet und empfängt.
Diese Signale werden Bi-Phase-kodiert und dann mit einer Träger-Frequenz 
von 48kHz übertragen.

aus
0  0  1  0  0  1  1   wird nach der Kodierung:
10 10 11 01 01 00 11

Jedes High-Signal hat dann einen Träger von 48 kHz mit einer PWM von 
33%.

0 -> 10

     ------------
    |            |
                  ----------

mit Träger (48kHz bei 4800 baud):

    -  -  -  -  -
     -- -- -- -- -----------


Jetzt zu meinem Problem:
Das empfangene Signal muss ich nun wieder in ein Datenpaket zurück 
wandeln. Auf meiner Platine habe ich einen PIC18F65J10 verwendet. Das 
IR-Signal wird vom Empfänger-Baustein invertiert ausgegeben.
=> Ständig HIGH bis auf die 1, die dann LOW werden.

Dieses Signal geht jetzt auf meinen PIC. Dort muss ich es am Eingang
( kein INT-Eingang ) pollen, das Ergebnis irgendwie auswerten und wieder 
in einen Datenstrom umwandeln. Anschließend wird es wieder dekodiert.


Ich hoffe Ihr könnt mir weiter helfen, da es ein ziemlich wichtiges 
Projekt ist und ich schon etwas über der Zeit bin.

Achso, programmiert wird der PIC in MP-Lab in C.


Vielen Dank im Voraus!


Gruß John
Gast #1534123
Lesenswert?

- Freilaufender timer (tmr0), clock 10 - 20 fache Trägerfrequenz
  (Dimensionierung z.B. mit  Pic Multicalc)

- Bei Flankenwechsel Timerregister speichern, mit vorigem Wert 
vergleichen


Rest ist wohl klar
OP #1534191
Lesenswert?

Oh,

erst mal vielen Dank für die schnelle Antwort.


Leider ist mir der Rest noch nicht so ganz klar.

Wenn ich die Abstände der Flankenwechsel habe weiß ich, dass bei kurzen 
Abständen (eben die der Träger-Frequenz) eine 1 übertragen wurde und bei 
Langen eine 0.

Ist das so richtig verstanden?



Falls jemand sowas schon mal in C programmiert hat und den Code zum 
Nachschauen rausgeben kann/mag wäre ich sehr dankbar.


Gruß John

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