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 30 kwi 2025, o 10:59


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 24 paź 2014, o 14:49 
    Offline
    Użytkownik

    Dołączył(a): 17 kwi 2014
    Posty: 27
    Pomógł: 0

    Staram się skorzystać z programowego pwm do sterowania kolorami tasmy led rgb, do plytki też mam podłączony czujnik ir, który odbiera kody z pilota oraz wyświetlacz i czujnik wiglotności i temperatury. Ogólnie cały program śmiga do momentu jak do kodu wsadzę jakąś obsługę pwm diód rgb. Wydaję mi się, że ma to związek z timerami.Do odczytania kodów z pilota używam bibliotek pana Mirosława Kardasia no i z tego co widzę to jest tam użyty Timer1. Myślałem,że to może mieć wpływ więc ustawiłem Timer0 w tryb Normal z wektorem przerwan od przepełnienia,lecz nadal skutkuje to tym, że odbiornik podczerwieni przestaje odbierać kody.Dorzucam kod:

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


    EDIT: Jak widać zakomentowałem dwa wiersze w przerwaniu i wtedy wszystko działa ok i niebieska dioda zmienia kolor,gdy odkomentuje 2 pozostałem wszystko się wali... Przestaje odczytywać kody z pilota. I tak próbowałem podpinać pod inne porty te dwa pozostałe kolory.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 14:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Witam,

    Kolega powalczymy z kodem, ale jest on "potworkowaty" dla mnie. Zero komentarzy, wszystko trzeba się domyślić.

    Daj garstkę informacji:

    Co gdzie podłączone, np. przycisk PC0.

    Mikroprocesor i jego taktowanie.

    z Niebieskim pozdRowieniem,
    Doman89



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 14:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    Kolego ... moje ci powiedziec dlaczego tak sie dzieje. Zobacz na twoj kod od poczatku petli while.

    1 odczyt temp.
    2. Wyswietlenie
    3 petla for 255 x 7ms
    4.petla for to samo
    5. Odczyt petli


    W tskiej kolejnosci wykonuje sie program do tego masz aktywne a w pwm uzywasz uwaga funkci wieszajacej prace programu co 7ms az 510 razy na jeden ze tak powiem obrot petli- cykl maszynowy.

    Namazane ze smarta.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 15:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 sie 2013
    Posty: 3797
    Lokalizacja: Grudziądz
    Pomógł: 143

    O i traz widac jak fajnie pomagamy na tym forum. Od zadania pytania minęło 9 minut i są 2 odp w tym samym czasie :) 15:58

    Namazane ze smarta.

    _________________
    Usługi druku przestrzennego - www.drumik.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 15:06 
    Offline
    Użytkownik

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

    Po wejściu w drugą pętle while(1) program już z niej nie wyjdzie dlatego nie możesz odebrać kolejnych kodów z pilota



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 15:07 
    Offline
    Użytkownik

    Dołączył(a): 17 kwi 2014
    Posty: 27
    Pomógł: 0

    Opisałem trochę kod(zmienione są 2 wyjscia odpowiedzialne za czerwony i zielony kolor tasmy ledowej).To jest ATmega 16 taktowana 8 Mhz.Ta pętla ma rozjaśniać i ściemniać ledy, inaczej nie wiem jak miałbym to napisać.
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    EDIT:Co do odpowiedzi od gumeni : program nawet nie chcę wejść w pierwszego if'a odpowiedzialnego za odbiór jakiegokolwiek kodu z pilota.Najbardziej mnie dziwi, że jak wyrzucę
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    z przerwania od przepełnienia to ładnie chodzi tak jak chciałem,dioda się rozjaśnia i ściemnia oraz wyświetla temp i wilgotność a co najważniejsze odbiera kod z pilota, który wszystko uruchamia.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 15:24 
    Offline
    Użytkownik

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

    TCCR0 |= (1<<CS00); zamień na TCCR0 |= (1<<CS01);. Zmieni to częstotliwość wywoływania przerwania, może procek nie nadąża z obsługą.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 paź 2014, o 15:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 03 mar 2014
    Posty: 580
    Lokalizacja: Jastrzębie-Zdrój
    Pomógł: 71

    Lyserg napisał(a):
    EDIT:Co do odpowiedzi od gumeni : program nawet nie chcę wejść w pierwszego if'a odpowiedzialnego za odbiór jakiegokolwiek kodu z pilota.Najbardziej mnie dziwi, że jak wyrzucę Składnia: [ Pobierz ] [ Ukryj ]Składnia: [ Pobierz ] [ Pokaż ]język cif(cnt>=pwm2) PORTA |= (1<<PA4); else PORTA &= ~(1<<PA4);
    if(cnt>=pwm3) PORTA |= (1<<PA6); else PORTA &= ~(1<<PA6);
    GeSHi z przerwania od przepełnienia to ładnie chodzi tak jak chciałem,dioda się rozjaśnia i ściemnia oraz wyświetla temp i wilgotność a co najważniejsze odbiera kod z pilota, który wszystko uruchamia.


    Kolega to się nie dziw bo programowy PWM to potężne obciążenie dla procka ;)

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


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


    i usuń to TCNT z kodu.

    z Niebieskim pozdRowieniem,
    Doman89


    Autor postu otrzymał pochwałę


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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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