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 4 cze 2025, o 15:02


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 24 sie 2015, o 23:50 
    Offline
    Użytkownik

    Dołączył(a): 06 lip 2014
    Posty: 131
    Pomógł: 0

    Witajcie otóż mam taki problem potrzebuję zrobić inkrementację oraz dekrementację zmiennej w przerwaniach zewnętrznych INT0 oraz INT1 na Atmedze644, wyzwalanie przerwania zrobiłem za pomocą przycisków zwieranych do masy (przerwania na zbocze opadające) i rzeczywiście po wciśnięciu jednego przycisku zmienna się inkrementuję a po przyciśnięciu drugiego przycisku zmienna się dekrementuję ale nie o 1 tak jak bym chciał. Założenie jest takie że jak wcisne przycisk jeden raz to do zmiennej doda się liczba 1, jak wcisnę drugi przycisk to od zmiennej odejmię się 1 jednak zmienna ta nieraz inkrementuje się o jeden ale nieraz o dwa, trzy itp. a ja chce żeby za każdy było to o wartość jeden.

    Poniżej 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.




    czy przerwania dobrze ustawiłem w rejestrach czy może o czymś zapomniałem?
    nie bardzo rozumiem do czego służy rejestr EIFR ale czy go ustawie czy nie to reakcja jest taka sama

    Proszę o pomoc

    jeszcze jedno w nocie katalogowej Atmegi644 na stronie 67 jest rejestr EIMSK w którym załącza się przerwanie i w rejestrze tym bit numer 0 jest to IINT0 nie wiem czy jest to błąd w nocie czy co ale jak widać występują tutaj na początku dwie litery "I" czyli IINT0 ale w kodzie to nie działa bo jest błąd, działa jak wpiszę się jedną literkę "I" czyli INT0


    i na koniec ciekawostka na początku w kodzie źle skonfigurowałem kierunki pinów bo zapomniałem o nawiasach i przesunięciu bitowym czyli wyglądało to tak


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


    a reszta kodu była tak jak wyżej, i była dziwna reakcja program się skompilował bez błędu i wgrał do procka jednak zmienna nie inkrementowała sie ani dekrementowała po przycisnięciu przycisków ale gdy zbliżałem palec do przycisków bez ich przyciskania to zmienna się zwiększała o losowe wartości hm troche to dla mnie dziwne już chciałem lecieć po księdza żeby odprawił egzorcyzmy nad moim zestawem uruchomieniowym gotronik



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2015, o 01:36 
    Offline
    Moderator
    Avatar użytkownika

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

    Zamiast leciec po ksiedza poczytaj o drganiach stykow ... co to takiego jest ... to zrozumiesz dlaczego masz taki efekt .... to nie jest czarymary ... to podstawy podstaw

    _________________
    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: 25 sie 2015, o 07:44 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Robiłem doświadczenia z "czytaniem" stanu przekaźników i rzeczywiście łączące się szybko styki potrafią dawać całą serię impulsów zamiast jednego, stąd bierze Ci się pewnie podwójna inkrementacja.
    Testowałem też sposób na pozbycie się tego problemu, Mirek opisał to w swojej pierwszej książce ....
    Pomysł polega na tym że kiedy program stwierdza że wcisnąłeś przycisk czeka w krótkiej pętli i testuje drugi raz ....
    Z grubsza polega to na tym :


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





    I fajnie to działa fajnie ... sprawdzałem .... opóżnienia rzędu 50...100ms są ok



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sie 2015, o 09:48 
    Offline
    Moderator
    Avatar użytkownika

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

    tomek napisał(a):
    Z grubsza polega to na tym :

    Z tymi pętlami opóźniającymi to był TYLKO I WYŁĄCZNIE poglądowy sposób, żeby ktoś w prostym ćwiczeniu zrozumiał w ogóle co to są drgania styków. ABSOLUTNIE nie jest to polecane rozwiązanie podczas pisania programów już docelowych bo wprowadza tylko zamieszanie, chaos i tragedię ;) ... troszkę przejaskrawiam ... ale jeśli by ktoś jeszcze wpadł na iście szatański pomysł aby takie pętle opóźniające dawać w przerwaniach to nie ma w tym co napisałem wyżej ŻADNEGO przejaskrawienia ;) .... Dlatego w dalszej części książki pokazałem inne i jedno z wielu ale prawidłowe podejście do obsługi eliminacji drgań styków a na blogu jeszcze inne i przy okazji prostsze dla początkujących:

    http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

    _________________
    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: 26 sie 2015, o 11:31 
    Offline
    Użytkownik

    Dołączył(a): 16 sty 2012
    Posty: 78
    Pomógł: 1

    Dokładnie o to mi chodziło ... dla zrozumienia zjawiska i jakichś prostych przykładów zastosowań gdzie nie jest istotne kilkadziesiąt ms w lewo czy prawo wystarczy.
    Dla bardziej wyśrubowanych w czasie projektów i programistów którzy powoli kumają co w trawie piszczy cykl artykułów które stworzyłeś o omijaniu problemów ze stykami, to taki swego rodzaju rodzynek, bo mało że w języku ojczystym to jeszcze w przystępnej formie .... tylko czytać i wbijać do głowy .. :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: 5 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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