UP in gleichen Abständen aufrufen

Gast #1220933
Lesenswert?

Hallo,

ich programmiere noch nicht lange den MSP430 in C.

Nun will ich das Programmm PWM() in gleichen Abständen aufrufen.
Das Prog funktioniert nur hab ich es noch nicht geschafft dass es immer 
gleich kommt.

Ich hab folgendes "main" Prog:
1
 
2
void main (void)
3
  { 
4
    WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
5
    Init_Clocking();
6
    SETWDT1S;
7
    Init_Address();
8
    Init_UART();
9
    Init_IO();
10
    Init_ADC();
11
    Init_Timer();
12
    Init_LEDS();
13
    //P6OUT |= 0x40;  
14
    DataInLow = 0x00;
15
    DataInHigh = 0x00;
16
    DataOut = 0x00;
17
//    Set_Fresh_Data ();
18
//    P3DIR |= 0x10;              // P3.4 output direction TXD
19
    _BIS_SR(GIE);         //normaler Betrieb ohne Stromsparmodus
20
//    P1DIR |= 0x01;              // Set P5.1 to output direction
21
    
22
    while (1)
23
    {
24
      CLRWDT;//
25
      SETGIE;
26
      STATUS_Byte();
27
//      P1OUT ^= 0x01;      //nicht initialisiert 600ms ein 600ms aus
28
        ShowAdress();
29
            
30
      UARTCmdHndlr();
31

32
    }
33
  }

Das Prog PWM() soll im while (1) teil immer in gleichen Abständen 
aufgerufen werden. Wie kann ich das machen. Das Problem ist, dass die 
anderen Programme unterschiedlich lange brauchen.

Marc
Gast #1220941
Lesenswert?

Sollen die anderen Codeteile in der while(1) genau einmal pro Aufruf von 
PWM() aufgerufen werden (also in bestimmter Reihenfolge), oder so oft 
wie es der Controller in der Zwischenzeit schafft.

Im ersteren Fall: Im Timerinterrupt ein Flag setzen (global oder 
modulglobal ["static"] als volatile definiert!), in der Hauptschleife 
vor dem Aufruf ein
1
while (!bTimer)
2
    ;

Im letzteren Fall PWM() aus der Interruptroutine aufrufen. Ist nur 
sinnvoll möglich, wenn der Aufruf von PWM() nicht zu lange dauert.

Übrigens: PWM() ist kein "Prog", sondern eine "Funktion".

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