Forum: Mikrocontroller und Digitale Elektronik Frequenz detektieren PIC 12F683


von Wolf R. (Firma: Monster AG) (ik-student)


Lesenswert?

Hallo in die Runde,

ich bin auf dem Gebiet von PICs und Assemblerprogrammierung ein 
absoluter Newbie. In meinem Studium habe ich nun ein Projekt am Laufen, 
wo ich mich in einen PIC 12F683 einarbeiten soll. Grundlegende Dinge 
kann ich nun schon : GPIO als Ausgang etwas anzeigen lassen, Interrupt 
auslösen, ADC nutzen....

Nun zu meiner Frage, ich soll später mit diesem PIC Frequenzen bis zu 22 
KHz detektieren können, d.h. wenn an einem ADC-Port eine bestimmte 
Frequenz anliegt, soll der PIC etwas tun. Dass ich mit dem PIC keine 
richtige Abtastung machen kann ist mir völlig klar ist ja kein teurer 
DSP ;) Ich hoffe ihr könnt mir ein paar Ideen zukommen lassen wie ich 
das programmier- und hardwaretechnisch lösen könnte.

Vielen Dank im Voraus
Gruß

von Rudi (Gast)


Lesenswert?

Ich sag' nur 'Capture / Compare'

Rudi

von Severino R. (severino)


Lesenswert?

Wenn die Signalform nicht von Bedeutung ist, brauchst Du gar keinen ADC. 
Am Besten an einem Eingang mit Schmitt-Trigger anschliessen.
Musst Du die Frequenz bestimmen, oder einfach erkennen, dass sich da 
"irgend etwas tut"?

von Wolf R. (Firma: Monster AG) (ik-student)


Lesenswert?

Hallo,

danke für die schnelle Antwort!

@Rudi meinst du im Assembler Compare? den gibt es für den 12F683 leider 
nicht :(

@Severino R. später soll ein 22KHz Signal mit einem Offset von 14-17 
Volt den PIC dazu bewegen etwas zu machen, d.h. das 22KHz Signal ist 
moduliert, deswegen wollte ich erst einmal klein anfangen und schauen, 
wie kann man den PIC ansteuern, dass er bestimmte Frequenzen erkennt und 
irgendwas machen soll.

Nachtrag:
P.S.: Schmitt Trigger ist ganz gut, aber ich soll die Schaltung 
möglichst klein halten!

Danke euch

von Severino R. (severino)


Lesenswert?

Warum willst Du nicht Klartext sprechen?
Geht es um eine Demodulation von DiSEqC-Signalen?

Wenn ja, dürfte die folgende App Note interessant sein:
http://www.eutelsat.org/satellites/pdf/Diseqc/associated%20docs/applic_info_PIC_microcontroller.pdf

Übrigens:
> d.h. das 22KHz Signal ist moduliert

Das Nutzsignal ist wohl moduliert mit einem 22kHz-Signal

von Wolf R. (Firma: Monster AG) (ik-student)


Lesenswert?

@Rudi sorry, jetzt weiss ich was du meintest habe das mit dem Capture / 
Compare in dem PIC-Datasheet gefunden ! Die Idee ist super.


@Severino R. ja es soll später für DiSEqC sein, aber mir ging es jetzt 
eher darum zu erkennen, wann ein bestimmtes Signal nun auf der Leitung 
ist. Das pdf kenne ich da schon, aber dieser Ansatz bringt mich auf 
keine Idee wie ich das im PIC mit Assembler umsetzen soll, deswegen 
fange ich klein an.

Ich habe auch schon eine eigene Idee, ich tu einfach einen GPIO-Pin auf 
digital schalten und überprüfe mit einem Interrupt die positive Flanke, 
starte einen Timer bis die nächste pos. Flanke kommt, mit Hilfe des 
Timer kann ich doch ein Register als Laufvariable immer hochzählen 
lassen. Ist die nächste positive Flanke am Eingang, stoppt die 
Laufvariable die ich dann mit einem festen Wert vergleiche. Muss ich 
wohl mit Subtraktion machen weil leider kein "compare" für diesen PIC 
gibt.
Wäre das eine Lösung ?

Ich hoffe meine Denkweise ist korrekt ;)

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.