ATtiny2313: Problem mit Fast-PWM an Timer1

Gast #2389308
Lesenswert?
• ▲
▼
Hallo,
ich verwende den ATtiny2313 und brauche drei PWM-Kanäle im 
Fast-PWM-Modus zur phasenverschobenen Sinuserzeugung. Die beiden Kanäle 
des Timer0 funktionieren wie sie sollen bei ca. 30kHz. Der eine Kanal 
des Timer1 bleibt allerdings bei 15-16kHz, sprich: der Hälfte. Dabei 
sind doch eigentlich beide korrekt eingestellt. Wo liegt der Fehler? Ich 
habe jetzt stundenlang gesucht und weiß nicht weiter.

Hier ein Auszug aus dem Quellcode:
1
#ifndef F_CPU
2
  #warning "F_CPU not defined"
3
  #define F_CPU 8000000UL
4
#endif
5
#include <inttypes.h> 
6
#include <avr/io.h>
7
#include <stdlib.h>
8
#include <util/delay.h>
9

10
int main() {
11
  DDRA = 0b11111111;
12
  DDRB = 0b11111111;  
13
  DDRD = 0b11111111;    
14
  
15
  TCCR0A |= (1<<COM0A1) | (1<<COM0B1) | (1<<WGM01) | (1<<WGM00);      //einstellungen für die PWM
16
  TCCR0B |= (1<<CS00);
17

18

19
  TCCR1A |= (1<<WGM12) | (1<<WGM10) | (1<<COM1A1) | (1<<COM1B1);      //einstellungen für die PWM
20
  TCCR1B |= (1<<CS10);
21

22
  
23
  int s = 0;                //zaehlvariable fuer sinus  
24
  unsigned char sinus[61] = {127,149,170,191,209,224,237,246,252,254,252,246,237,224,209,191,170,149,127,105,84,64,45,30,17,8,2,0,2,8,17,30,45,63,84,105,127,149,170,191,209,224,237,246,252,254,252,246,237,224,209,191,170,149,127,105,84,63,45,30,17};
25

26
  unsigned long int zeit = 20000;
27

28
  while(1){
29
    for(unsigned long int i = 0; i < zeit; i++) {
30
      _delay_us(1);
31
    }
32
    if(s == 36){
33
      s = 1;
34
    }
35
    else{
36
      s ++;
37
    }
38
     OCR0A = sinus[s];
39
     OCR0B = sinus[s + 12];
40
    OCR1B = sinus[s + 24];
41
  }
42
  return(0);
43
}

Das delay kommt in der finalen Version natürlich raus.
Ich hoffe, ihr könnt mir helfen! Schöne Grüße Joo

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.