Fast PWM (benutzerdefinierte Obergrenze) auf Atmega168

Gast #4991643
Lesenswert?
• ▲
▼
Guten Tag,

ich hätte eine Frage zur Fast PWM mit benutzerdefinierter Obergrenze auf 
dem Atmega168.

Ich habe nachfolgenden Code geschrieben, auf dem Ausgang PD6 liegt 
jedoch durchgehend ein High Pegel an und ich bekomme die PWM nicht zum 
laufen. Hat jemand eine Idee was ich falsch mache?

Und schonmal vielen Dank :)
1
#include <avr/io.h>
2
#include <math.h>
3

4
//Digital Pin 6 (PD6 / OC0A) PWM
5

6
#define NO_OF_SAMPLES 100
7
#define STEP_X 2.0 * PI / NO_OF_SAMPLES
8
#define DELTA_TIME2OUT (0.5/NO_OF_SAMPLES) * 1000
9

10
int main(void)
11
{
12
  double x = 0.0, y;
13
  long oldTime = millis();
14

15
  //Define PD6 as Output
16
  DDRD |= 1<<DDD6;
17
  
18
  //Configure Timer0
19
  
20
  //Set Prescaler to 1 (internal clock)
21
  TCCR0B &= ~(1<<CS02 | 1<<CS01);
22
  TCCR0B |= 1<<CS00;
23
  
24
  //Set Timer Mode to Fast PWM with OCR0A as upper limit
25
  TCCR0B |= 1<<WGM02;
26
  TCCR0A |= 1<<WGM01 | 1<<WGM00;
27
  
28
  //Set PWM Mode: Non inverting - Clear OC0A on Compare Match,
29
  //set OC0A at BOTTOM
30
  TCCR0A |= 1<<COM0A1;
31
  TCCR0A &= ~(1<<COM0A0);
32

33

34
  OCR0A = 0x00;
35

36

37
  while(1)
38
  {
39
         
40
      OCR0A += 50;
41
      _delay_ms(200);
42

43
  }
44
  
45
}
#4991655
Lesenswert?
• ▲
▼
@Dom (Gast)

>ich hätte eine Frage zur Fast PWM mit benutzerdefinierter Obergrenze auf
>dem Atmega168.

Da hast du mit PD6 / OC0A aber das falsche Pin ausgewählt. Denn im Timer 
Mode 7 / Fast PWM mit Obergrenze in OCR0A kann man logischerweise nur 
noch mit OCR0B eine PWM erzeugen. Und dann sollte man auch nicht 0x00 in 
ORC0A reinschreiben sondern eine sinnvolle Zahl.

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.