mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 - PWM


Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein Development board von Olimex mit dem Msp430f1611.
Schaltplan: http://www.olimex.com/dev/images/msp430-pxxx-sch.gif

Als Quarz (Q2) befindet sich ein 8Mz Quarz auf dem Board.

Ich versuche eine PWM zu Programmieren mit dem Up/down-mode vom TimerA. 
Das Dreieckssignal soll eine Frequenz von 3kHz haben.

Um das grob zu überprüfen habe ich die zeit für 12000 
interrupt-auslösungen bestimmt. Bei 3kHz sollte es ca 2s dauern. Real 
dauert es aber ca 12s.

Habt ihr eine Idee woran es liegen könnte?

Hier ist mein bisheriger Code:
http://nopaste.info/817a1e47c3.html

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SMCLK läuft tatsächlich mit 8MHz?

>Ich versuche eine PWM zu Programmieren mit dem Up/down-mode vom TimerA
Du hast aber auf Up-Mode eingestellt (MC_1), was ich eigentlich für PWM 
auch besser finde...

C-Code kannst du übrigens auch direkt in deinen Beitrag einfügen (Siehe 
Formatierungsoptionen).

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, mit ACLK und dem entsprechendem "hig frequenz bit" läuft es :)

Leider bin ich schon aufs nächste Problem gestoßen.

Die PWM soll ein sinus erzeugen, dafür wollte ich zunächst eine Tabelle 
mit sinuswerten anlegen, jedoch bekomme ich beim berechnen der 
Sinuswerte die Fehlermeldung: "The stack pointer for stack "Stack" is 
outside the stack range"

Code:
[c]int main()
{
int i=0;
int sin_tabelle[1333];

for(i=0;i<1333;i++)
{
sin_tabellie[i]=(int)(sin(i)*1333);
}

.
.
.

}[\c]

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
user schrieb:
> Die PWM soll ein sinus erzeugen, dafür wollte ich zunächst eine Tabelle
> mit sinuswerten anlegen, jedoch bekomme ich beim berechnen der
> Sinuswerte die Fehlermeldung: "The stack pointer for stack "Stack" is
> outside the stack range"
Das heisst das der Stack die "Warnschwelle" überschritten hat, die du im 
Compiler eingestellt hast.
Entweder ignorieren, oder den Stack Bereich vergrößern (so das 
sin_tabelle[] rein passt). Das ändert an deinem Programm aber nichts. 
Die Stack Einstellung im Compiler ist nur eine Hilfe für dich.
Wenn es auf Geschwindigkeit ankommt, sollte man sin_tabelle[] vielleicht 
auch eher als globale Variable anlegen, dann muss sie nicht erst auf den 
Stack kopiert werden.

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, ich habe jetzt die Sinustabelle global deklariert. Dadurch 
bekomme ich die Warnmeldung nicht mehr aber dennoch läuft das Programm 
nicht. Die for-Schleife wird nur bis i=9 ausgeführt, danach beginnt das 
Programm von vorne.

Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int i=0;
int sin_tabelle[1333];

for(i=0;i<1333;i++)

Kann Dein i jemals den Wert 1333 erreichen?

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, i kann maximal 1332 werden

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
user schrieb:
> Die for-Schleife wird nur bis i=9 ausgeführt, danach beginnt das
> Programm von vorne.

Entweder dein Speicher laeuft ueber oder der Watchdog bellt dazwischen ?

Gruss Helmi

Autor: user (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Watchdog wars.

Danke für deine schnelle 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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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