Kolego patrzę na ten kod ze zgrozą, ale załadowałem do swojego Bascoma i trochę więcej zrozumiałem bo mozna sprawdzać referencje i skakać po kodzie.
W przerwaniu co osiem taktów (nierealne) timer ma zliczać te twoje "niby" OCR. (Incr Licz_timera1 : If Licz_timera1 >= Ooo Then)
Te OCR jest ładowane z tabeli gdzie najmniejsza wartość to 127 a najwieksza 6666
Timer może takie rzeczy liczyć sam jeśli tylko najwiekszą wartością byłoby 65535 czyli jego pojemność.
To jest uproszczony przykład. Przy 127x8(prescaler)=1016 masz przy największej predkości jeszcze ponad tysiac taktów zapasu na inne sprawy.
Rozumem że to 16MHz/1016=15748 ma dać te 16kHz
Zaloguj się, aby zobaczyć kod
AVR spokojnie sobie da radę jak mu porządny soft napiszesz. Mam projekt gdzie generuję sinusoidę od 50Hz do 1500Hz ładując w przerwaniu jednego timera PWM drugiego. Mam też projekt gdzie generuję trzy sinusoigy 50Hz przesuniete w fazie o 120stopni. Naprawdę się da.