Forum: Mikrocontroller und Digitale Elektronik Fast PWM Problem


von basti (Gast)


Lesenswert?

Hallo,
ich versuche gerade, die Fast PWM bei einem Attiny45 zu nutzen.
Das foldende Programm soll eine LED mit 50% ihrer Helligkeit leuchten 
lassen, aber sie ist genauso hell wie bei voller Spannung.
Kann mir jemand sagen, was an dem Code falsch ist? Ich habe ihn mit 
einigen Codebeispielen aus dem Netz abgeglichen und komme zu keinem 
Ergebnis...
1
#include <avr/io.h>
2
#define F_CPU 3500000UL
3
4
5
int main(void)
6
{
7
  DDRB = 0xFF;
8
  TCCR0A |= (1<<COM0A1);  //non-inverting mode
9
  TCCR0A |= (1<<WGM00) | (WGM01);  //fast pwm mode
10
  TCCR0B |= (1<<CS01);  //prescaler = 8
11
  OCR0A = 128;  //50% duty cycle
12
  
13
    while (1) 
14
    {
15
    }
16
}

von hufnala (Gast)


Lesenswert?

Hi,

nur kurz drüber geflogen : Interrupts aktiv ?
- TIMSK?
- sei()?
- bin allerdings nicht sicher ob Du dann noch eine ISR brauchst wenn
  die LED am richtigen Pin hängt, bevor es schief geht halt den Rumpf
  anlegen

//hufnala

von basti (Gast)


Lesenswert?

Ich hatte bisher immer gelesen, dass bei Fast PWM nicht gesondert eine 
ISR ausgeführt wird, sondern der jeweilige Pin automatisch die PWM 
zugewiesen bekommt.

von basti (Gast)


Lesenswert?

http://www.electroschematics.com/9941/avr-pwm/

Das ist eine der Seiten, an welche ich mich gehalten habe, die 
Registernamen lauten beim Attiny45 lediglich z.T. anders.

von Planlos (Gast)


Lesenswert?

Evtl. funktioniert das Programm auch korrekt?

Halber Strom bedeutet nicht halbe Helligkeit, teste mal andere 
OCR0A-Werte oder schau dir das Signal mit einem Oszi oder LA an.

von basti (Gast)


Lesenswert?

Gute Idee, ich probiere das mal.

von Thomas E. (thomase)


Lesenswert?

basti schrieb:
> TCCR0A |= (1<<WGM00) | (WGM01);
             ^^^          ^

Fällt dir was auf?

von basti (Gast)


Lesenswert?

Haha, manchmal sieht man den Wald vor lauter Bäumen nicht!
Dank dir, das werde ich gleich mal ändern.

von basti (Gast)


Lesenswert?

Komischerweise messe ich jetzt an allen Pins bis auf Pin6 0.5V, und an 
Pin6 5V.

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.