Witam.
Napisałem kod, który tworzy sinusa (falownik) z tablicy do której wgrane są odpowiednie wartości tworzące przebieg. Zamieszczam wyrywek kodu:
Zgodnie z powyższym kodem częstotliwość pwm wynosi 10kHz (przy taktowaniu procesora 8MHz). Dla 200-elementowej tablicy daje to 50Hz sinusa (10kHz/200).
Obliczyłem odpowiednią ilość tablic aby mieć możliwość zmiany f wyj. co 2Hz do 50Hz- czyli 25 tablic.
Dla powyższego kodu maksymalne wypełnienie wynosi 95%. (OCR2A 100, max. element tablicy to 95).
Teraz chciałbym dodać możliwość regulacji wypełnienia np. co 10%.
Pytanie jak to odpowiednio zrobić. Licze to w przerwaniu czyli np.
OCR2B = (pwm1_50[y]/10)*9; - dla wypełnienia 85%.
Działa, jednak mam wątpliwości co do tego rozwiązania. Czy to jest dobre rozwiązanie (obliczenia w przerwaniu, obciążenie mikrokontrolera)? Czy lepszym rozwiązaniem jest załadowanie dodatkowych tablic dla poszczególnych wypełnień?
Napisałem kod, który tworzy sinusa (falownik) z tablicy do której wgrane są odpowiednie wartości tworzące przebieg. Zamieszczam wyrywek kodu:
Kod: C / C++
Zgodnie z powyższym kodem częstotliwość pwm wynosi 10kHz (przy taktowaniu procesora 8MHz). Dla 200-elementowej tablicy daje to 50Hz sinusa (10kHz/200).
Obliczyłem odpowiednią ilość tablic aby mieć możliwość zmiany f wyj. co 2Hz do 50Hz- czyli 25 tablic.
Dla powyższego kodu maksymalne wypełnienie wynosi 95%. (OCR2A 100, max. element tablicy to 95).
Teraz chciałbym dodać możliwość regulacji wypełnienia np. co 10%.
Pytanie jak to odpowiednio zrobić. Licze to w przerwaniu czyli np.
OCR2B = (pwm1_50[y]/10)*9; - dla wypełnienia 85%.
Działa, jednak mam wątpliwości co do tego rozwiązania. Czy to jest dobre rozwiązanie (obliczenia w przerwaniu, obciążenie mikrokontrolera)? Czy lepszym rozwiązaniem jest załadowanie dodatkowych tablic dla poszczególnych wypełnień?
