PWM furch Funktionsaufruf gestartet: Wie lange bleibt PWM am Ausgang aktiviert?

Gast #804561
Lesenswert?
• ▲
▼
Ich habe folgenden Code gebastelt (für ATTiny 45):
1
/****************************/
2
/***     PWM Funktion     ***/
3
/****************************/
4

5
void PWM(uint8_t PWM_rate)
6
{
7
  if (PWM_rate == 0)
8
    {
9
    TCCR1 = 0x0f;       // PWM-Timer1 anhalten
10
    Last = aus;     // Last ausschalten
11
    }
12
  else
13
    {
14
    TCCR1 = (1<<PWM1A) | (1<<COM1A1) | (1<<COM1A0) | (1<<CS12);
15
    OCR1C = 199;    // ==> PWM Frequenz = 40 kHz
16
    OCR1A = PWM_rate;
17
    }
18
}
19

20
/****************************/
21
/***         Main         ***/
22
/****************************/
23
void main(void)
24
{
25
  [...]
26
  if (Schalterlaubnis)
27
  {
28
   // Last einschalten
29
   PWM(168);
30
  }
31
  else
32
  {
33
    // Last ausschalten
34
    PWM(0);         // PWM ausschalten
35
  }
36
  [...]
37
}

Wenn ich im Hauptprogramm die Funktion PWM aufrufe und den Timer starte 
sollte die PWM am Ausgang OC1A loslegen und solange aktiv bleiben bis 
ich sage Timer1 stopp (PWM(0))!
Ich stell mir das so vor: Ich springe in die Funktion PWM mit einem Wert 
und starte den Timer. Solange ich jetzt im Hauptprogramm bin, läuft die 
PWM am Ausgang bis ich die Funktion nochmal aufrufe und den Timer 
stoppe?
Gast #804564
Lesenswert?
• ▲
▼
Wenn du keinen Fehler im Code hat, dann läuft der PWM-Timer solange, bis 
du ihn wieder anhälst. Also so, wie du es möchtest. Im Zweifelsfall 
einfach am Ausgang messen was passiert oder im Studio debuggen...

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