attiny 861 pwm probleme

Gast #3402612
Lesenswert?
• ▲
▼
Irgendwie bekomme ich die PWM Initialisierung bei dem Attiny861 nicht 
hin. Nur OC1D liefert ein Ausgangssignal im Fast PWM Modus.
Wär super wenn wer über meinen Code drüber schaun kann und den Fehler 
findet :). So langsam wirds frustrierend :/

1
void timer1_init(void)
2
{
3
  //Mode + Output einstellung
4
  //Fast PWM mode 8 Bit Timer 1, OC1A, OC1B und OC1D auf non-inverting output setzen  
5

6
  TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<PWM1A) | (1<<PWM1B);
7

8
  TCCR1C = (1<<COM1D1) | (1<<PWM1D);
9
  
10
  TCCR1D = (0<<FPIE1) | (0<<FPEN1) | (0<<FPNC1) | (0<<FPES1) | 
11
       (0<<FPAC1) | (0<<FPF1) | (0<<WGM11) | (0<<WGM10);
12

13
    //Top setzen
14
    OCR1C = 0xFF;
15
  
16
  //PLL init und starten
17
  PLLCSR = (0<<LSM) | (1<<PCKE) | (1<<PLLE);
18
  _delay_us(40);
19
  _delay_us(40);
20
  _delay_us(40);
21
  
22
  while(!(PLLCSR&0x01)) {} //stabilisierung der PLL abwarten
23

24
  OCR1A = 100; 
25
  OCR1B = 100; //Bestimmt den mittleren Strom durch die Spulen.
26
  OCR1D = 100; 
27

28
  //Timer aktivieren
29
  TCCR1B |= (1<<CS10);
30
}
Gast #3403510
Lesenswert?
• ▲
▼
Genau das wars, danke.
Hier noch mal die funktionierende Initialisierung:
1
void timer1_init(void)
2
{
3
  //Mode + Output einstellung
4
  //Fast PWM mode 8 Bit Timer 1, OC1A, OC1B und OC1D auf non-inverting output setzen  
5

6
  TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<PWM1A) | (1<<PWM1B);
7

8
  TCCR1C = (1<<COM1D1) | (1<<PWM1D) | (1<<COM1A1S) | (1<<COM1B1S);
9
  
10
  TCCR1D = (0<<FPIE1) | (0<<FPEN1) | (0<<FPNC1) | (0<<FPES1) | 
11
       (0<<FPAC1) | (0<<FPF1) | (0<<WGM11) | (0<<WGM10);
12

13
    //Top setzen
14
    OCR1C = 0xFF;
15
  
16
  //PLL init und starten
17
  PLLCSR = (0<<LSM) | (1<<PCKE) | (1<<PLLE);
18
  _delay_us(40);
19
  _delay_us(40);
20
  _delay_us(40);
21
  
22
  while(!(PLLCSR&0x01)) {} //stabilisierung der PLL abwarten
23

24
  OCR1A = 100; 
25
  OCR1B = 100; //Bestimmt den mittleren Strom durch die Spulen.
26
  OCR1D = 100; 
27

28
  //Timer aktivieren
29
  TCCR1B |= (1<<CS10);
30
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.