www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik suche programmierbarer 8 bit counter


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
wie schon im Topic erwähnt. Mir gehen die Counter in meinem ATMega 128
aus. Klingt blöd, is aber so. Ich habe habe hier einen Robotterarm
desen bewegungen ich mit 4 signalgebern messe. Das dumme ist, zwei der
4 counter des ATMega brauche ich schon für etwas anderes. Deswegen
bräuchte ich jetzt einen externen Baustein welchem ich einen Zählerwert
einproggen kann und er mir beim erreichen dieses Wertes ein Signal
liefert.
Per Software bekomme ich das Poblem nicht gelöst, es sei den jemand hat
eine idee wie ich ohne eine while schlife verhindern kann das das
gleiche high Signal mehrfach gezählt wird. Ich hab da keine idee.
Oder gibt es eine andere nette Möglichkeit 4 rechtechimpulse von
Gabellichtschranken zu zählen ohne den Programmablauf zu sehr zu
verlangsamen?
Danke für eure Ideen!

Gruß! Tom

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
je nach Geschwindigkeit der Impulse:
wenn relativ langsam, einen zenrtalen Zeitgeber-Int nutzen und dort
dann alle betreffenden Eingänge pollen und je nach Ergebnis
Software-Zähler incrementieren.
Sind die Ereignisse schneller: ext. Interrupt verwenden, dazu wieder 2
Möglichkeiten: für jedes Signal einen eigenen Int-Eingang verwenden
(die gehen dann aber schnell zur Neige) oder die Signale an getrennte
Eingänge legen, über ein ODER-Glied EIN Int-Signal für alle
Zählereingänge erzeugen, in der entsprechenden ISR dann die EIngänge
abfragen und Zähler aktualisieren. Externe Zähler sind meiner Meinung
nach entbehrlich, ist aber eine Frage der Geschwindigkeit der Impulse
und der Geschicklichkeit der Programmierung.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur so als Richtwert, ein Interrupt sollte nicht schneller als alle 100
Takte aufgerufen werden, damit auch das Hauptprogramm noch genügend
Rechenzeit übrig hat.

D.h. bei 16MHz Quarz kann somit jedes Ereignis langsamer als 16/100 =
160kHz in Software bearbeitet werden.

Wie gesagt, als Faustregel, in C könnte es manchmal auch etwas länger
dauern.


Peter

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Deswegen bräuchte ich jetzt einen externen Baustein, welchem ich einen
Zählerwert einproggen kann und er mir beim erreichen dieses Wertes ein
Signal liefert."

die Methode "zu Fuß" wäre folgendermaßen:
74HC590 als 8-Bit-Zähler, acht Und-Gatter, Achtfach-UND-Gatter,
8-fach-Latch z.B. 74HC573 an die Und-Gatter anschließen, in das Latch
das Bitmuster einspeichern

ist zwar umständlich, gibt aber abhängig vom Bitmuster, das im Latch
gespeichert ist, ein Signal ab.

Gruß

Autor: Marko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
82C54. Wenn du Portpins sparen willst, über HC595 anschließen, dann
brauchst Du gerade mal drei Pins. Schau im Datenblatt unter Mode 0
(Interrupt on Terminal Count).

Autor: Conlost (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Tom,
nimm einen ATmega8 dazu, dann haste noch 3 Timer.
Warum denn mit TTL rumkaspern.
Gruß,
Arno

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle für eure Antworten!
@crazy horse: Die Impulse sind doch sehr langsam (ca. alle 250ms) daher
werde ich das mit dem Softwarezähler mal versuchen. Es könnte jedoch
sein das mein Echtzeitbetriebssysem nicht so mit dem Interrupt zurecht
kommt wie ich das gerne hätte. In der Anleitung steht das Interrupts
erst freigegeben werden wenn Das Betriebssystem keinen Task ausführt
bzw. der default task aktiev ist. Wenn sich jedoch mein Robotter bewegt
ist meist dieser task aktiev und die anderen bekommen nur recht wenig
Prozesszeit ab. Mal kucken ob ich das hinbekomme.
@Chris: Wenn externer Counter dann müsste es einer sein welcher
möglichst wenig Ports benötigt. Idealerweise Programierbar mit I²C.
Denn es wird jetzt schon knapp mit den Ports da ich auch noch ein
Graphikdisplay und eine Digitalkammera angeschlossen habe. Darum habe
ich mir auch schon überlegt einen weiteren Controller zu verwenden wie
es Conlost vorschlägt.

Tom

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder einen tiny mit 8 pins. Der ist dan variabel auch ohne umlöten der
gatter-verbindungen.

Gruß, Florian

Autor: Tom (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Fals es euch interesieren sollte, ich habe das Problem nun doch
programmtechnisch gelöst. Im Anhang ist der Auszug aus dem Programm,
die Zähler findet ihr ganz unten.

Gruß Tom

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.