Hallo gemeinsam,
Mein Einstieg in die AVR-Welt habe ich mit einem ATtiny261-PU gewagt und
auch schon recht viel Zeit mit dem Lesen der Dokumentation verbracht, um
eine FAST PWM nutzen zu können.
Mein erster Test bestand darin, eine korrekte 50Hz PWM Frequenz
einzustellen. Dabei bin ich noch nicht wirklich klar darüber, ob der
Timer default nun 10-Bit oder 8-Bit durchläuft, ich nun aber von 8-Bit
ausgehe und erstmal versuche eine 1Hz PWM Frequenz einzustellen (kann
ich einfach mit stopuhr nachprüfen).
Meine Ausgangsrechnung:
fPWM = (clk/prescaler)/256
Setzt man den prescaler auf 4096 erhalte ich reel eine fPWM ~ 1Hz (Mit
Stoppuhr nachkontrolliert, hab noch kein oszi) .. das entspricht aber
einer clk-Frequenz von 1MHz. Ich dachte mein uC hat 8MHz intern als
standard einstellung?
Schlussendlich ist mein C-Code aktuell dieser um wirklich 1Hz zu
erreichen:
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 |
|
4 | int main(void)
|
5 | {
|
6 | DDRB = 0x03;
|
7 | TCCR1A = (1<<COM1A1) | (1<<PWM1A); //Activate PWM -> FAST MODE is default
|
8 | TCCR1B = (1<<CS13) | (1<<CS12) | (1<<CS10); //Prescaler CK/4096
|
9 |
|
10 | OCR1A = 10; // Dutycycle setup
|
11 | while(1)
|
12 | {
|
13 | //bling bling led
|
14 | }
|
15 | }
|
Beachte ich etwas nicht?
ATtiny261A sheet: http://www.atmel.com/Images/doc8197.pdf
Falls ihr mir Hinweise geben könnt wäre ich sehr dankbar.
Grüße