Forum: Mikrocontroller und Digitale Elektronik ATMega8 Input Capture


von F. C. (random236)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich möchte mit einem ATMega8 über den Input Capturing Pin ein Telegramm 
enmpfangen was in FSK moduliert wurde!

Die beiden Trägerfrequenzen sind 1200/1800Hz, ich hatte schon probiert 
mit einem XR2211 das Signal zu demodulieren hatte aber keinen Erfolg, 
entweder ist die externe Beschaltung zu ungenau oder der Baustein 
defekt. Für den oftmals verwendetetn CMX469 habe ich keine Bezugsquelle!

Ist es möglich das FSK Signal über das InputCapturing zu demodulieren? 
Ich habe das Sinuswechselspannungssignal über einen 100nF Kondensator 
und einen Spannungsteiler von 10kOhm und 3,3kOhm der an +VCC und +GND 
angeschlossen ist, eingekoppelt und auf den ICP-Pin gelegt.

Wenn ich das Signal erzeuge bekomme ich auf dem Scope ein sauberes 
Signal, ich müsste doch nur die Zeit zwischen den aufsteigenden Flanken 
messen und könnte somit die Frequenz ermitteln!

Den Quellcode zum Programm findet ihr im Anhang! Das Programm soll die 
Frequenz zwischen den aufsteigenden Flanken ermitteln und über UART 
ausgeben, die Interrupt Routine scheint zu funktionieren der UART wird 
nur aktiv wenn ich ein Signal anlege, jedoch ist das einzige was ich 
über UART empfange ein "INF"

Ich hoffe ihr könnt mir weiterhelfen! Quellcode ist im Anhang!

Vielen Dank
LG random

von Michael M. (eos400dman)


Lesenswert?

Hallo,

auch wenn der Beitrag schon etwas älter ist, wollte ich mich nach dem 
aktuellen Stand erkundigen.
Hast du noch eine Lösung gefunden?
Ich hatte nämlich vor auch einen XR2211 dafür zu verwenden.

Gruß Michael

PS: Handelt es sich bei dir um FMS? Rein von den Frequenzen her 
betrachtet.

von Karl H. (kbuchegg)


Lesenswert?

F. C. schrieb:

> ausgeben, die Interrupt Routine scheint zu funktionieren der UART wird
> nur aktiv wenn ich ein Signal anlege, jedoch ist das einzige was ich
> über UART empfange ein "INF"
>
> Ich hoffe ihr könnt mir weiterhelfen! Quellcode ist im Anhang!

Nur für den Fall, dass es noch jemanden interessiert.
Das Problem ist eine Division durch 0, die dadurch entsteht, dass sich 
der TO hier
1
  zaehler = + TOP*overflow_counter;
vertippt hat. Es muss += lauten und nicht = +
Dadurch ist zaehler offenbar immer 0, was dazu führt, dass hier
1
  freq = 16000000/ icr_neu;
durch 0 dividiert wird.

von zryan (Gast)


Lesenswert?

help me how  using  timer1 input caputure for  measure frequency square 
signal

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.