Forum: Mikrocontroller und Digitale Elektronik Extern getriggerter Zähler


von Hugo P. (portisch)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein externes Signal das ich auf einen Digital Input des AVRs 
legen möchte.

Und zwar ist ein Impuls 66% High, 33% Low.
Bei jedem Impuls soll ein anderer Ausgang des AVRs geschaltet werden.
Also beim ersten Impuls Q1, beim zweiten Q2,.....

Der neunte Impuls dient als Synchronisierung. Der AVR soll erkennen, 
dass nun Pause ist und somit seinen Counter zurück auf 0 setzen.

Die Frequenz der Pulse ist "noch" nicht definiert. Aber die Maximale 
Frequenz wird so ca. bei 60Hz liegen. Als Sicherheit kann man noch auf 
30Hz-10Hz runtergehen.

Der AVR müsste als zuerst auf die postive Edge einen Interrupt auslösen.
Dann die Zeit bis zur fallenden Flanke messen.
Das ergibt 66% der Periodendauer und der AVR weis, dass in 
Periodendauer/33% die nächste steigende Flanke kommen müsste.
Kommt diese nicht soll der Zähler zurückgesetzt werden (Sync Bit).

Das ganze soll ein Multiplexer mit nur einem Bit werden.
Über die Ausgänge des AVRs werden dann Optokoppler angesteuert.

Kann mir jemand eine Starthilfe geben wie man das "einfach" im AVR 
umsetzt.
Arbeiten werde ich mit z.B. einen Atmega8, AVR Studio mit WinAVR.

Danke!

von Krapao (Gast)


Lesenswert?

Schau dir an wie ein IR-Fernbedienungsempfänger auf dem AVR 
implementiert wird. Oder wie eine Soft-UART implementiert wird. Das 
Abtasten der Signale ist ähnlich. Beispiele gibt es in der Codesammlung.

Außer mit der Flankenerkennung plus Messung der Halbperiode kannst du 
auch mit einer Abstastmethode arbeiten, wenn die Taktrate des Signals 
bekannt ist. Dazu so regelmäßig den Logikpegel am Eingangspin ermitteln, 
dass du pro kurzer Halbperiode (Low) 3-4 Abtastpunkte hast.

von Harald W. (wilhelms)


Lesenswert?

Hugo Portisch schrieb:
> Hallo,
>
> ich habe ein externes Signal das ich auf einen Digital Input des AVRs
> legen möchte.
>
> Und zwar ist ein Impuls 66% High, 33% Low.
> Bei jedem Impuls soll ein anderer Ausgang des AVRs geschaltet werden.
> Also beim ersten Impuls Q1, beim zweiten Q2,.....
>
> Der neunte Impuls dient als Synchronisierung. Der AVR soll erkennen,
> dass nun Pause ist und somit seinen Counter zurück auf 0 setzen.

Aha. So etwas würde ich mit einem 4017 machen. Aber vielleicht hat
der Avr ja ausserdem noch was anderes zu tun...
Gruss
Harald

von slow (Gast)


Lesenswert?

Bei der niedrigen Frequenz würd ich mit Polling arbeiten. Ohne 
Interrupt. Alles in einer Software, übersichtlich, für jeden Anfänger 
geeignet.

Eingangssignal an einen IO-Pin. Die Software schaut, ob er high oder low 
ist. Die Software kann sich auch die Pulsweite rausmessen, um die Pause 
sicher zu erfassen.

von Hugo P. (portisch)


Lesenswert?

Auf den 4017'er bin ich auch schon gekommen.
Dieser scheint aber laut Datenblatt die Ausgänge "überschneidend" 
ein/auszuschalten. Die verschiedenen Analoge Signale möchte ich aber 
ungern kurzschließen ;).

Daher die 2/3;1/3 Teilung.

Auch möchte ich mir z.B. die Möglichkeit einer PTC Auswertung nicht 
verbauen.

Werde mir das mit dem Polling mal ansehen.

von TestX .. (xaos)


Lesenswert?

mach das ganze mit dem ICP vom timer..ist das einfachste. außerdem kann 
der controller so noch vieles nebenbei erledigen ;)

p.s. spendiere dem ICP eingang aber nen schmitt-trigger ..

von Scherzkeks (Gast)


Lesenswert?

Hugo Portisch schrieb:
> Und zwar ist ein Impuls 66% High, 33% Low.

Und was ist der Impuls während der restlichen 1% ?

SCNR

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.