Forum: Mikrocontroller und Digitale Elektronik 4 zähler gleichzeitig mit atmega?


von Sven F. (sven0876)


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

von AVRFan (Gast)


Lesenswert?

Was hindert Dich daran, einfach alle vier Zähler fortlaufend in einem 
festen, geeignet gewählten Zeitraster, abzufragen, und diese Daten 
permanent passend zu verrechnen?

von Tom (Gast)


Lesenswert?

400 Zähler sind auch kein Problem.

von Sven F. (sven0876)


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

von Schwurbl (Gast)


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.

von crazy horse (Gast)


Lesenswert?

ansonsten: mit "gleichzeitig" bist du mit MCs auf der falschen 
Baustelle. Allenfalls "quasi gleichzeitig".

von AVRFan (Gast)


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.

von crazy horse (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

Pin-Change Interrupt.


Peter

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

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.

von Sven F. (sven0876)


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

von Peter D. (peda)


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

von AVRFan (Gast)


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.

von Schwurbl (Gast)


Lesenswert?

@crazy horse

Mit einer Abstastung mit 1kHz kann ich bei einer Signalfrequenz von 
300Hz ein Puls/Pausverhältnis von bis zu 30:70 verkraften. Insofern 
verstehe ich Deine Aufregung nicht ;-)

von crazy horse (Gast)


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.

von Matthias L. (Gast)


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).

von crazy horse (Gast)


Lesenswert?

tja, da hat man aber bei Rechtecksignalen ein mächtiges Problem, wo 
liegt denn da nur die höchste Frequenz...

von Michael U. (amiga)


Lesenswert?

Hallo,

@crazy horse: nimm doch als Näherung die 10-fache Frequenz.
Klappt bei Oszilloskopen u.ä. ja auch ganz gut, die gehen auch nur sehr 
selten bis unendlich. ;)

Gruß aus Berlin
Michael

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.