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



Teraz jest 19 kwi 2024, o 13:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 5 paź 2020, o 18:43 
Offline
Nowy

Dołączył(a): 05 paź 2020
Posty: 4
Pomógł: 0

Cześć Wszystkim,

Ustawiłem rejestr TCCR0 zgodnie z kodem (no prawie zgodnie) na stronie 240 w BB.
Mimo iż w pętli głównej wpisuję na sztywno wartość OCR0 = 0, to i tak dioda nie gaśnie całkiem, tylko się żarzy.
Tak, jakby współczynnik wypełnienia nie był równy 0 tylko 1/256.
Widać to mruganie przy zwiększeniu preskalera do 1024.
Czy ktoś może udzielić rady, jak zrobić aby dioda gasła całkiem?
Z góry dziękuję za pomoc.

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: 5 paź 2020, o 20:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Witaj!
Wyślij informację na PORT PB3, że ma być 1(jeśli katoda diody jest podłączona do portu PB3. a anoda do VCC).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 paź 2020, o 21:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 mar 2014
Posty: 356
Lokalizacja: Pruszków
Pomógł: 15

Nie pamiętam dokładnie ale Mirek chyba pokazywał w jakimś poradniku, że przy sprzętowym PWM przy minimalnej szerokości impulsu
zawsze jest taka szpilka na wyjściu więc dioda nie zgaśnie.
Tylko problem bo chyba trzeba programowo ustawić pin wyjściowy w stan niski albo chyba używać odwrotnego podłączenia diody a wartość rejestru Xor-ować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2020, o 05:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

Cytuj:
Czy ktoś może udzielić rady, jak zrobić aby dioda gasła całkiem?

W bluebooku jest to dokładnie opisane, powodem są tzw "glitche" .... wystarczy że odwrotnie podłączysz diodę do pinu czyli anodą a nie katodą i zjawiska nie zauważysz. Można też odwrócić fazę PWM.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2020, o 15:58 
Offline
Nowy

Dołączył(a): 05 paź 2020
Posty: 4
Pomógł: 0

Hmm... dziwna sprawa. Zrobiłem, jak Mirek radzi. Czyli: Pin PB3 Atmegi32 podłączyłem do anody LED, czyli do pinu DIG1 złącza DIS2. Pin A ze złącza J30 podłączyłem do GND w złączu J5. I efekt bez zmian. Nadal nie mam pełnego wygaszenia diody. Zestaw zasilam bezpośrednio z portu USB komputera. Przetwornica PWR3 wyjęta. Kod jak poniżej.
O co chodzi z odwróceniem fazy PWM? Chodzi zmianę z clear at TOP na set at TOP?

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: 6 paź 2020, o 16:05 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

weź zwykłą diodę LED luzem

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 paź 2020, o 19:02 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

stepbystep napisał(a):
O co chodzi z odwróceniem fazy PWM? Chodzi zmianę z clear at TOP na set at TOP?

Dokładnie o to chodzi (tylko zamiast "at TOP" powinno być "at BOTTOM").
Zasada jest następująca:
W trybie Fast PWM dla wartości OCR0=0 zawsze będzie glitch. Jeśli podłączyłeś diodę tak, że zerowa wartość OCR0 odpowiada wygaszeniu diody, to zawsze będziesz miał taki efekt. Twoim zadaniem jest takie dobranie fazy PWM lub polaryzacji diody, aby wygaszenie następowało dla OCR0=255. Wtedy oczywiście też będzie glitch, ale przy pełnej jasności (to znaczy przy OCR0=0 uzyskasz wypełnienie 255/256), ale tego nie będzie widać (chyba, że zmienisz preskaler na dużą wartość, wtedy być może będzie widać chwilowe wyłączenie świecenia).
Jeśli koniecznie chcesz uzyskać pełną skalę regulacji PWM (100%), tak aby nie było żadnych glitchy, musisz użyć trybu Phase Correct.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2020, o 17:36 
Offline
Nowy

Dołączył(a): 05 paź 2020
Posty: 4
Pomógł: 0

andrews napisał(a):
Twoim zadaniem jest takie dobranie fazy PWM lub polaryzacji diody, aby wygaszenie następowało dla OCR0=255.


No i działa! Jedyne co muszę zrobić, to zaraz za pierwszą pętlą ręcznie dodać OCR0=255, bo pętla kończy się na wartości 254.
Dzięki andrews.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2020, o 18:19 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

stepbystep napisał(a):
Jedyne co muszę zrobić, to zaraz za pierwszą pętlą ręcznie dodać OCR0=255, bo pętla kończy się na wartości 254

Nie musisz. Możesz zrobić tak, żeby pętla kończyła się na wartości 255. Wystarczy zmienić typ zmiennej i na 16-bitowy oraz zmienić warunek na <=:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wprawdzie obsługa pętli wydłuży się na pewno o kilka taktów ze względu na operacje na liczbie 16­­­-­­­bitowej zamiast na 8-bitowej, jednak - biorąc pod uwagę te opóźnienia wewnątrz pętli - jest to bez większego znaczenia (będzie niezauważalne).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 paź 2020, o 19:22 
Offline
Nowy

Dołączył(a): 05 paź 2020
Posty: 4
Pomógł: 0

Rzeczywiście, można tak, jak piszesz.
Ale zrobiłem trochę inaczej. Skorzystałem z Mirkowego gamma correction w mkAVR Calculator i utworzyłem tablicę, która ma nie 256, tylko 255 elementów i ostatni ma wartość 255. Dzięki temu, w ostatnim przebiegu pętli, dla i=254, OCR0=255.
I mam dwa w jednym: dioda gaśnie całkowicie, no i zmiana jasności jest "przyjemniejsza" dla oka. Gamma ustawiłem na 0,5.
Coraz bardziej mi się podoba to programowanie. :D



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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