Atmega1284P , Drei Frequenzen messen

OP #2613632
Lesenswert?
• ▲
▼
Guten Morgen,

Ich möchte mit einem Atmega1284P 3 Impulse messen. Es handelt sich dabei 
um Rechteck Signale zwischen 0-70 Hz. Bei nur einem Signal wäre es durch 
die Input capture Unit recht einfach zu lösen , doch wie gehe ich bei 3 
Signalen vor ? Der zweite ICP Pin von Timer3 ist zwecks SPI belegt.

Dachte schon an die Benutzung des einen ICP und einen externen Mux, aber 
das muss doch sicher auch eleganter zu lösen sein.


Gibt es eine Möglichkeit Polling zu vermeiden ? Sprich zum Beispiel jede 
Sekunde zu warten bis eine Signal Änderung am jeweiligen Pin ansteht und 
mir daraus die Frequenz errechnen ?

Vielleicht habt ihr ja noch eine passende Lösung oder Strategie in der 
Schublade.

Vielen Dank
#2613638
Lesenswert?
• ▲
▼
Schau mal nach dem ACI Interrupt.
Der Analog Comparator ist durch den Amux auf jeden beliebigen 
Analogeingang
aufschaltbar.
Dann könntest du mit der gleichen Routine erst den einen und dann den 
anderen  Eingang vermessen.

Gruss Klaus

p.s.
ein wenig undokumentierten Inlineassembler dazu habe ich noch
Gast #2613648
Lesenswert?
• ▲
▼
Dennis Henning schrieb:
> Ich möchte mit einem Atmega1284P 3 Impulse messen. ...
> Gibt es eine Möglichkeit Polling zu vermeiden ?

Warum? Bei 70 Hz müßte man mit mindestens 7 ms Zeitauflösung pollen. 
Warum soll man nicht z.B. per Timer regelmäßig alle paar ms eine ISR 
aufrufen, die sowieso oft als Basistakt für Tastaturentprellung 
vorhanden ist, und damit auch gleich die drei Impulse messen.
Es kommt natürlich drauf an, was du an deinen 3 Impulsen messen möchtest 
und in welchem Bereich das Tastverhältnis liegt. Wenn du die 
Flankensteilheit messen möchtest, wird es ohne Zusatzelektronik z.B. 
schwierig.
Gast #2613716
Lesenswert?
• ▲
▼
Der ATmega1284 hat wie der ATmega162 zwei Capture-Einheiten, je für T1 
und T3. Damit kann man zwei Eingangsfrequenzen mit hoher Auflösung 
gleichzeitig messen. Als Beispiel: 
Beitrag "reziproker Frequenzzähler, GPS-stabilisiert, ATmega162"

Wenn eine 5-stellige Anzeige bei ca. 3 Messungen/s reicht, schafft man 
mit dem ATmega1284 auch vier Kanäle gleichzeitig zu messen. Beispiel: 
Beitrag "4-Kanal Drehzahlmessung mit ATmega88"
Das Programm schafft es sogar bei 0 Hz auch '0' anzuzeigen, wenn man 
sich auf 0 Hz als <= 0,016 Hz verständigen kann :-)
(Firma: guloshop.de) #2614825
Lesenswert?
• ▲
▼
Warum nicht den Pin-Change-Interrupt verwenden und auf die betreffenden 
Pins maskieren?
In der Interrupt-Routine könntest du auf die jeweils gesetzten 
Interrupt-Flags reagieren: gesetzte Flags jeweils zählen und löschen.

Weiteres steht im Datenblatt, such einfach nach PCICR, PCIFR, PCMSK3 bis 
PCMSK0, Interrupt-Vektoren für PCINT0 bis PCINT3.
(Firma: guloshop.de) #2621947
Lesenswert?
• ▲
▼
Dennis schrieb:
> @ markus
>
> Funktioniert das also nur an PCINT 0 bis PCINT 3 ?

Hi Dennis, sorry, seh deine Antwort erst jetzt. Wenn ich das Datenblatt 
richtig gelesen hab, dann kann man jeden dieser vier PCINTs für einzelne 
I/O-Pins eines Ports einstellen. Schau einfach mal ins Datenblatt, da 
steht einiges dazu drin.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.