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 9 kwi 2025, o 10:03


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
    Autor Wiadomość
    PostNapisane: 27 cze 2021, o 13:59 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    Witam wszystkich mam mały problem, kiedyś Pan Mirek przedstawił takie fajne rozwiązanie z flagą na INT
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    To mi działa, a chciałem tak samo zrobić z PCINT0
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    A to mi nie chce działać



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 cze 2021, o 14:11 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 548
    Pomógł: 27

    Cytuj:
    kiedyś Pan Mirek przedstawił takie fajne rozwiązanie z flagą na INT

    Mirek przedstawił to nieco inaczej 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: 27 cze 2021, o 15:58 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    No toć napisałem że INT mi dział, ale chodzi mi czy można zastosować takie rozwiązanie do PCINT?

    ------------------------ [ Dodano po: 6 minutach ]

    I sprawdź sobie kolega jak przedstawił to Pan Mirek z tego linku
    http://mirekk36.blogspot.com/2013/11/rt ... ek-na.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 cze 2021, o 17:48 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Piotrek801027 napisał(a):
    I sprawdź sobie kolega jak przedstawił to Pan Mirek z tego linku
    http://mirekk36.blogspot.com/2013/11/rt ... ek-na.html

    Pan Mirek wyjaśnił tą sprawę w komentarzach:
    "mirekk36 27 października 2015 17:49

    Ależ oczywiście, że kolega ma 100 a nawet 1000% racji, ma być:

    GIFR = (1<<INTF0);

    bez tej operacji OR - zdecydowanie."



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 cze 2021, o 19:07 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    Spoko przyznaje rację mój błąd nie czytałem komentarz ale to nie zmienia faktu że PCINT nie chce 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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 cze 2021, o 20:03 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 548
    Pomógł: 27

    Nigdy tak z PCINT nie robiłem ale z noty wynika że powinno działać tylko kolega nie ustawił z którego pinu ma być flaga.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    i dopiero teraz powinno zadziałać.

    ------------------------ [ Dodano po: 4 minutach ]

    oczywiście masz w main.c wywołaną funkcję sei();



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 cze 2021, o 16:19 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    Niestety nie działa :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 cze 2021, o 23:38 
    Offline
    Moderator
    Avatar użytkownika

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

    Piotrek801027 napisał(a):
    Niestety nie działa :(

    Zamiast takie rzeczy pisać - to weź Pan zawsze wklej swój cały poprawiony kod - bo kto ci pomoże jak nie widać co robisz i jak poprawiasz.

    _________________
    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: 29 cze 2021, o 16:28 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    Ok to wstawiam 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.

    ten właśnie nie chce chodzić
    na tym porcie mam cztery klawisze, diodę, odbiornik radiowy i ds.
    i właśnie chodzi o przerwanie od desa żeby nie blokowało przerwania od odbiornika radiowego

    ------------------------ [ Dodano po: 2 minutach ]

    i tak też prubowałem
    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: 29 cze 2021, o 18:37 
    Offline
    Użytkownik

    Dołączył(a): 02 gru 2015
    Posty: 548
    Pomógł: 27

    A nie może być tak:
    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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2021, o 19:32 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    tak nie może być bo mam : dwukropek na 7 segment więc musi migać co sekundę ale już sobie poradziłem więc temat zamykam POZDRAWIAM I DZIĘKI ZA POMOC



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 cze 2021, o 19:45 
    Offline
    Moderator
    Avatar użytkownika

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

    W swoim pierwszym poście napisałeś sobie takie coś .... dziwnego
    Piotrek801027 napisał(a):
    void PCINT0_init( void ) {
        PORTB |= ( 1 << PB7 );
        PCICR |= ( 1 << PCIE0 );
    }
    if( PCIFR & ( 1 << PCIF0 ) ) {
                   
         Mój kod                                                                                                  
     
         PCIFR |= ( 1 << PCIF0 );
     
    }


    1. To w ogóle nie jest zainicjalizowane poprawnie przerwanie żeby mogło działać z PCINT0 i nigdy nie zadziała w takiej postaci ten IF w pętli głównej
    2. Pomijam ten znak | przy kasowaniu flagi bo to już się wyjaśniło

    Później piszesz niby swój poprawiony kod i on wygląda teraz jak ?


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


    No ok w końcu prawidłowo zaincjalizowane przerwanie PCIE0, ale za to teraz w nagrodę zapodałeś sobie czarcią zapadkę w IF'ie


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


    Powiedz mi - skoro walczysz - to po choinkę teraz wpeklowałeś tego if'a z tym jakimś mu==0 ? Wywal to w diabły i doprowadź kod do podstawowego stanu testowego czyli użyj Debugera na JEDNEJ diodzie LED. Tym bardziej, że twoje opisy są bardzo mało precyzyjne bo piszesz np że próbowałem nawet TAK podając, właśnie ten przykład inicjalizacji poprawnej wyżej, tak jakbyś uznawał że nie ma to znaczenia czy jest ta linia PCMSK0 |= ( 1 << PCINT7 ); czy jej nie ma ... No bez niej w ogóle nie może to działać, więc jeśli ci nie działa to znaczy, że błąd masz dalej i naucz się go właśnie szukać doprowadzając kod do najprostszej postaci jak niżej



    czyli :

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


    Teraz jak zrozumiesz z poradnika wideo o debugerze na jednej diodzie LED o co chodzi, to w tym przykładowym kodzie sam zaobserwujesz czy zapala się i gasi ci ta dioda czy nie w tym IF'ie ! Więc sprawdź - bo jak będzie migać to wtedy wiesz, że przerwanie prawidłowo działa - a ty sobie analizuj dalej swój if( mu==0 ) ....

    _________________
    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: 30 cze 2021, o 10:47 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 29
    Pomógł: 0

    Panie Mirku zrobiłem to tak i śmiga aż miło dziękuje za wyjaśnienie.
    Pozdrawiam.
    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  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

    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