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 15 cze 2025, o 11:49


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
    Autor Wiadomość
    PostNapisane: 29 kwi 2012, o 09:12 
    Offline
    Użytkownik

    Dołączył(a): 27 mar 2012
    Posty: 511
    Lokalizacja: Sląsk
    Pomógł: 14

    Witam
    W miarę już ogarnąłem timery. I teraz chcę zrobić taki projekt.
    Polega on na tym że program do jego obsługi chcę umieścić w timerze 2 a nie w programie głównym
    Ten program poniżej chcę umieścić w timerze 2. Timer będzie miał przerwanie co 1ms
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Zmienna czas jest sterowana z głównego programu
    I właśnie próbuję ale nie mogę sobie poradzić włożyć tego programu do timera.
    Chcę go mieć w timerze ponieważ w programie głównym będą inne funkcje które będą ciągle chodziły a ten program ma chodzić nie zależnie od programu
    Tylko że w timerze nie może być opóźnienia delay i dlatego mam ten poważny kłopot bo jak widać w programie delay jest sporo :(
    w zmiennej czas będzie liczba z zakresu 0-255
    Czy da się takie coś zrobić? i jak?
    Na marginesie powiem ze ten program obraza silnikiem krokowym. Bo ja chcę żeby 2 silniki chodziły nie zależnie dlatego bym program do sterowania 1 silnikiem umieścił w timerze0 a drugim w timerze2
    Proszę o pomoc

    _________________
    Programowanie to styl życia :D



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

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    ale że niby jak ??
    bo nie rozumiem jak chcesz coś umieścić w timerze0 i Timerze1
    przecież timerem generujesz sobie przerwanie, a nie w nim umieszczasz program....

    Chyba raczej chcesz to robić na przerwaniach , a nie w timerze ....

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2012, o 10:55 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 lut 2012
    Posty: 243
    Lokalizacja: wlkp
    Pomógł: 2

    Lepiej zarzuć tutaj cały kod. Bo wątpię, że ktokolwiek będzie w stanie coś z "tego" pomóc.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2012, o 12:29 
    Offline
    Użytkownik

    Dołączył(a): 27 mar 2012
    Posty: 511
    Lokalizacja: Sląsk
    Pomógł: 14

    Zmieniłem koncepcje i udało mi się zrobić
    Temat do zamknięcia

    _________________
    Programowanie to styl życia :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 29 kwi 2012, o 14:41 
    Offline
    Moderator
    Avatar użytkownika

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

    No ok ale niestety przedstawię KARDYNALNE błędy jakie popełniłeś żebyś wiedział o co chodzi i na przyszłość ich unikał jak OGNIA:

    1. NIGDY w przerwaniu nie stosuj poleceń _delay_xx() - NIGDY !

    2. NIGDY nie przekazuj zmiennej jako parametr dla funkcji typu _delay_xx() - NIGDY

    Nawet jeśli jakoś to poprawiłeś ale nadal stosujesz takie dziwne rzeczy to niestety - będziesz miał kłopoty :(

    _________________
    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 kwi 2012, o 12:04 
    Offline
    Użytkownik

    Dołączył(a): 27 mar 2012
    Posty: 511
    Lokalizacja: Sląsk
    Pomógł: 14

    mirekk36 napisał(a):
    2. NIGDY nie przekazuj zmiennej jako parametr dla funkcji typu _delay_xx() - NIGDY

    A to dlaczego?
    I jeżeli mam tego nie stosować to jak zmieniać opóźnienie za pomocą zmiennej?
    Aktualnie to zmienna pobierana z adc jest wprowadzana do tej delayx i ładnie tak jak obrócę potencjometr to tak szybko silnik krokowy chodzi.
    Jest jakaś inna funkcja opóźniająca gdzie można stosować za czas zmienną?

    _________________
    Programowanie to styl życia :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 kwi 2012, o 12:15 
    Offline
    Moderator
    Avatar użytkownika

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

    Janadamis napisał(a):
    mirekk36 napisał(a):
    2. NIGDY nie przekazuj zmiennej jako parametr dla funkcji typu _delay_xx() - NIGDY

    A to dlaczego?


    A to ciekawe? Piszesz tak jakbyś nie miał mojej książki pod ręką - w której nie dość że wyjaśniałem o co chodzi i powtarzać tutaj się nie będę bo musiałbym książkę przepisywać a szkoda czasu .... to tylko przypomnę, że jak nie doczytasz dlaczego - to sporo przykrych niespodzianek cię czeka - a później pojawisz się jak nie na tym to na innym forum i zadasz typowe pytania np:

    "a dlaczego jak użyłem _dleay_ms() to nagle po kompilacji program w pamięci flash rozrósł się o 2-3kB ???"

    albo jeszcze inne ..... no cóż - to jest temat strasznie często wałkowany i przeze mnie wyjaśniany już nawet nie tylko na elektrodzie ale i na tym forum wielokrotnie

    Tak samo i na tym forum i w książce masz przykłady jak obejść tą niedogodność - o ile można to nazwać niedogodnością - jeśli do pozbycia się jej wystarczy dosłownie jedna linijka - we własnej funkcji np:

    while( ms-- ) _delay_ms(1);

    jak tego użyć? tak jak mówiłem - masz o tym w książce nie tylko napisane i opisane ale także przykłady w kodach programów na DVD.

    _________________
    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 kwi 2012, o 12:57 
    Offline
    Użytkownik

    Dołączył(a): 27 mar 2012
    Posty: 511
    Lokalizacja: Sląsk
    Pomógł: 14

    Ok
    Faktycznie przypominam sobie kilka sposobów które były opisane w książce :)
    a więc już wszystko wiem.

    _________________
    Programowanie to styl życia :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 kwi 2012, o 13:11 
    Offline
    Moderator
    Avatar użytkownika

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

    W takim razie przypomnę ci jak zrobić własną funkcję do której możesz już spokojnie przekazywać opóźnienie w ms czy us

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


    napisanie takiej funkcji jak widzisz jest proste jak drucik

    _________________
    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 kwi 2012, o 14:49 
    Offline
    Użytkownik

    Dołączył(a): 27 mar 2012
    Posty: 511
    Lokalizacja: Sląsk
    Pomógł: 14

    Dzięki
    Przy da się :)

    _________________
    Programowanie to styl życia :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: 10 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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