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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 23 lip 2025, o 09:40


    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 5 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