4 zähler gleichzeitig mit atmega?

#845808
Lesenswert?

brauch mal hilfe wie könnte ich es anstellen 4 zähler gleichzeitig zu 
verwenden. programiere zwar in bascom aber ich hänge im moment am 
grundsätzlichen. "Hirnblockate..."

ziel soll sein 4 wasserzähler zu erfassen 2* vorlauf 2* rücklauf wobei 
dabei auch noch je 1mal der rücklauf vom vorlauf abgezogen werden müste.

Danke

sven
#845827
Lesenswert?

mein gedankenproblem ist eigentlich ich hab 4 s0 ausgänge (impulsrad vom 
zähler) mit nem optokopler abgegriffen also würd sagen max 300hz als 
zählfrequenz und eigentlich haben zumintest doch die "kleineren" dip 
atmegas nur 2 interupts... zudem müßte ich ja wenn die signal flanken 
auswerden da es ja im ungünstigsten fall auch ein dauersignal geben 
könnte wenn die impulsscheibe "doof" stehen bleibt.

sven
Gast #845841
Lesenswert?

Interrupts werden oft überbewertet. Eigentlich reicht es, wenn Du einen 
Timerinterrupt installierst, sagen wir mit 1kHz, in dem alle notwendigen 
Zählereingänge gepollt werden. Wenn sich der Signalpegel vom letzten 
Abfragen ändert, hast Du eine Flanke detektiert und erhöhst damit Deinen 
Zähler.
Gast #845844
Lesenswert?

>also würd sagen max 300hz als
>zählfrequenz und eigentlich haben zumintest doch die "kleineren" dip
>atmegas nur 2 interupts...

300 Hz max.?  Für was brauchst Du da störanfällige Interrupts?  Wenn Du 
die vier Signale fortlaufend alle 1 ms abtastest, geht Dir nix verloren. 
Fürs Auswerten bleibt auch noch genug µC-Leistung übrig, denn ein AVR 
kann innerhalb 1 ms bei der Taktfrequenz 8 MHz (Beispielwert) ja ca. 
5000 Instruktionen abarbeiten.  Reicht das?  Wenn nicht: 16 MHz und/oder 
Assembler.
#845943
Lesenswert?

die 30hz sind maximal geschätzt wenn ein geringerer wasserdurchsatz ist 
kann es auch im extremfall 1/10hz sein. bzw das signal auf logisch 0 
oder 1 stehen bleiben. deshalb meine idea mit der positiven 
flankenauswerdung. meine jetzige  lösungsansatz idea wäre von allen 
signalen die flanke auszuwerden dieses signal via or verknüpfung auf den 
int0 sobald dieser ausgelöst wird via xor vergleichen mit vorherigen 
signalen.

so müßte ich doch auch gleichzeitige änderungen erfassen oder?

oder hat einer noch ne bessere idea. das ganze ist zur zeit noch reine 
theorie nur die wasseruhren sind fertig umgebaut.

sven
#845961
Lesenswert?

Travel Rec. wrote:
> Da die PinChange-Interrupts gebündelt auf jeweils ein Flag laufen und
> erst maskiert werden müssen, eignen sie sich für diese Aufgabe nur
> bedingt bis gar nicht, je nach verwendetem AVR-Controller.

Och nö.

Von Dir hätte ich das nicht erwartet.

Tastenentprellung angucken, beide Zählerbytes rausschmeißen und nur die 
Flankenerkennung drin lassen, fertig sind bis zu 8 Flankenflags.

Kostet etwa 8 Words Code. Ist Dir das zu viel?


Peter
Gast #846028
Lesenswert?

>Wieso geht ihr bei eurer Timer-Interrupt-Abtasterei eigentlich immer von
>einem 50:50-Rechteck aus? 300Hz allein besagt gar nicht.

Man kann problemlos auch ein 1:5- oder 1:10-Signal abtasten (wird ja z. 
B. bei den DCF77-Decodern tatsächlich gemacht).  Man muss dann nur eine 
höhere Abtastfrequenz wählen, umso höher, je unsymmetrischer das Signal 
ist. Solange jedoch keine besonderen Gründe für ein stark 
unsymmetrisches Signal bekannt sind, wäre es nicht vernünftig, vom 
Vorliegen eines solchen auszugehen.
Gast #846446
Lesenswert?

ich reg mich nicht auf, ich habe nur darauf hingewiesen, dass die 
einfache Formel Abtastfrequenz > 2x Signalfrequenz nicht immer hinhaut.
Und es gibt genügend Signale, die durchaus uncharmante Tastverhältnisse 
haben. Und dann steigt die Abtastfrequenz schnell in unangenehme Höhen, 
trotz eigentlich geringer Signalfrequenz. Und dann ist schnell Schluss 
mit lustiger Abtastung.
Ich bevorzuge für solche Messungen Interrupts - die sind u.a. dafür da.
Gast #846809
Lesenswert?

>Abtastfrequenz > 2x Signalfrequenz nicht immer hinhaut.

Nur so der Vollstämdigkeit:

Diese Formel haut immer hin. Mit Signalfrequenz ist auch die höchste, im 
Signal vorkommende Frequenz gemeint. Gibt es höhere Frequenzen als 
Abtastfrequenz/2, dann können diese nicht rekonstruiert werden. Diese 
sorgen allerdings für eine Verzerrung des Signales (Aliasing).

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