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 w 2025? 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 18 kwi 2025, o 08:06


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 28 wrz 2017, o 14:33 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 09 cze 2016
    Posty: 40
    Lokalizacja: Łódź
    Pomógł: 1

    Witam.
    Procek atmega 328p, 16mHz.
    Uruchamiam timer1 z takimi ustawieniami:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Problem polega na tym że na wyjściu OC1A działa prawidłowo tylko wtedy gdy pin PB0(ICP1) jest w stanie wysokim. Nie ma znaczenia czy jest wejściem czy wyjściem.
    Przy stanie niskim na PB0 wyjście OC1A generuje tylko szpilki od kilkudziesięciu mikrosekund do kilkudziesięciu nanosekund.
    Natomiast wyjście OC1B działa prawidłowo.
    Próbowałem wszelkich ustawień timera i przekopałem datasheet. Niestety nie dałem rady rozwiązać problemu.
    Czy da się jakoś wyłączyć to ICP? Czy to ja znowu robię jakiś błąd?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 wrz 2017, o 17:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1033
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Coś masz namieszane (w połączeniach bądź w programie). W trybie fast PWM, pin ICP nie wpływa na działanie kanałów PWM generowanych przez licznik.
    Licznik zlicza od zera do 0x03FF, stan licznika jest stale porównywany z rejestrami OCR1A i OCR1B i w zależności od wyniku porównania wyjścia OC1A i OC1B są odpowiednio ustawiane. Pin ICP może jedynie spowodować przechwycenie aktualnej wartości licznika do rejestru ICR1.

    ------------------------ [ Dodano po: 32 minutach ]

    Przed chwilą zrobiłem test i jest tak jak pisałem - stan pinu PB0 nie wpływa na stan pinu OC1A oraz OC1B podczas generowania PWM-u na tych pinach, a konfigurację timera1 wkleiłem twoją.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 wrz 2017, o 20:34 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 09 cze 2016
    Posty: 40
    Lokalizacja: Łódź
    Pomógł: 1

    Właśnie rozwiązałem problem... Na pinie PB0 miałem wyłączenie PWM, a na pinie PD7 włączenie. Przez pomyłkę zamiast zablokować 3 dolne bity w digital input DIDR0 wpisałem te bity
    do DIDR1 i zablokowałem digital input na komparatorach. Czyli na PD7. W związku z tym PD7 był zawsze czytany jako LOW (przycisk wciśnięty) I to powodowało wariacje PWM.
    Człowiek uczy się na błędach, tyle że najlepiej na czyichś :)
    Dopiero się uczę programowania aczkolwiek dobrze mi idzie(i tej wersji się będę trzymał ;) hi hi)
    Dzięki za pomoc i pozdrawiam..
    Ps Uczcie się na moich błędach ;)



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 9 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