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 07:53


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 9 kwi 2013, o 20:18 
    Offline
    Użytkownik

    Dołączył(a): 20 lut 2013
    Posty: 54
    Pomógł: 0

    Witam,
    Odliczanie czasu w pętli przez wait, nie jest chyba najlepszym rozwiązaniem. Chciałbym to zrealizować na przerwaniach. Jak mogę to zrobić na atmedze32? Chodzi mi o odliczanie np. 200ms.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 kwi 2013, o 20:29 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    - ustalasz przerwanie na przykład co 1ms
    - dajesz jakąś zmienną
    - w przerwaniu zwiększasz ją
    - jak zliczysz do 200 to masz odliczone 200ms
    - zerujesz zmienną i liczysz od nowa

    Ot i po kłopocie.

    Przykład:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 kwi 2013, o 21:35 
    Offline
    Użytkownik

    Dołączył(a): 20 lut 2013
    Posty: 54
    Pomógł: 0

    A taki bardziej kompletny przykład?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2013, o 06:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 30 wrz 2012
    Posty: 70
    Pomógł: 0

    To może coś takiego:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2013, o 13:56 
    Offline
    Użytkownik

    Dołączył(a): 20 lut 2013
    Posty: 54
    Pomógł: 0

    Jak wstawie pod 200ms wartość 50 to odliczy mi 50ms, a nie 200ms. Dobrze to policzyłeś? Sprawdzałem ze stoperem, to wpisanie wartości 5000 da mi 5 sekund. Jest to atmega32 z taktowaniem zewnętrznym 16mhz i chciałbym to zrobić na timer1 jest on 16 bitowy.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2013, o 15:39 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Zauważ kolego co kolega copek wpisał wyżej. Nie sprawdzałem tego z kalkulatorem przerwań w ręku, ale jeśli dobrze wyliczył przerwanie to będzie występowało ono co 4ms. Jeśli zmienna dojdzie do 50 a pomnozysz to przez 4ms to otrzymasz ile?

    DING DING DING. Bingo, właśnie 200ms.
    Wygrywasz powyższy kod który możesz sobie wklepać do bascoma i skompilować.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2013, o 18:11 
    Offline
    Użytkownik

    Dołączył(a): 20 lut 2013
    Posty: 54
    Pomógł: 0

    Przeczytałeś co napisałem? Nie zgadza się ten czas z rzeczywistym. Być może źle policzył. W sumie wystarczyła by mi pomoc w wyliczeniu odpowiednich wartości, by uzyskać czas taki jaki potrzebuje. Interesowała by mnie możliwość odliczenia 1ms.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2013, o 19:07 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Kolega pomylił się tylko co do prescalera który powinien wynosić 256 przy zegarze 16MHz i masz przerwanie co 4ms.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 kwi 2013, o 19:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 30 wrz 2012
    Posty: 70
    Pomógł: 0

    matrix napisał(a):
    Kolega pomylił się tylko co do prescalera który powinien wynosić 256 przy zegarze 16MHz i masz przerwanie co 4ms.
    Nie zauważyłem iż ma być zegar 16MHz, zapomniałem dodać iż obliczenia były dla 4MHz.



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

    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO