mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeitmessung mit diskretem Timer


Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich muss 8 Ereignisse messen... folgender Versuchsaufbau:

Es gibt ein Startsignal, daraufhin soll ein Timer loslaufen. 
Nacheinander werden jetzt 8 Ereignisse ausgelöst spricht ein Digitales 
SIgnal geht von Low auf High-Pegel (andersrum ist auch möglich). Die 
Auflösung sollte bei min. 1µS liegen, besser währen 500ns oder gar 
schneller. Erstmal reichen aber 1µS also 1MHz. Der Timer sollte außerdem 
mindestens 1 Sekunde laufen, nach 1 Sekunde ist die Messung beendet.

Bislang wollte ich (auch aufgrund der steigerung der Auflösung) einen 
Counter diskret aufbauen (HC590?) der den Takt von einem 1MHz 
Quarzoscillator bekommt. Diesen wollte ich auf 32Bit erweitern (wie?) 
sodass ich auch bei 2MHz+ noch die 1 Sekunde messen kann.

Außerdem wollte ich 8x4 Schieberegister nutzen, die den 32Bit 
Counterwert bei Ereigniss (eines der 8 Signale wechselt) speichert. 
Später wollte ich dann die 8 "32Bit-Schieberegister" (sind ja 4x8Bit in 
Reihe) per SPI mit einem kleinen µC auslesen und per USB an den PC 
weitergeben. Das ist auch nicht das Problem (also der µC + USB).

Ist das Vorgehen so sinnvoll? Für 2MHz müsste ich dann ja nur den 
Quarzoscilator tauschen. Ich hatte mir auch den LPC2103 angeschaut, der 
hat ja Capture Pins die den aktuellen Counter-Wert speichern bei 
externem Ereigniss. Nur leider hat der kein externen Takteingang sodass 
ich bei 8 µCs nichtmal halbwegs synchron bin.

Wie kann ich die HC590 auf 32Bit erweitern?

VIelen Dank schonmal! Grüße und Roman beendet ;)

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nur leider hat der kein externen Takteingang sodass
> ich bei 8 µCs nichtmal halbwegs synchron bin.

Hossa... wolltest du für jeden Capture einen LPC2103 verbraten?

Was willst du eigentlich messen? Den exakten Zeitpunkt oder die Dauer? 
Für letzters müssen die Timer nicht synchron sein.

Und ein LPC2103 hat schon ganz allein 7 Capture-Inputs (plus die der 
16bit Timer), wohl nur deshalb nicht 8 weil ihn die Pins ausgehen. 
Andere LPC2000er haben 2 32bit-Timer mit je 4 Capture-Inputs, Summe 8, 
die Timer lassen sich annähernd synchron fahren und sind mit 60MHz 
allemal genau genug.

Da scheint mit ein einzelner LPC2148 (wg. USB, sonst auch LPC2119, 
LPC2138, ...) etwas einfacher als dein archaisch anmutendes IC-Grab.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein archaisch anutendes IC-Grab sieht einfach besser aus ;)

Ich möchte im Grunde nur die Zeitpunkte wissen.

Start ist T0 und dann möchte ich zu jedem Ereigniss den Zeitpunkt 
wissen. Sprich Eingang 1 bei z.B. 10µS, Eingang 2 bei 30µS, Eingang 3 
bei 32µS.

Die Eingänge kommen definitiv nacheinander. Also Eingang 3 kann nicht 
vor Eingang 2 kommen.

Ich sehe bei den NXP ARMs nur 4 Capture Eingängen. Wenn ich beide Timer 
gleichzeitig starte wären das demnach 8 Eingänge die Ereignisse 
stoppen/speichern können. Für die 8 Eingänge müsste das dann eigentlich 
reichen. Bei start rennen beide los und fangen an auf Ereignisse zu 
warten.
Wenn ich das ganze jetzt erweitern möchte, sprich statt 8 Eingänge 16 
Eingänge messen, müsste ich doch nur eine zweite Platine nutzen. Der 
Startzeitpunkt ist der gleiche. Ich messe dann ja nur die Dauer von T0 
bis Eingang X auf High geht ... oder?

Muss ich die Timer in Software starten (also bsp. externen Interrupt und 
starten) oder gibt es bei den NXP einen "Startpin" ?

Im Datenblatt zum LPC2148 steht noch:
"The Timer/Counter is designed to count cycles of the peripheral clock 
(PCLK) or an externally supplied clock"
An welchen Pin wird der externe Takt angelegt? Dazu habe ich nichts 
gefunden ... bei den SAM7 ist das ja recht klar nur haben die nicht die 
capture-Pins ..

Danke!

Grüße

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich wrote:

> Die Eingänge kommen definitiv nacheinander. Also Eingang 3 kann nicht
> vor Eingang 2 kommen.

Dann nimm doch nen Parity-IC (ist kein EXOR !), z.B. 74HC280 und capture 
auf jede Flanke.


Peter

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ebenfalls dafür einsetzbar, mit bis zu knapp 30 Signalen: Der Parallax 
Propeller macht das in einem seiner 8 Prozessoren problemlos per 
Software, mit Auflösung <<1µs.

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde einen CPLD nehmen.

Dort kannst du alles deinen Wünschen anpassen. Übergabe der Daten einen 
eonen uC per SPI, Parallel, UART oder wie auch immer.
Oder du kannst in dem CPLD direkt einen UART implementieren, der per 
Seriell-USB-Wandler direkt mit dem PC verbunden ist.

Ich habe mal eine Auswerteschaltung für Quadraturencoder gebaut. Die 
Encoder waren direkt mit dem MAX2-CPLD ohne weitere externe Beschaltung 
(Ausser 1k-Pullups) verbunden. Im CPLD war die Richtungserkkung und zwei 
32bit Counter. Über einen einfachst-UART wurden die Daten zyklisch zum 
PC gesendet.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessant, wie auf den Vorschlag eines simplen standard CMOS-IC noch 2 
teure stromfressende Pinmonster-Boliden genannt werden.


Peter

Autor: Nullpointer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Interessant, wie auf den Vorschlag eines simplen standard CMOS-IC noch 2
teure stromfressende Pinmonster-Boliden genannt werden.

Nun, zuerst ist es ein capture, dann werden's 32bit und dann werden's 8 
signale. CPLDs sind nicht per default Stromfressender. Und so viele 
Pin's muessen's nicht sein. Je nach Ausfuehrung ist man mit 64bins 
dabei. Dafuer gibts keine 8 32bit Zaehler.
Moeglicherweise braucht's die auch nicht. Im Prinzip wuerde ein Zaehler 
und 8 Latches genuegen. Ein CPLD zieht nicht viel Strom wenn man's nicht 
zu schnell taktet. 1MHz fuer einen Counter ist auf der sehr langsamen 
Seite.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:

> Interessant, wie auf den Vorschlag eines simplen standard CMOS-IC noch 2
> teure stromfressende Pinmonster-Boliden genannt werden.

Das Parity-IC misst selber reinweg garnichts. Folglich hinkt der 
Vergleich etwas. Zweifellos ist das aber eine Alternative.

PS: Den Propeller habe ich nicht zuletzt deshalb erwähnt, weil in einem 
andere Thread kürzlich das Fehlen von Funktionsmodulen beklagt wurde. 
Und diese Aufgabe hier recht schön zeigt, wie man fehlende Hardware 
durch Software ersetzt und an Flexibilität gewinnt.

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.