Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 kwi 2026, o 13:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 13 lis 2014, o 17:05 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Witam, mam pewien problem, którego nie potrafię sobie sam wyjaśnić. Otóż piszę sobie programowy PWM, oparty o np Timer2 Atmedze8:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Obsługa przerwania:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Taktowanie 11059200 Hz ( 11059200/1024/108/100 = 100 Hz)

Ten kod oczywiście działa, lecz gdy zastosowałem go np do sterownika taśm rgb, pwm podawany na tranzystory sterujące ledami to widać stałe pulsacje kolorów średnio co ok 2s, jest to uciążliwe i po dłuższym czasie robi się nieprzyjemne. Zwiększenie częstotliwości PWM do nawet 100kHz nie niweluje tego efektu. Nie mam oscyloskopu aby się wpiąć i na żywo zobaczyć generowany przebieg prostokątny. Przy pwm = 0 identycznie zachowuje się sterowany mosfetem silnik DC, tzn on nie pracuje, ale słychać te "przeskoki".

Ma ktoś jakiś pomysł co robię nie tak albo czego nie uwzględniłem?

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2014, o 17:59 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

Spróbuj tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2014, o 20:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
antheri napisał(a):
Taktowanie 11059200 Hz ( 11059200/1024/108/100 = 100 Hz)

Ja bym jeszcze raz zrobił te obliczenia ;) .
Wgrałem to co podałeś i przy innym preskalerze działa.
Z drugiej strony po co to liczyć, przeważnie daje się bez podziału lub z małym podziałem i "po ptokach"

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2014, o 21:21 
Offline
Użytkownik

Dołączył(a): 06 lis 2013
Posty: 44
Pomógł: 0

Mój błąd ale po poprawieniu nie załatwia to sprawy, tj w kodzie mam dobrze tylko przy przepisywaniu tego tutaj się pomyliłem, nie chciałem kopiować całej procedury tylko przedstawić moje myślenie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lis 2014, o 23:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
antheri napisał(a):
...nie chciałem kopiować całej procedury tylko ...

...a innym kolegom nie chce się zgadywać bądź też wróżyć ;) .
Uzupełniłem Twój kod o prymitywnego delay'a dla pwm++ i u mnie (AT8 8MHz) działa.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dlaczego tego Twojego "tic'a" ograniczasz do 100; gdybyś dał cały bajt miałbyś troszkę więcej odcieni jasności, a po drugie sam by się zerował ( p.BB np.: str.235 ).

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO