ATNEL tech-forum
https://forum.atnel.pl/

Problem z wymuszonym opuszczeniem pętli for
https://forum.atnel.pl/topic21272-60.html
Strona 3 z 3

Autor:  SylwekK [ 19 gru 2018, o 18:38 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Wrzuć całość, bo takie sprawdzanie programu w kawałkach do niczego dobrego nie doprowadzi

Autor:  oowan [ 20 gru 2018, o 10:09 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

SylwekK napisał(a):
Wrzuć całość, bo takie sprawdzanie programu w kawałkach do niczego dobrego nie doprowadzi

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

Spróbowałem przy inicjalizacji ustawić timer_key na wartość 10, ale nic to nie dało.

Autor:  SylwekK [ 20 gru 2018, o 11:51 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Taaaak... :)
Może najpierw trochę porządków, bo są pewne nieścisłości. Proszę wyjaśnij to i wskaż jakiś wspólny mianownik:

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

Autor:  oowan [ 20 gru 2018, o 13:49 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

SylwekK napisał(a):
Może najpierw trochę porządków, bo są pewne nieścisłości.
Taaak, nie wiem jak ten PIND się tam znalazł? Po zmianie na PINB jest OK! :) Dzięki!
Teraz należy taką sekwencję wstawić w badanie kolejnych wejść. Myślę, że byłoby bardziej przejrzyście i elegancko, gdyby to ująć w funkcję. Muszę zajrzeć do BB, bo funkcja będzie mieć kilka argumentów :o

dziobak7 napisał(a):
Cztery poziomy zagnieżdżenia.
Ja naprawdę jestem początkujący, zasugeruj coś może w celu uproszczenia kodu, tworzonego w pocie czoła - tworzę jak potrafię. Jak widać nie ma się czym chwalić ;)

Po przemyśleniach, wykrystalizowała się 8-) taka funkcja
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wynika mi z tego, że każdy przycisk musi mieć osobny timer programowy dekrementowany w przerwaniu, bo chyba nie da się tego obsłużyć jednym timerem?

Autor:  SylwekK [ 21 gru 2018, o 23:33 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

oowan napisał(a):
Wynika mi z tego, że każdy przycisk musi mieć osobny timer programowy dekrementowany w przerwaniu, bo chyba nie da się tego obsłużyć jednym timerem?

Jeśli będzie to robione sposobem, który podałem to TAK, ale zawsze można inaczej to zrobić i o ile przyciski nie są wciskane równocześnie to można by z jednego timera korzystać.

Autor:  oowan [ 24 gru 2018, o 13:43 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

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

Nie wiem, czy znowu nie przekombinowałem, ale działa, przynajmniej to, co mam fizycznie podłączone do testów.

Życzę wszystkim WESOŁYCH ŚWIĄT!!!

Autor:  oowan [ 28 gru 2018, o 13:34 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Program powoli się rozrasta - dołożyłem wyłącznik czasowy do sterowania lampą przed garażem.
Jest to kolejny timer programowy (tym razem uint16_t) odliczany co sekundę w przerwaniu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wszystko działa prawidłowo, tylko że odliczana sekunda ma tak na oko 1,6s. Co może być przyczyną?

Autor:  Daro69 [ 28 gru 2018, o 17:35 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

witam,
oowan napisał(a):
, tylko że odliczana sekunda ma tak na oko 1,6s. Co może być przyczyną?

jeżeli przedstawisz ciało funkcji 'timer_init();', to może coś da się wywnioskować/wyliczyć.
Przejrzałem wątek i nie zauważyłem jak jest ustawiony timer.

Autor:  oowan [ 28 gru 2018, o 20:37 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

oowan napisał(a):
jeżeli przedstawisz ciało funkcji 'timer_init();', to może coś da się wywnioskować/wyliczyć.

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

Spróbowałem ten fragment
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
przenieść z obsługi przerwania do pętli głównej. Oczywiście zmienną cnt zmieniłem z lokalnej na globalną volatile.
Dioda migała, ale bardzo nieregularnie. Czasem kilka krótkich błysków, czasem dłuższe przerwy lub dłoższe świecenie.

Autor:  SylwekK [ 28 gru 2018, o 20:55 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Jeśli w pętli głównej używasz do timera 16-bitowej zmiennej, która jest odliczania w przerwaniach to ZAWSZE będzie problem z regularnym odliczaniem chyba, że... podczas tego odświeżania zostaną wyłączone przerwania (poczytaj atomic blok).

Autor:  oowan [ 12 sty 2019, o 08:10 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

SylwekK napisał(a):
Jeśli w pętli głównej używasz do timera 16-bitowej zmiennej, która jest odliczania w przerwaniach to ZAWSZE będzie problem z regularnym odliczaniem chyba, że... podczas tego odświeżania zostaną wyłączone przerwania (poczytaj atomic blok).
Poszedłem w innym kierunku - uruchomiłem drugi timer sprzętowy na 10Hz, do obsługi migania i odmierzania czasu świecenia lampy. To chyba prostsze rowiązanie? Chyba, że do odmierzania minut dla lampy dam osobny timer, 16-bitowy ;) Jakby nie było, tiny2313 ma dwa dwukanałowe timery :mrgreen:

Autor:  SylwekK [ 12 sty 2019, o 12:12 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Można i tak, ale wystarczy dodatkowy timer programowy z dzielnikiem przez, np. 100 dodać.

Autor:  oowan [ 21 sty 2019, o 14:19 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Praktycznie ukończyłem program. Jest wszystko co chciałem osiągnąć. Pewnie potrzebne będą jakieś korekty przy uruchamianiu sterownika - z tym poczekam do wiosny, nie chcę marznąć teraz w garażu :?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Wielkie dzięki za pomoc :!:

Autor:  SylwekK [ 21 sty 2019, o 16:09 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

Najważniejsze żeby wszystko już na stole działało w 100% zgodnie z założeniami wtedy po zainstalowaniu na bramie będzie łatwiej uruchamiać :)

Autor:  oowan [ 21 sty 2019, o 21:17 ]
Tytuł:  Re: Problem z wymuszonym opuszczeniem pętli for

SylwekK napisał(a):
Najważniejsze żeby wszystko już na stole działało w 100% zgodnie z założeniami wtedy po zainstalowaniu na bramie będzie łatwiej uruchamiać :)

Sam ATtiny działa w 100%, ale sterownik będzie zawierał jeszcze dwa komparatory na LM393 - jeden do czujnika zmierzchowego, drugi do zabezp. przeciążeniowego, współpracujący z modułem pomiaru prądu na ukłdzie ACS712. I tu mogą zdarzyć się niespodzianki, a niespodzianki mnie lubią, bez wzajemności :twisted:
Może też się okazać konieczne zamienić miejscami jakieś piny, żeby uprościć ścieżki na płytce.
Na razie dopracowuję schemat na papierze. Muszę to przespać, kilka razy przemyśleć, może nasunie się jakiś nowy pomysł. Został mi jeden wolny pin w mikrokontrolerze, więc kto wie? ;)
Gdy to dopracuję, na pewno umieszczę całą konstrukcję w dziale DIY.

Strona 3 z 3 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/