Witam...
Przerabiam książkę pana Mirosława i doszedłem do Sterowania PWM chciałem zrobić przykład z ściemnianiem i rozjaśnianiem diody LED.
Mikrokontroler: Atmega328P-PU
Środowisko: Eclipse Indigo (z AVR Toolchain)
Ustawiony wewnętrzny oscylator na 8 Mhz (wyłączona opcja CKDIV8)
Mój mikrokontroler nico różni się od tego którego używał pan Mirosław gdy pisał książkę ale postaram się opisać co gdzie szukałem.
Na początek chciałem napisać prosty program który zaświeci diodę z 25% mocą lub 50% mocy aby sprawdzić czy w ogóle to działa. Ale dioda cały czas się zapala na 100%.
Program:
Kod:
#include <avr/io.h>
#include <util/delay.h>
int main ( void ) {
DDRD |= (1<<PD6);
TCCR0A |= (1<<WGM01) | (1<<WGM00); // Fast PWM
TCCR0A |= (1<<COM0A1) | (1<<COM0A0); // Fast PWM Mode
TCCR0A |= (1<<CS00); // Presklarer = 1
OCR0A=120; // ustawienie diody na ok 50%
}
Diodę podpiąłem pod PD6 z oznaczeniem w nocie PCINT22/
OC0A/AINO0
Aby włączyć Fast PWM zajrzałem do noty:
![Obrazek](http://game.pcspace.pl/avr/1.jpg)
Następnym krokiem było odpowiednie ustawienie "Compare Output Mode, Fast PWM Mode" i tutaj ustawienia się nieco różnią od tych podanych w książce:
![Obrazek](http://game.pcspace.pl/avr/2.jpg)
W książce było "Clear OC0 at TOP" a u mnie jest
BOTTOM.
Ustawienie presklarer-a:
![Obrazek](http://game.pcspace.pl/avr/4.jpg)
Może czegoś nie doczytałem lub coś źle robię. Jeżeli napisałem jakieś głupoty to z góry przepraszam ale dopiero zaczynam przygodę z AVR i jestem jeszcze zielony jak trawa na wiosnę.
Pozdrawiam Krzysztof Andrzejczak