Forum: Mikrocontroller und Digitale Elektronik PWM furch Funktionsaufruf gestartet: Wie lange bleibt PWM am Ausgang aktiviert?


von Jannik (Gast)


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?

von toe (Gast)


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...

von Jannik (Gast)


Lesenswert?

Danke für Deine Info...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.