Oto kod dot. sterowania PWM. Jak łatwo zauwazyc ma on zmieniać wartość timera w zależności o wejścia na pinach 4 i 5 portu B. Programik działa ale mam co do niego pytanie. Dlaczego zmiana obrotów czasami następuje natychmiast po podlaczeniu masy do jednego z pinow a czasem trzeba odczekac dosc znaczny okres czasu (ok.3 sek)? Czy jest to zależne od czestotliwosci sprawdzania warunków? Jeżeli tak to jak ustawić aby zmiany zachodziły natychmiastowo. Prosze o pomoc i wyrozumiałość
#include <avr/io.h>
void timer(void) {
TCCR0A = (1<<WGM01) | (1<<WGM00);
TCCR0A |= (1<<COM0A1);
OCR0A = 255;
TCCR0B |= (1<<CS00);
}
void out(void) {
DDRB |= (1<<2);
DDRB &= ~(1<<5);
DDRB &= ~(1<<4);
}
int main (void)
{
out();
timer();
while(1)
{
if (PINB & (1<<5))
OCR0A= 255;
else if (PINB & (1<<4))
OCR0A = 125;
else
OCR0A = 0;
}
return (0);
}