PWM- wie lange wird PWM für einen Wert ausgeführt

Gast #2667120
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!
Gast
"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.
> 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.
Gast
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!
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.