MSP430 Piezo Probleme

OP #4098091
Lesenswert?

Hallo zusammen,

vorab ein danke an alle für eure Hilfe.

Durch meinen letzten Beitrag im Forum bin ich schlauer geworden wie mit 
einem piezo über Programmierung des msp430 Töne erzeugt werden können.

Nach dem ich die Informationen alle hatte habe ich mich an die 
Programmierung gemacht:
1
#include <msp430.h> 
2
#include <msp430g2452.h>
3

4
#define BUZZER BIT4
5

6
/*4kHz = 1 mhz / 4kHz = 250 ccr
7
 * P1.4 BUZZER TA0.2
8
 */
9
int main(void) {
10
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer
11

12
    DCOCTL = CALDCO_8MHZ;      //CPU Geschwindigkeit auf 8Mhz einstellen
13
    BCSCTL1 = CALBC1_8MHZ;
14
    BCSCTL2 = DIVS_3;        //Die SMCLK auf 1 MHZ einstellen mit dem vorteiler
15
                    //(8 (DCO/8 = 1Mhz))
16

17
    // Ports für den buzzer
18
    P1SEL = BUZZER;          //Ausgang timer a nutzen TimerA0.2
19
    P1SEL2 = BUZZER;
20
    P1DIR = BUZZER;
21

22

23
    //TimerA
24
    TA0CTL = TASSEL_2 + ID_0 + MC_1;// SMCLK für timer clock verwenden, up mode
25
    TACCR0 = 500;          // 2kHz; TimerA
26
    TACCR1 = 250;          // Länge der dauer von high und low
27
    CCTL1 = OUTMOD_7;        // Reset/ Set
28

29
   while(1){}
30
  //damit keine warnung
31
  //return 0;
32
}

ich nutze den folgende Piezo
http://media.digikey.com/pdf/Data%20Sheets/TDK%20PDFs/PS2220P02%20ENG3.pdf

leider kommt kein ton, auch nicht ein knacken was meiner meinung nach 
beim einschalten doch passiert sollte da der piezo doch Strom bekommt.

ich stell mir das vor wie erschrocken zu werden (kurz zucken und das war 
es) macht er aber leider nicht.

könntet ihr mir bitte helfen und einen blick über meinen code werfen?
muss ich eine ISR für die CCR0 & CCR1 erstellen?

danke
OP #4098179
Lesenswert?

Tim H. schrieb:
> TACCR1 = 250;          // Länge der dauer von high und low

Hallo Easy,

ich habe folgende Zeile geändert im Code, aber es tut sich nichts.
zum Verständnis.

die angaben im Datenblatt mit Timer_Ax.2 ....

da bezieht sich hinter dem Punkt die zahl auf das CCRx register?


ich habe nicht nach gedacht das dass Thema ja das gleiche ist 
Entschuldigung.
OP #4098245
Lesenswert?

Tim H. schrieb:
> CCTL1 = OUTMOD_7;        // Reset/ Set

hallo zusammen ich habe meinen Fehler gefunden.

danke Easy für die Hilfe.

habe das glaube ich jetzt verstanden.
Die angeben mit dem TA0.2 bedeuten das ich auch die CCTL2 nutzen muss 
genau so wie das CCR2.

Kurz gesagt die 2 im Daten Blatt (TA0.2) sagt mir welches CCRx und 
welches CCTLx ich nutzen muss um an dem pin den Timer zu nutzen.

der neue code sieht wie folgt aus:
1
#include <msp430.h> 
2
#include <msp430g2452.h>
3

4
#define BUZZER BIT4
5

6
/*4kHz = 1 mhz / 4kHz = 250 ccr
7
 * P1.4 BUZZER TA0.2
8
 */
9
int main(void) {
10
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer
11

12
    DCOCTL = CALDCO_8MHZ;      //CPU Geschwindigkeit auf 8Mhz einstellen
13
    BCSCTL1 = CALBC1_8MHZ;
14
    BCSCTL2 = DIVS_3;        //Die SMCLK auf 1 MHZ einstellen mit dem vorteiler
15
                    //(8 (DCO/8 = 1Mhz))
16

17
    // Ports für den buzzer
18
    P1SEL = BUZZER;          //Ausgang timer a nutzen TimerA0.2
19
    P1SEL2 = BUZZER;
20
    P1DIR = BUZZER;
21

22

23
    //TimerA
24
    TA0CTL = TASSEL_2 + ID_0 + MC_1;// SMCLK für timer clock verwenden, up mode
25
    TACCR0 = 500;          // 2kHz; TimerA
26
    TACCR2 = 250;          // Länge der dauer von high und low
27
    TACCTL2 = OUTMOD_6;        // Reset/ Set
28

29
   while(1){}
30
  //damit keine warnung
31
  //return 0;
32
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren