Forum: Mikrocontroller und Digitale Elektronik attiny85 fastpwm


von Theo (Gast)


Lesenswert?

Hi,

ich möchte an PB0 eine PWM erzeugen.
1
DDRB |= (1<<DDB0)|(1<<DDB1)|(1<<DDB2);
2
3
TCCR0A |= (1<<COM0A1)|(1<<COM0A0) | (1<<WGM01) | (1<<WGM00); // OC0A non-inverting mode
4
TCCR0B |= (1<<WGM02) | (1<<CS01);  //Fast PWM / TOP OCRA / Update at BOTTOM / TOV Flag set on TOP   //Prescaler = 8
5
6
OCR0A = 20;

Doch leider erzeugt mir dies nichts. Die Hardware ist in Ordnung. 
Erkennt jemand meinen Fehler?

von S. Landolt (Gast)


Lesenswert?

PB0 ist OC0A - da hätte ich den Modus 3 statt 7 erwartet, oder anders 
gefragt: Wie wird hier der Tastgrad eingestellt?

von H.Joachim S. (crazyhorse)


Lesenswert?

WGM02 sollte 0 sein, COM0A0 auch.

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

H.Joachim S. schrieb:
> WGM02 sollte 0 sein, COM0A0 auch.

COM0A0 zu setzen ist schon ok, dann hat er bei OCR0A = 20 eben 
(256-20)/256 Highzeit, wenn er das will, nur WGM02 sollte auf 0 um den 
FAST PWM-Mode mit 0xFF als TOP Wert zu benutzen.

EDIT: Gerade gesehen das er non inverting will, also dann muss COM0A0 
auch auf 0 stehen...

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Theo schrieb:

> Erkennt jemand meinen Fehler?

Du kannst keine OC0A-PWM erzeugen, wenn OCR0A das Register ist, über das 
der Zyklus definiert wird.

Lies' endlich die verdammte Funktionsbeschreibung der verdammten 
Timermodi in dem verdammten Datenblatt!!!!!!

von Theo (Gast)


Lesenswert?

Okay, das stimmt!
Gerade ausprobiert, WGM02 war zuviel des guten...

Danke für die schnelle Hilfe!!

von Apollo M. (Firma: @home) (majortom)


Lesenswert?

c-hater schrieb:
> Lies' endlich die verdammte Funktionsbeschreibung der verdammten
> Timermodi in dem verdammten Datenblatt!!!!!!

RICHTIG! und stell hier nicht immer trivial fragen nur weil du nicht 
lesen willst/kannst!!!


mt

von Theo (Gast)


Lesenswert?

Sry, aber für mich war dies alles andere als Trivial.

von Dani (Gast)


Lesenswert?

Für einfache Beispiele von AVR Codes, finde ich diese Codesammlung hier 
recht gut:

https://www.electronicsplanet.ch/mikrocontroller/source-code/source-code-index.htm

Der Tiny ist da zwar nicht dabei, aber die Peripheien der AVR Controller 
sind ja manchmal identisch.

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.