Hallo,
ich versuche gerade auf dem MSP430G2211 vom Launchpad eine 8-bit PWM zu
implementieren. Ich benutze ich die an Port1.0 angeschlossene LED zur
Visualisierung des Ergebnisses.
Leider funktioniert mein Code nicht.
Wenn ich bei Code Composer Studio auf DEBUG gehe, dann geht nur LED1 an
und blinkt fast nicht merklich alle 2-3 Sekunden.
Mein Oszilloskop zeigt an, dass ich 50% Duty-Cycle bei 25Hz habe (20ms
on, 20 ms off).
Dazu kommt ein generelles Problem: Bei wie viel Hertz läuft der
Prozessor denn? 1MHz, 4.8 Mhz, ...?
Hier ist mein Code:
1 | #include <msp430x20x3.h> //Chiparchitektur für Compiler
|
2 | #define BUTTON BIT3;
|
3 | #define LED1 BIT0;
|
4 | #define LED2 BIT6;
|
5 |
|
6 | int counter;
|
7 | int counter2;
|
8 | int buttoncounter;
|
9 | int value;
|
10 | int direction;
|
11 |
|
12 | const int debounce = 5000;
|
13 | const int maximum = 255;
|
14 |
|
15 | void main(void)
|
16 | {
|
17 | WDTCTL = WDTPW + WDTHOLD;// Watchdog anhalten
|
18 | P1DIR |= BIT0 | BIT6;// P1.0 und P1.6 als Ausgang definieren
|
19 | counter = 0;
|
20 | counter2 = 0;
|
21 | value = 0;
|
22 | direction = 0;
|
23 |
|
24 | while(1)//Hauptschleife
|
25 | {
|
26 | counter ++;
|
27 |
|
28 | counter2++;
|
29 |
|
30 | if(counter2 == 2000){
|
31 | value = value + direction;
|
32 | counter2 = 0;
|
33 | }
|
34 |
|
35 | if(value == maximum){
|
36 | direction = -1;
|
37 | }
|
38 |
|
39 | if(value == 0){
|
40 | direction = 1;
|
41 | }
|
42 |
|
43 | if(counter == 0){
|
44 | P1OUT ^= LED1; //LED toggeln
|
45 | }
|
46 |
|
47 | if(counter == value){
|
48 | P1OUT ^= LED1;
|
49 | }
|
50 |
|
51 | if(counter == maximum){
|
52 | counter = 0;
|
53 | }
|
54 | }
|
55 | }
|
Ich würde mich freuen, wenn ihr mir helfen könnt.
Mit freundlichen Grüßen,
Valentin Buck