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 10 lip 2025, o 04:31


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 10 lis 2012, o 20:23 
    Offline
    Nowy

    Dołączył(a): 10 lis 2012
    Posty: 5
    Pomógł: 0

    Witam
    pierwszy post na forum :D
    Postanowiłem przećwiczyć przerwania zewnętrzne
    Naciśnięcie przycisku zmienia stan diody i wysyła "click" przez RS. Niby działa... tylko, że niechcący jakiś wykrywacz pola elektromagnetycznego zrobiłem.
    Do pierwszego naciśnięcia przycisku wszytko jest cacy, ale potem, jak zbliżę rękę do kabelka, to zaczyna się szopka.
    Ustawienie przerwania reagujące na zbocze:
    void ExtInterrupt_init(void) {
    PORTD |= (1 << PD2);
    DDRD &=~(1 << PD2);
    GICR |= (1 << INT0);
    MCUCR |= (1 << ISC01);
    }
    Może ktoś doradzi jak tego uniknąć?
    Docelowo przerwanie ma przychodzić z zewnętrznego czujnika (akcelerometr ADXL345), który komunikuje się przez SPI. O tym, że próbka danych jest gotowa do odebrania, czujnik informuje zmianą stanu na pinie. Takie hece jak ta tutaj uniemożliwią mi praktycznie użycie kabelka.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 lis 2012, o 21:27 
    Offline
    Moderator
    Avatar użytkownika

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

    To lepiej kolega pokaże cały swój kod testowy, bo takie szopki jak kolega mówi są zwykle spowodowane właśnie kodem a nie tam zestawem, kabelkiem czy uszkodzonym procesorem czy jeszcze inną kosmiczną przyczyną .... :( niestety

    (wykluczę tu dość istotną możliwą inną przyczynę jaką jest np brak filtracji zasilania, czy problemy elektroniczne, bo pisze kolega że korzysta z zestawu ATB). Jedyne co mogę podpowiedzieć tak bez kodu - to wymienić może jeszcze przewód połączeniowy na inny bo ten może akurat egzemplarz słabo styk ma zarobiony albo coś. I dodam, że przed chwilą odpaliłem to na zestawie - a kabelek można macać do upadłego i przerwanie się nie wyzwoli.

    więc najpierw kod a wtedy będziemy mogli podpowiedzieć jak tego uniknąć, albo pogłówkować o co może chodzić - ok ?

    _________________
    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: 11 lis 2012, o 00:13 
    Offline
    Nowy

    Dołączył(a): 10 lis 2012
    Posty: 5
    Pomógł: 0

    Absolutnie nie twierdzę, że to wina zestawu. Po prostu problem występuje podczas pracy na zestawie, co na wstępie eliminuje całą gamę przyczyn. Jestem prawie pewien, że coś w kodzie mam nie tak :( Przewód oczywiście zmieniłem.
    Oto 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.

    Pliki mkuart pozostawiłem bez zmian.
    Jak na razie zauważyłem tyle:
    - problem występuje gdy jednocześnie jest włączony USART
    - czasem procedurka warunkowana przerwaniem INT0_vect wpada w pętlę nieskończoną, a czasem się zatrzymuje i wtedy reaguje na zbliżenie ręki

    Może tu trzeba jakość skonfigurować I/O clock specjalnie? Oddzielnie dla UART oddzielnie dla INT0?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2012, o 00:25 
    Offline
    Moderator
    Avatar użytkownika

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

    czyli co? w ogóle ci nic do terminala nie leci ?

    zobacz - wgrałem teraz dokładnie twój przykład bez żadnych zmian i masz w terminalu ładnie napisy

    nie mam pojęcia skąd ty np wiesz że procedura ISR() się zawiesza, albo że obsługa UDRE w czymś przeszkadza - skąd takie przypuszczenia

    u mnie wgrany kod pięknie działa i nic nigdy nie reaguje na żadne dotykanie kabla

    Obrazek

    ------------------------ [ Dodano po: 5 minutach ]

    o tu wprowadziłem lekką zmianę żeby było widać numerowanie clicków i lecą ładnie po kolei, oczywiście w związku z brakiem obsługi / reakcji na drgania styków czasem po jednym kliknięciu wskoczy ich kilka no ale to normalne. Nic się nie zawiesza tak jak ty to opisujesz - zresztą nie wiem na jakiej podstawie ....

    Obrazek

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

    jak zasilasz zestaw ? z USB ? czy z zasilacza ?

    jeśli z USB to jakie napięcie masz dokładnie w układzie - sprawdzałeś miernikiem ?

    _________________
    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: 11 lis 2012, o 00:33 
    Offline
    Nowy

    Dołączył(a): 10 lis 2012
    Posty: 5
    Pomógł: 0

    No to może ja czegoś nie rozumiem.
    Wciskam klawisz, puszczam klawisz, wysyła mi na terminal "click". Ale mi to wysyła bez przerwy. Ja rozumiem, drgania styków itp. To niech wyśle 20 razy, albo 200 nawet. Ale nie 6000.
    Jeśli wyłączę usart, to dioda się zapala i gaśnie jak na twoim filmiku o drganiu styków. Jak włączę usart, to mruga bez przerwy.
    USB, 4,7V, dotknięcie miernikiem też wywołuje "przerwanie" i rozpoczęcie wysyłania do terminala.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 lis 2012, o 01:03 
    Offline
    Moderator
    Avatar użytkownika

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

    ;) zaraz zaraz - a nie masz przypadkiem pan w konfiguracji biblioteki UART włączonego RS485 i pinu do sterowania kierunkiem, który bodajże przygotowałem na PD2 ??? weź ty tam zajrzyj ;)

    zobacz

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


    widzisz ? pierwsza linijka w tej sekcji powinna być zakomentowana, albo mogłeś sobie to samo sprawdzić np na INT1 albo na INT2, albo mieć włączony RS485 i użyć tu innego pinu niż PD2 ..... coś mi się wydaje, że to będzie panie kochany to - ale sprawdź

    _________________
    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: 11 lis 2012, o 08:57 
    Offline
    Nowy

    Dołączył(a): 10 lis 2012
    Posty: 5
    Pomógł: 0

    No oczywiście że tak :D Dziś miałem sprawdzać przerwania na innych pinach, ale czemu nie idzie na PD2 to bym wpadł dopiero przy próbach z rs485.
    Dziękuję bardzo za pomoc



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO