Dziękuję za wszystkie odpowiedzi. Miałbym jeszcze jedną prośbę.
Czy mógłbyś mi wyjaśnić jakie dokładnie zmiany powodują te modyfikacje rejestrów które wprowadziłeś? Poczytałem nieco na ich temat, ale nie jestem w stanie rozszyfrować i zrozumieć całości. Przepraszam, że tak się o to dopytuję, ale nie należę do zaawansowanych użytkowników Arduino a że Twój przykładowy kod wydaje się działać poprawnie to chciałbym zrozumieć dlaczego.
(19-07-2018, 22:06)Robson Kerman napisał(a): Tak jak es2 napisał, dla trybu phase correct, można bardzo dokładnie ustawić częstotliwość PWM.
Ja zrobiłem to tak, że dałem ICR1=400 dla preskalera = 1.
Dla kryształu 16MHz wychodzi równiutko 20kHz.
Wykorzystałem dwa kanały timera 1, przy czym TCCR1B ustawiłem w przeciwnej fazie.
W setupie ustawiamy zegar:
Kod:TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<COM1B0) | (1<<WGM11);
TCCR1B = (1<<WGM13) | (1<<CS10);
ICR1 = 400;
pinMode( 9, OUTPUT);
pinMode(10, OUTPUT);
Czy mógłbyś mi wyjaśnić jakie dokładnie zmiany powodują te modyfikacje rejestrów które wprowadziłeś? Poczytałem nieco na ich temat, ale nie jestem w stanie rozszyfrować i zrozumieć całości. Przepraszam, że tak się o to dopytuję, ale nie należę do zaawansowanych użytkowników Arduino a że Twój przykładowy kod wydaje się działać poprawnie to chciałbym zrozumieć dlaczego.