mikrocontroller.net

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


Autor: Sven F. (sven0876)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
400 Zähler sind auch kein Problem.

Autor: Sven F. (sven0876)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Schwurbl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ansonsten: mit "gleichzeitig" bist du mit MCs auf der falschen 
Baustelle. Allenfalls "quasi gleichzeitig".

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pin-Change Interrupt.


Peter

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven F. (sven0876)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Schwurbl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: crazy horse (Gast)
Datum:

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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.