ad.1. : Nie znałem takiej opcji Timera, ale z tego co piszesz brzmi zachęcająco. Doczytam w nocie, zmienię kod i przedstawię na forum. Rozumiem, że w ten sposób impuls będzie generowany od razu automatycznie po przepełnieniu timera nie "manualnie" w przerwaniu.
ad. 2 : Nie do końca rozumiem o co chodzi z tym, że "Musisz wtedy pamiętać, że wartość tuż po zmianie MUX będzie dotyczyła jeszcze poprzedniego kanału." Ale generalnie póki co mam takie podejście jak wspomniałeś - najpierw uruchomię obsługę triaka a dopiero potem zajmę się peryferiami.
Odnośnie schematu:
Tak, wiem, że detekcja zera jest u mnie dość skomplikowana. Widywałem też schematy na elektrodzie, na których było to zrealizowane dużo prościej (zresztą podobnie jak napisałeś) - być może koniec końcem zdecyduje się właśnie na prostsze rozwiązanie. Wiem, tylko, że moja detekcja choć skomplikowana to podobno bardzo dokładna. Możliwe jednak, ze takiej dokładności nie potrzebuje i że wystarczy mi taka jak z proponowanego przez Ciebie układu.
Jak przeprogramuje Timer na pewno przełączę sterowanie triaka na wyjście OC procesora.
Nie wiem do końca o czym mówisz wspominając o zasilaniu z reaktancji kondensatora, ale wersja z trafem zapewnia mi przede wszystkim izolację galwaniczną od napięcia sieci oraz wyjście +12VDC dostępne dla użytkownika, na którym mi zależy. Układ będzie bowiem sterowany np. napięciem 0-10VDC, które może być podawane zadajnikiem wymagającym takiego właśnie zasilania.
Co do "Poza tym ADC*146 powoduje przekroczenie zakresu int - więc te obliczenia musisz zrealizować inaczej."
146/1023 zamieniam na 0,143 - powinno być ok.
I tak jest to rozwiązanie tymczasowe. W praktyce równomierny wzrost liczby impulsów nie będzie powodował liniowej zmiany mocy ze względu na sinusoidalny kształt przebiegu kluczowanego. Należałoby całkować sinusa od zera do pi aby wyznaczyć kolejne wartości timera w celu zapewnienia liniowej charakterystyki. Mam taki program (wygrzebany na forum), który dla konkretnej wartości zegara, prescalera i doboru dzielnika wylicza ile impulsów powinno odpowiadać konkretnemu procentowi mocy maksymalnej (program w załączniku). Moje ustawienia to 1MHz, dzielnik 64 i Timer0. Docelowo chcę umieścić w programie jakąś macierz, z której dla konkretnej procentowej wartości mocy program będzie pobierał ilość impulsów do timera.
PS - jestem pod sporym wrażeniem chęci pomocy na tym forum ludziom, którzy mówiąc krótko "nie śmigają w programowaniu" :p Mam nadzieję, że się szybko nie znudzicie moim problemem i będę mógł doprowadzić temat do końca. Dzięki
