Witam.
Na forum jestem nowy, ale Atmege8 gryzę już od roku:).
Zakładam że czytałeś datasheet'a od Atmega8 i niestety nie udało Ci się zrozumieć.Jeżeli tak to Ci pomogę.
Po pierwsze w Atmega8 masz trzy timery/countery:
-Timer0 8bit
-Timer1 16bit
-Timer2 8bit
Timer1 i Timer2 możesz wykorzystać jako PWM,gdyż mają wbudowaną taką funkcje. Wiadomo że 16bitowy daje większą dokładność ustawienia PWM(rozdzielczość), ale na początek możesz użyć tego Timer2 chyba jest prostszy.
Pamiętaj że częstotliwość PWM będzie związana z częstotliwością z jaką chodzi Atmeg8.Związek ten jest określony wzorem do każdego z trybów pracy.Mogę jeszcze pisać i pisać ale nic tak nie pomaga w zrozumieniu jak przykład.Oto i on:
// ***********************************************************
// Project:Program testowy do oblsugi PWM w Atmega8
// Author:Zilbert Szymanski
// Module description:ZilPlytkaNaAtmega8
// ***********************************************************
#include <avr\io.h> // Most basic include files
#include <avr\interrupt.h> // Add the necessary ones
//Atmega8 chodzi na 8MHz
int main(void) {
DDRC=0xff;//porty C jako wyjsciowe
DDRB=0xff;//porty B jako wyjsciowe
///ustawienia timera2 generatora pwm
TCCR2=(1<<WGM20)|(0<<WGM21)|(1<<CS20)|(0<<CS21)|(0<<CS22)|(0<<COM20)|(1<<COM21);
//precaler przez 1(noprescaling) Phase Correct PWM Mode oc2 na pb3
//czestotliwosc PWMa 15,7kHz
TCNT2=0x00;
OCR2=128;//50% no i u kolego regulujesz wypelnienie:) masz liczy od 0 //do 255
while(1)//petla nieskonczona aby mikro sobie chodził:)
{
}
}
Wzór określający częstotliwość dla powyższego przykładu to:
Fclk- to czestotliwosc mikro
N- wartosc prescalera
Focn...-To czestotliwsc tego PWMa
Mam nadzieje że pomogłem i niezaględziłem zanadto.
Pozdrawiam.
Punkty mile widzane:)