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 ;)
> 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.
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
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
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.
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.
Interessant, wie auf den Vorschlag eines simplen standard CMOS-IC noch 2 teure stromfressende Pinmonster-Boliden genannt werden. Peter
>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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.