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 5 maja 2025, o 04:36


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 36 ]  Przejdź na stronę Poprzednia strona  1, 2
    Autor Wiadomość
    PostNapisane: 11 mar 2016, o 12:12 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2014
    Posty: 155
    Zbananowany użytkownik

    Pomógł: 0

    kicajek napisał(a):
    Witam
    Tak szczerze mówiąc to nie wiem jak byś to miał robić za pomocą ADC - ale nie znam tematu; być może tak się robi tylko zastanawia mnie sposób pomiaru bo jego częstotliwość jest ograniczona. Jeśli jeszcze nic nie robiłeś na tych czujnikach to możeT U T A J coś się dowiesz. Co prawda kod "nie po naszemu" ale dobrze komentowany wię można podejrzeć. Tak nawiasem mówiąc na naszym forum często jest jak w kryminale - na samym końcu dowiadujemy się kto jest głównym winowajcą ;) - może trzeba było zacząć od nakreślenia celu, a nie od luźnego zagadnienia "Pomiar czasu trwania impulsu".
    Pięć czujników - ( jak wspominałem nie znam tematu ) tutaj chyba trzeba wykorzystać PCINT - więc jednak odsyłam do (najlepiej od początku ) do cz.III przerwań.

    Pozdr.


    Za pomocą ADC, można to zrobić ale za pomocą innych czujników które na wyjściu dają napięcie proporcjonalne do odległości, są sporo droższe niestety.

    ------------------------ [ Dodano po: 11 minutach ]

    Cytuj:
    ISR(INT0_vect){
    if(INT0_down)


    Ten warunek if to do sprawdzenia z jakim zboczem powodującym przerwanie mamy do czynienia?

    Twój kod jest bardzo prosty, a przez to bardzo skomplikowany :), aby go pojąć trzeba myśleć jak sam procesor a to jeszcze nie mój poziom :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2016, o 12:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 paź 2014
    Posty: 233
    Lokalizacja: Rzeszów
    Pomógł: 11

    Jeśli impuls może być podany na inny port niż INT0, a chcesz bardzo dokładnie zmierzyć jego długość, proponuję wykorzystać mechanizm input capture dla timera.

    W przerwaniu musiałbyś zmienić bit ICES.

    _________________
    Mr. Nobody



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 mar 2016, o 16:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 sty 2013
    Posty: 1760
    Pomógł: 196

    Witam
    Hannibal9 napisał(a):
    Ten warunek if to do sprawdzenia z jakim zboczem powodującym przerwanie mamy do czynienia?

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

    a wiesz, że jest to makro sprawdzające czy na danym PIN'ie jest stan niski - tak samo jak dla klawiszy bo to bez różnicy.
    Cała robota ;) wykonywana jest w zależności od tego jaki stan wywołał przerwanie - a któryś musiał bo ono wystąpiło.
    Po wejściu w przerwanie jest sprawdzany poziom logiczny wejścia (bo można to robić - a z uporem maniaka odsyłam...) i jeśli jest stan niski "włazi" do:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    zatrzymywany jest TIMER0 który liczył nam tyknięcia TCNT0, odczytana jest wartość TCNT0 i ustawiona flaga. Jeśli poziom jest inny ( czyli wysoki ) następuje:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    wyzerowanie, wyzerowanie i wio :)
    Użycie flagi jak i buf_t0 jest chyba jasne.

    Pozdr.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 mar 2016, o 07:25 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2014
    Posty: 155
    Zbananowany użytkownik

    Pomógł: 0

    APAP75 napisał(a):
    Jeśli impuls może być podany na inny port niż INT0, a chcesz bardzo dokładnie zmierzyć jego długość, proponuję wykorzystać mechanizm input capture dla timera.

    W przerwaniu musiałbyś zmienić bit ICES.

    Taki sposób już przerobiłem, chodzi bardzo dobrze.

    Do czego służy bit TOV1?

    ------------------------ [ Dodano po: 34 minutach ]

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    , a ten zapis?
    rozumiem że przerwania wykonywane są z częstotliwością 8000000/64/256, jeżeli przesuniesz wynik 0 8 bitów w lewo to pozbywasz się tego dzielnika 256 - tak?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 mar 2016, o 08:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 11 sty 2013
    Posty: 1760
    Pomógł: 196

    Witam
    Hannibal9 napisał(a):
    jeżeli przesuniesz wynik 0 8 bitów w lewo

    ...to tak jakbyś pomnożył przez 256 - czyli w sumie Twój zapis jest OK - taki zbieg okoliczności :) .
    W kodzie jest
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    czyli co jedno przerwanie ( 256 tyknięć ) jest zwiększane o jeden. Jeśli wystąpiło kilka przerwań to wynikiem sumarycznym tyknięć jest te klika * 256 co jest jednoznaczne z kilka<<8

    Pozdr.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 kwi 2016, o 18:34 
    Offline
    Użytkownik

    Dołączył(a): 19 gru 2014
    Posty: 155
    Zbananowany użytkownik

    Pomógł: 0

    Musiałem przerwać prace nad moim projektem, ale wracam do niego, jak myślicie czy można mierzyć odległości za pomocą 3 czujników HC-SR04 poprzec ICP1?

    - wejścia czujników Trig podpinam pod wyjścia procesora,
    - wyjścia czujników Echo czujników podpinam przez diody do wejścia procesora ICP1,
    - podaję impuls na wejście Trig pierwszego czujnika i odczytuję długość impulsu z pierwszego czujnika
    - itd z pozostałych czujników
    - czy moja koncepcja jest słuszna?



    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: 36 ]  Przejdź na stronę Poprzednia strona  1, 2

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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