PWM-Timing IC?

Hallo, ich versuche grade, den Anteil des Duty-Cycles eines PWM-Signals (AD213XL Accelerometer) zu bestimmen. Mit dem µC geht das auch sehr gut, zumindest bei einem Signal. Nur leider muss ich drei synchron auswerten, was nicht funktioniert.

Gibt es speziell für diesen Fall eigene Timing-ICs, die ich dann seriell mit dem µC auslesen kann? Oder ist die einzige Alternative pro Signal einen kleinen µC zu verbauen, der dann die Daten zur Verarbeitung an den Haupt-Controller sendet?

TIA,

Nicolas

Reply to
Nicolas Tessore
Loading thread data ...

Ich sollte vielleicht erwähnen das ein einfaches Antialiasen mit ADC nicht machbar ist (um den ADC zu umgehen teste ich ja grade die PWM-Methode).

Danke!

Reply to
Nicolas Tessore

Hmm, ich plane gerade ein ganz ähnliches Projekt, hatte mich allerdings für 2x ADXL203 (bzw. 103) entschieden! Damit wollte ich eigentlich das PWM-Auswerten umgehen, und die Dinger direkt an die Analogeingänge eines ATmega32 anschliessen. Gibt es da Nachteile?! Sieht eigentlich einfacher aus, als die Digitale Methode..

--
thomas.kindler@gmx.de, www.kreapc.de
Reply to
Thomas Kindler

Liegt sehr wahrscheinlich an meinem (Test-)Aufbau, aber der Ausgang schwankt im Zehntel-Volt-Bereich, obwohl ich Millivolt-Genauigkeit bräuchte.

Darum wollte ich beides ausprobieren, aber es scheint hier Nachteile auf beiden Seiten zu geben.

Reply to
Nicolas Tessore

"Nicolas Tessore" schrieb im Newsbeitrag news:d4jg32$uv7$04$ snipped-for-privacy@news.t-online.com...

Intel 8253. Hat 3 Zaehler, die zaehlen, wenn ein EIngang auf HI liegt. Wenn man die Zaehlerwerte in der Stillstandszeit ausliest, und in der naechsten Stillstandszeit wieder, hat man die Angabe, wie lang der Impuls war. Andere gibt es auch, willst du aber nicht, zu teuer, zu selten, Auslaufmodelle, da waeren einzelne uC wohl billiger. Aber es gibt viele Tricks, wie ein einzelner uC (oder zumindest der richtige uC) es doch kann. Vermutlich hast du 3 asynchrone Signale, die jeweils irgendwann auf HI gehen und wieder auf LO und du willst die Zeiten erfassen in Mikrosekundenaufloesung oder besser, aber du weisst das du nur 6 solche Zeiten sagen wir pro Millisekunde bekommst, sie also problemlos weiter verrechnen kannst. Hat der uC 3 Timer, oder eine TPU wie die von Motorola, geht es sowieso. Wenn der uC 3 interruptfaehige Eingaenge und einen frei laufenden Zaehler hat, kannst du bei jedem Interrupt den Zaehler auslesen, und mal ausrechnen, ob dir die durch Interrupt-Latency entstehende Ungenauigkeit ausreicht. Dabei hilft es, nach Eintritt in die Interrupt-Routine den Zaehler in den Akku zu holen, und gleich die Interrupt-Prioritaet herabzusetzen, wenn der uC so was kann. Wenn der uC zu langsam ist (

Reply to
MaWin

Das sind genau die zwei Dinge, die mich zu dem externen Timer geführt haben :)

Ich habe hier zu Testzwecken im Moment nur den ATmega8, und ich würde gerne bei den Atmel AVR bleiben.

Des weiteren erscheint mir die Lösung mit den externen Timern für mein Projekt (immer noch die Positionsbestimmung) am geeignetsten, da ich dann das Zählen der Duty-Cycles extern erledige und die Ergebnisse nur "bei Bedarf" abrufen kann.

Reply to
Nicolas Tessore

Nicolas Tessore wrote in news:d4jm7m$cv0$04$ snipped-for-privacy@news.t-online.com:

Mhh, also der "richtige" Controller kann genau das. :-) Du brauchst einen uC der einen Timer mit mehreren Capture Eingängen hat. Der MSP430 z.B. hat für TimerA 3 Eingänge und am TimerB 7 (nur grosse Modelle haben TimerB). Keine Probleme wegen Interuptlatenz, weil der den Zählerstand des Timer "fotografiert", wenn die programmierte Flanke an einem der Capture-Eingänge auftritt. In der Interruptroutine hat man dann Zeit bis zur nächsten Periode den Zählerstand aus dem Captureregister auszulesen. Eigentlich ziemlich simpel. Wundert mich, dass der Atmel das nicht kann...

M.

--
Bitte auf mwnews2@pentax.boerde.de antworten.
Reply to
Matthias Weingart

Das ist doch sehr schön zu hören :D Ich werde mich in dieser Richtung umschauen, danke!

Der ATmega8 hat 3 Timer, zwei davon sind allerdings 8bit. Das reicht an genauigkeit nicht. (Der mega8 ist imho der kleinste mega von Atmel, deshalb wohl nicht am besten bestückt.)

Danke,

Nicolas

Reply to
Nicolas Tessore

Hi,

Wenn du die Daten nur bei Bedarf brauchst könntest du ja auch immer ein Signal nach dem anderen auswerten...

Oder du spendest einen ATMEGA8 der nichts anderes tut als in einer kleinen Schleife drei Zähler hochzählen wenn jeweils der entsprechende Pin High ist. Bei 16MHz Takt dürfte das genau genug sein oder?

Gruß Alex

Reply to
Alex Wenger

Nicolas Tessore wrote in news:d4la5k$bdn$05$ snipped-for-privacy@news.t-online.com:

Achja, die 8-bitter... man kann auch mit mehr als 8bit auflösen, Du musst nur im Zaehleroverflow-Interrupt den H-Teil Deines 16bit-Wertes um eins erhöhen (L-Teil ist die Differenz aus zwei Captures). Sobald wieder ein Capture auftritt, den H-Teil dann natuerlich wieder nullen. Alles kalr?

M.

--
Bitte auf mwnews2@pentax.boerde.de antworten.
Reply to
Matthias Weingart

Natürlich, das würde wunderbar gehen :). War auch mein zweiter Gedanke. Allerdings gefällt mir der erste, mit externen Timern, noch am Besten, trotzdem danke!

Reply to
Nicolas Tessore

Mit dem MSP430 ist das wirklich sehr einfach durch seine 3 Timereingänge. Eine entsprechende Schaltung mit einem ADXL202 und die Software dazu findet man z.B. auf meiner Homepage. Der Link lautet:

formatting link

Das funktioniert aber prinzipiell mit jedem Controller ganz einfach der

16-Bit Input-Capture-Eingänge besitzt...
--
Love, Peace and Happiness
  Thomas

Thomas Wedemeyer                       | Je planmaessiger die Menschen
EMail: mail@thomas-wedemeyer.de        | vorgehen, desto wirksamer
WWW: http://www.thomas-wedemeyer.de/   | vermag sie der Zufall zu
Public-PGP-Key by request !            | treffen. (F. Duerrenmatt)
Reply to
Thomas Wedemeyer

Tada! Genau das hab ich gesucht, danke!

Reply to
Nicolas Tessore

Hab grad zufällig ein Bild von dem gesehen, den hab ich hier sogar noch auf einem alten Motherboard (386 war's glaub ich).

Danke nochmal!

Nicolas

Reply to
Nicolas Tessore

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.