mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 F5529 Wobbel-Generator


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich bin Schüler und arbeite momentan im Rahmen des 
Informatik-Unterrichtes mit dem MSP430 F5529. Mit anderen Worten: ich 
bin blutiger Anfänger, also bitte Geduld aufbringen!

Folgende Problemstellung:
Erstellen eines Wobbelgenerators mit variabler Frequenz sowie variabler 
Pulsbreite (beides in Grenzen)
Also zwei unterschiedliche Betriebsarten in C programmieren.
Frequenz-Wobbel (100Hz …. 2kHz) und dann Pulsbreite-Wobble bei einer 
festen Frequenz. mit einer Pulsbreite von ca. 2% …. Ca. 98% (in etwa).

Als kleine optionale Erweiterung: die oben genannten Funtionen mit einem 
Poti realisieren (was könnte in diesem Zusammenhang der Begriff ADC 
bedeuten? AD-Wandler? was hat das jz mit dem Poti und dem Programmieren 
zu tun?)

Was mir bekannt ist:

Funktionsweise des Timers im Up-Mode, weitere Funktionen des MSP kann 
ich mir anlesen. Grundsetzlich kann ich alles wissen, was im UserGuide 
von dem Gerät steht respektive könnt ihr bei euren Ausführungen 
voraussetzen.


Woran es mangelt:
Habe so ziemlich null Erfahrung mit programmieren, C soll ja nicht 
unbedingt einfach sein. (Aber bitte jetzt nicht stumpf Link zum 
nächstbesten Tutorial schicken) Mir wäre mit Beispielprogrammen, die ein 
sehr ähnliches Thema behandeln, am meisten geholfen. (Oder gibt es schon 
Programme in C für einen Wobbel-generator ?)


Meine ersten Schritte wären:
-Mit der Funktionsweise eines Wobbelgenerators vertraut machzen 
(überhaupt notwenig??? Wenn ja, was muss man zum Programmieren wissen?)
-PAP erstellen für beide Varianten (Wie würdet ihr das angehen?)
-Programm erstellen
-später dann: Messungen mit dem Oszi durchführen
-Anregungen von euch, was man noch so anstellen kann?


Hat vielleicht sogar jmd Zeit, mein Projekt langfristig zu begleiten 
(mit hilfreichen Tipps und Tricks). Sollte ich mal millionen verdienen, 
würde ich mich entsprechend kenntlich zeigen =)


Freue mich über jede noch so kleine Antwort. Schoneinmal vielen Dank 
dafür.

Grüße

Antonow

von Ralph S. (jjflash)


Bewertung
0 lesenswert
nicht lesenswert
Oha, ein F5529 ist ein nicht ganz so häufig vorkommendes Exemplar eines 
MSP430 und dir wurde ein Launchpad zur Lösung deiner Aufgabe zur 
Verfügung gestellt.

Leider habe ich einen so großen MSP nicht, aber ich kann dir ein paar 
kleine Antworten geben:

Antonowan225 schrieb:
> (was könnte in diesem Zusammenhang der Begriff ADC
> bedeuten? AD-Wandler?

ADC steht für: Analog-Digital-Converter und ist tatsächlich der 
Wanalog-Digital-Wandler.

Antonowan225 schrieb:
> was hat das jz mit dem Poti und dem Programmieren
> zu tun?)

Mit dem Poti soll wohl ein Spannungteiler aufgebaut werden und somit 
wird eine Spannung verfügbar, die eben der Einstellung des 
Potenziometers entspricht.

Mittels des ADC kannst du diese Spannung einlesen und hast somit eine 
Abfrage, wie der Poti "eingestellt ist".

Mittels dieses eingelesenen Wertes kannst du die PWM-Register 
(Pulsweitermodulation) des Controllers beschreibe der seinerseits eben 
wieder den Tastgrad (Pulszeit zu Gesamtzeit) einstellt... oder du 
beschreibst damit ein Timerregister und stellst damit die Frequenz bspw. 
ebenfalls über PWM bei 50% Tastgrad ein.

Prinzipiell sollte das relativ einfach gehen, aber in Ermangelung eines 
solchigen Chips kann ich dir kein Programmbeispiel geben.

Welche Toolchain (Grundsätzliche Software bestehend aus Compiler, Linker 
und Uploadsoftware) steht dir hierfür zur Verfügung?

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ralph S. schrieb:
> elche Toolchain (Grundsätzliche Software bestehend aus Compiler, Linker
> und Uploadsoftware) steht dir hierfür zur Verfügung?

Hey Ralph,

ich bin mir nicht ganz sicher, was du damit meinst. Ich arbeite mit IAR 
Embedded Workbench.

LG

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> Erstellen eines Wobbelgenerators mit variabler Frequenz sowie variabler
> Pulsbreite (beides in Grenzen)

Bei "Wobbel" denke ich an Sinus-Schwingungen, aber ich vermute mal, du 
sollst ein Digitalsignal ausgeben?

> Grundsetzlich kann ich alles wissen, was im UserGuide
> von dem Gerät steht

Für PWM-Signale siehe Abschnitt 17.2.5.1.1.

> Also zwei unterschiedliche Betriebsarten in C programmieren.
> Frequenz-Wobbel (100Hz …. 2kHz) und dann Pulsbreite-Wobble bei einer
> festen Frequenz. mit einer Pulsbreite von ca. 2% …. Ca. 98% (in etwa).

Also brauchst du noch einen Timer, der CCR0 bzw. CCRn regelmäßig ändert.
(Oder ohne Timer mit __delay_cycles() order so, aber das ist nicht so 
genau.)

> Mir wäre mit Beispielprogrammen, die ein
> sehr ähnliches Thema behandeln, am meisten geholfen.

MSP430F55xx_Code_Examples\C\MSP430F55xx_ta1_16.c
MSP430F55xx_Code_Examples\C\MSP430F55xx_adc_07.c

> -PAP erstellen für beide Varianten (Wie würdet ihr das angehen?)

Ein PAP ist hilfreich, um einen Algorithmus zu dokumentieren. Wenn du 
den Algorithmus noch nicht kennst, dann ist die Erstellung eines PAPs 
eher der letzte Schritt.

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Clemens L. schrieb:
> Bei "Wobbel" denke ich an Sinus-Schwingungen, aber ich vermute mal, du
> sollst ein Digitalsignal ausgeben?

Wo wäre der Unterschied hinsichlich Programm?

Clemens L. schrieb:
> Für PWM-Signale siehe Abschnitt 17.2.5.1.1.

Vielen Dank für den Hinweis!

Clemens L. schrieb:
> Also brauchst du noch einen Timer, der CCR0 bzw. CCRn regelmäßig ändert.
> (Oder ohne Timer mit __delay_cycles() order so, aber das ist nicht so
> genau.)

Noch einen Timer? meinst du Timer B ?

Clemens L. schrieb:
> MSP430F55xx_Code_Examples\C\MSP430F55xx_ta1_16.c
> MSP430F55xx_Code_Examples\C\MSP430F55xx_adc_07.c

https://github.com/noccy80/mspdev/tree/master/reference/MSP430ware/examples/devices/5xx_6xx/MSP430F55xx%20Code%20Examples/C

Kann ich mir die Sachen hier ziehen?

Clemens L. schrieb:
> Ein PAP ist hilfreich, um einen Algorithmus zu dokumentieren. Wenn du
> den Algorithmus noch nicht kennst, dann ist die Erstellung eines PAPs
> eher der letzte Schritt.

uns wurde das im unterrricht so vermittelt, dass der PAP als erste, 
spontane Idee zu Blatt gebracht wird (als Grundgedanke/ grobe Struktur) 
und das Programm das daraus re4sultierende Endergebnis ist.

VLLT MAL AN ANDERE: wozu nutzt ihr einen PAP? Vor dem eigentlichen 
Programm sinnvoll?


Vielen lieben Dank Clemens

von Klaus R. (klara)


Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> Clemens L. schrieb:
>> Ein PAP ist hilfreich, um einen Algorithmus zu dokumentieren. Wenn du
>> den Algorithmus noch nicht kennst, dann ist die Erstellung eines PAPs
>> eher der letzte Schritt.

Das trifft wohl auch für Anfänger zu. In deinem Fall würde ich auf die 
Examples aufsetzen um als erstes einen lauffähigen Code zu haben. 
Nachdem Du ihn verstanden hast würde ich ihn im nächsten Schritt um eine 
weitere Anforderung erweitern. So gehst Du Schritt für Schritt voran.

Irgendwann wird man dann die Struktur womöglich verbessern. Auf jeden 
Fall ist es wichtig zuerst mit dem ADC und dann mit dem Timer klar zu 
kommen. Ein PAP ist eigentlich in erster Linie bei komplexeren 
Zusammenhängen hilfreich, um möglichst alle Entscheidungsvarianten 
erkennen zu können, bzw. um nicht wichtige Varianten zu übersehen. Zur 
Doku ist ein PAP auch nicht schlecht, gute Kommentare im Source genügen 
eigentlich auch.
mfg Klaus

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Klaus R. schrieb:
> Fall ist es wichtig zuerst mit dem ADC und dann mit dem Timer klar zu

Danke für deine Meinung. Warum ist das so wichtig? Denn die mir 
vorliegende Aufgabenstellung verlangt es umgekehrt...

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> Clemens L. schrieb:
>> Bei "Wobbel" denke ich an Sinus-Schwingungen, aber ich vermute mal, du
>> sollst ein Digitalsignal ausgeben?
>
> Wo wäre der Unterschied hinsichlich Programm?

Der MSP hat keinen eingebauten DAC; der Unterschied ist, ob es überhaupt 
geht. :)

> Noch einen Timer? meinst du Timer B ?

Du hast 3x Timer_A und 1x Timer_B, mit insgesamt 18 CC-Registern.

> Kann ich mir die Sachen hier ziehen?

Die offizielle Quelle ist 
http://www.ti.com/product/MSP430F5529/toolssoftware#softTools

> uns wurde das im unterrricht so vermittelt, dass der PAP als erste,
> spontane Idee zu Blatt gebracht wird (als Grundgedanke/ grobe Struktur)
> und das Programm das daraus re4sultierende Endergebnis ist.

In der Praxis sind die Datenstrukturen und ihre Beziehungen meist viel 
wichtiger als der Code.

Aber bei so einem kleinen Mikrocontroller-Programm hast du nicht viele 
Daten.

Wenn dein Lehrer Kästchen und Pfeile sehen will, dann könntest du auch 
die Hardware-Module (ADC, CPU, Timer, Digital I/O) und ihre 
Zusammenarbeit darstellen.

> Klaus R. schrieb:
>> zuerst mit dem ADC und dann mit dem Timer
>
> Warum ist das so wichtig?

Ist es nicht. Und der Timer-Ausgang lässt sich leichter beobachten ...

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Clemens L. schrieb:
> Wenn dein Lehrer Kästchen und Pfeile sehen will, dann könntest du auch
> die Hardware-Module (ADC, CPU, Timer, Digital I/O) und ihre
> Zusammenarbeit darstellen.

Wie würde das denn zum Beispiel für einen Wobbel-generator aussehen?

von Clemens L. (c_l)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> Wie würde das denn zum Beispiel für einen Wobbel-generator aussehen?

Deine Hausaufgaben darfst du selber machen. :)  Ganz grob so.

von Henry (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Erstmal das Lastenheft komplett befüllen, bevor hier Fragen beantwortet 
werden, die nie gestellt wurden:

Welche Auflösung soll der Frequenz-Wobbel haben?

Nur 1 Poti? oder 1 für die Frequenz und 1 für das PWM?

Kurvenform Wobbelgenerator: Rechteck/Sinus/Sägezahn?

von Henry (Gast)


Angehängte Dateien:
  • preview image for uc.JPG
    uc.JPG
    11,9 KB, 72 Downloads

Bewertung
-2 lesenswert
nicht lesenswert
PAP für einen Microcontroller. Bitte weiter befüllen...

von fertig (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> Freue mich über jede noch so kleine Antwort.

sehr klein
Beitrag "MSP430G2553 PWM Duty Cycle mit Poti einstellen"

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Henry schrieb:
> Welche Auflösung soll der Frequenz-Wobbel haben?
>
> Nur 1 Poti? oder 1 für die Frequenz und 1 für das PWM?
>
> Kurvenform Wobbelgenerator: Rechteck/Sinus/Sägezahn?

Was meinst du mit Auflösung? Du meinst wenn das diskrtete Signal vom 
A/D- Wandler ausgegebnen wird? das würde ja nur die zweite Aufgabe mit 
dem poti betreffen, richtig?

Zwei Potis habe ich, also ein Poti je Funktion

Kurvenform Rechteck, wie würde ein Pulsbreite-Wobbel aussehen?

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
fertig schrieb:
> Beitrag "MSP430G2553 PWM Duty Cycle mit Poti einstellen"

Danke für den Hinweis

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> Kurvenform Rechteck, wie würde ein Pulsbreite-Wobbel aussehen?

Die Frage lautet: wie würde ein Pulsbreite-Wobbel für eine Sinusfunktion 
aussehen?



MAL EINE ANDERE FRAGE: kennt jemand eine gute IAR EMBEDDED Workbench 
EInführung auf Deutsch?

von Klaus R. (klara)


Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> MAL EINE ANDERE FRAGE: kennt jemand eine gute IAR EMBEDDED Workbench
> EInführung auf Deutsch?

Du arbeitest doch mit einem TI Prozessor. Warum nutzt Du nicht das Code 
Composer Studio. Ab Version 7 ist CCS kostenlos und nicht mehr im 
Speicher limitiert. Dazu gibt es einiges an Unterstützung.

http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html
mfg klaus

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Klaus R. schrieb:
> Du arbeitest doch mit einem TI Prozessor. Warum nutzt Du nicht das Code
> Composer Studio. Ab Version 7 ist CCS kostenlos und nicht mehr im
> Speicher limitiert. Dazu gibt es einiges an Unterstützung.
>
> http://software-dl.ti.com/ccs/esd/documents/ccs_downloads.html
> mfg klaus

danke für den Hinweis, leider ist IAR von der Schule vorgegeben

von Klaus R. (klara)


Bewertung
0 lesenswert
nicht lesenswert
Antonowan225 schrieb:
> danke für den Hinweis, leider ist IAR von der Schule vorgegeben

Der IAR ist nicht schlecht. Im Gegenteil. Ich konnte vor einigen Jahren 
damit besser debuggen. Erst mit CCS 7 hat TI für die Free-Version die 
Einschränkung des nutzbaren Speichers aufgehoben. Jetzt ist TI bei CCS 
9.2. Ich könnte mir vorstellen das TI dem MSP - µC besser unterstützt 
als IAR der nicht so typbezogen ist.

Jedenfalls sind IAR und CCS gegen über anderen Entwicklungsumgebungen 
schon sehr komfortabel. Das wurde mir hier im Forum von Experten so 
bestätigt.
mfg Klaus

von pumuggl (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Es waere nicht ganz verkehrt, mit dem MSP430 ueberhaupt
mal ein Rechteck mit dem Timer zu erzeugen.

Mehr als:

> Was mir bekannt ist:
>
> Funktionsweise des Timers im Up-Mode

braucht es ja fast nicht.

Oder wartest du darauf das dir jemand deinen A.sch hinterhertraegt?

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
pumuggl schrieb:
> Oder wartest du darauf das dir jemand deinen A.sch hinterhertraegt?

okay ich weiß jz grob, wie ich die Sache angehen möchte:

zunächst den Pulswobbel erarbeiten

- Frequenz auf 50 Hz festlegen: Submasterclock verwendet, ergibt 20960
(entspräche doch in Abhängigkeit vom Timer TA0ccr0/TB0CCR0)

- maximale Breite festelgen (in Prozent PWM_Max= 0.95*20960)
- minimale B. festlegen 0,05 * 20960
- Schrittweite Festlegen PWM_S= 0,05*20960
(sind diese drei Sachen variablen oder definitionen?)
- würde dazu den OUTMOD_3 des Timers A wählen (set/reset)
-Pulsbreite high, wenn interrupt vektor TA0ccr1 (wird dieser wert 
automatisch generiert, dadurch dass ich die frequenz mit ta0ccr0= 20960 
gesetzt habe? oder muss ich den ausrechnen?)
-pulsbreite low, wenn interrupt vektor TA0ccr1 kommt
-entprellen der taster
-das ergebnis an einer led zeigen

woher weiß ich, welche ports ich konfigurieren muss? was gibt es da zu 
konfigurieren?
was schreibt ihr in die Bedienung des watchdog- Timers?
Wie kann ich sehen, was in meiner Header-Datei "msp430f5529.h" enthalten 
ist?

von Clemens L. (c_l)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Du musst CCR0 so setzen, dass die gewünschte Frequenz heraus kommt.
Du musst CCR1 auf einen Wert zwischen 0 und CCR0 setzen; es bestimmt die 
Zeitdauer, für die der Ausgang low ist.

Wenn du z.B. TA0 für die PWM-Ausgabe nimmst, dann solltest du den 
Interrupt eines anderen Timer-Moduls (TA1/TA2/TB0) nehmen, um regelmäßig 
Frequenz bzw. Pulsbreite zu ändern.

Antonowan225 schrieb:
> woher weiß ich, welche ports ich konfigurieren muss?

Wie man in Tabelle 6-11 des MSP430F5529-Datenblatts sieht, gibt es für 
TA0.1 nur einen möglichen Pin. Die Konfiguration findest du in Abschnitt 
6.10.

> was schreibt ihr in die Bedienung des watchdog- Timers?

Brauchst du ihn? Wenn nicht, abschalten.

> Wie kann ich sehen, was in meiner Header-Datei "msp430f5529.h" enthalten
> ist?

Das ist eine normale Textdatei ...

: Bearbeitet durch User
von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Clemens L. schrieb:
> Interrupt eines anderen Timer-Moduls (TA1/TA2/TB0) nehmen, um regelmäßig
> Frequenz bzw. Pulsbreite zu ändern.

was meinst du damit?

von Clemens L. (c_l)


Bewertung
0 lesenswert
nicht lesenswert
TA0 läuft automatisch, und braucht keinen Interrupt-Handler.

TA1 hat einen Interrupt-Handler, der TA0CCR0/1 ändert.

von Antonowan225 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Clemens L. schrieb:
> TA0 läuft automatisch, und braucht keinen Interrupt-Handler.
>
> TA1 hat einen Interrupt-Handler, der TA0CCR0/1 ändert.

danke für deine Antwort

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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.