Forum: Mikrocontroller und Digitale Elektronik PWM- wie lange wird PWM für einen Wert ausgeführt


von swaechter (Gast)


Lesenswert?

Hallo,
Ich muss mich für die Uni mit einem µC auseinandersetzen und komme zur 
Zeit einfach nicht weiter.
Aufgabe: einen EKG-Simulator bauen
Ich möchte ein diskretisiertes EKG-Signal per PWM mit einem µC ausgeben 
und schicke es dann wieder über einen Tiefpass, um das Signal analog 
vorliegen zu haben

Mein Problem ist nun, dass ich jeden Array-Wert meines EKG Signals 160 
PWM-Durchgänge lang behalten möchte und dann soll der nächste Array-Wert 
in die PWM geholt werden.

Wie schaffe ich es nun, der PWM zu signalisieren, wann sie sich den 
neuen Array-Wert holen soll?
Kann man da irgendwie bei jedem PWM Durchgang einen Interrupt setzen und 
dann die Interrupts zählen oder so?
Kenne mich da einfach noch kaum aus und weiß nicht, was möglich ist...

Ich programmiere einen µC der Familie MSP430, genauer den F2274.

Viele Dank für jegliche Hilfe!

von Bernd (Gast)


Lesenswert?

"Diskretisiert" soll wohl bedeuten, dass dir
irgendwelche Punkte des EKG-Verlaufs in einem
Zeitraster vorliegen.

Warum sollen diese, (von einem lebenden Testobjekt)
sich doch fortwährend ändernden Daten, 160 mal
wiederholt werden, anstatt den Verlauf darzustellen?

Entweder du begreifst die D/A-Wandlung mit PWM
nicht, oder ich versteh dein Anliegen nicht.

von Karl H. (kbuchegg)


Lesenswert?

> Warum sollen diese, (von einem lebenden Testobjekt)
> sich doch fortwährend ändernden Daten, 160 mal
> wiederholt werden, anstatt den Verlauf darzustellen?

Ich schätze mal, damit er aufs Timing der Datenpunkte hinkommt.

Ich wollte ja schon schreiben:
> Kann man da irgendwie bei jedem PWM Durchgang einen Interrupt setzen
Natürlich! Nur weil ein Timer auch noch einen Pin rumwurschtelt, 
vergisst er ja nicht auf seine Interrupts.

Aber dann hab ich gelesen, dass er einen MP430 nimmt. Ich bin mir zwar 
ziemlich sicher, dass das bei dem genauso ist (alles andere wäre wohl 
dämlich zu nennen), aber mit dem MP hab ich nun mal keine Erfahrung.


swaechter, probiers halt einfach aus. Timer soll PWM erzeugen und in der 
ISR toggelst du eine LED. Plain and simpel. Danach weißt du es genau.

von Bernd (Gast)


Lesenswert?

TI-datasheet zum MSP430F22x4:

* Timer_A3
* Timer_A3 is a 16-bit timer/counter with three capture/compare
* registers. Timer_A3 can support multiple capture/compares,
* PWM outputs, and interval timing. Timer_A3 also has extensive
* interrupt capabilities.
* Interrupts may be generated from the counter on overflow
* conditions and from each of the capture/compare registers.

Wird wohl gehen!

von Physiologe (Gast)


Lesenswert?

swaechter schrieb:
> Mein Problem ist nun, dass ich jeden Array-Wert meines EKG Signals 160
> PWM-Durchgänge lang behalten möchte und dann soll der nächste Array-Wert
> in die PWM geholt werden.

Nachteil von dem Verfahren ist, dass eine Treppenfunktion als analoges 
Ausgangssignal herauskommt. Besser wäre eine lineare Interpolation 
zwischen den Stützstellen. Realisieren läßt sich das, indem bei jedem 
PWM-ISR ein Phasenackumulator hochgezählt und damit der neue PWM 
Schwellwert festgelegt wird.

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
Noch kein Account? Hier anmelden.