PWM ATtiny841 läuft falsch

Gast #4029104
Hab ein Problem, dass meine PWM nicht richtig dimmt. Die LED ist fast 
dauerhaft an. NUr nach wenigen Sekunden sieht man irgendwann einmal dass 
sie runterdimmt.

Würde gernen einen 20kHz PWM Timer aufbauen mit einer Auflösung von 9 
oder 10Bit. F_CPU = 8E6. Habe noch nicht nicht den richtigen Tipp im 
Datenblatt umsetzen können.
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <avr/interrupt.h>
4

5
#define RED_DDR    DDRB
6
#define RED_PORT  PORTB
7
#define RED_PIN    PORTB2
8

9
int main(void)
10
{
11

12
  // Set DDR
13
  RED_DDR |= (1<<RED_PIN);
14
  
15
  // FastPWM non-inverted |  9-Bit
16
  TCCR1A |= (1<<COM1A1) | (1<<WGM11);
17
  TCCR1B |= (1<<WGM12);
18
  
19
  // Prescaler /256
20
  TCCR1B |= (1<<CS12);
21
  
22
  // Pin Mux Selection Register
23
  // TOCC7 (PORTB2) -> 01
24
  TOCPMSA1 |= (1<<TOCC7S0);
25
  
26
  // Output Enable
27
  TOCPMCOE |= (1<<TOCC7OE);
28
  
29
  // Reset Timer-Value
30
  OCR1A = 0;
31

32
  sei();
33
  
34
  while(1)
35
  {
36
    while(OCR1A < 511) { OCR1A++; _delay_ms(50); }
37
    while (OCR1A > 0) { OCR1A--; _delay_ms(50); }
38
  }
39
}
#4029120
Hallo,

nun die Formel sind aber abgedruckt:
12.9.3 Fast PWM Mode S.101f
fpwm = flck /(N(1+TOP))

Es gilt
TOP = 511
N E { 1,8,64,256,1024 }

Und mit deinen Vorgaben ?

fpwm = 8*10^6 /256 /512 = 61Hz

Nutz man die Formel nach Umstellung anders, erhält man:

N = flck /fpwm /512 = 0,7813

Und diesen Vorteiler gibt es nicht.

Also mit N = 1 ==>
fpwm = flck /(N(1+TOP))
fpwm = 8*10^6 /1 /512 = 15,0625 kHz
#4029655
Heribert schrieb:

> F_CPU = 8E6.

Sicher?
Hast du das getestet?

Wenn du nur in das Programm 8Mhz reinschreibst, dann ändert das am µC 
nichts. Damit der auf 8Mhz läuft, musst du an die Fusebits ran. Hast du 
das gemacht? Im Auslieferungszustand läuft der AVR mit 1Mhz, was deine 
Zeitverzögerung erklären könnte. Denn dann geht alles 8 mal so langsam.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.