Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 gru 2025, o 14:43


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 13 gru 2016, o 00:04 
Offline
Użytkownik

Dołączył(a): 05 lis 2015
Posty: 92
Pomógł: 0

Witam wszystkich, próbuję zrozumieć działanie programów, w których to nie używa się opóźnień w postaci _delay_ms.
Wykorzystuje do tego celu timer oraz flagi tak jak to Pan Mirek wytłumaczył w BB. Jednak przerobienie programu, wkórym były opóźnienia w postaci delay, na program gdzie czas dedykuje tylko timer troche sprawia mi kłopoty.
Np. tutaj.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 00:38 
Offline
Użytkownik

Dołączył(a): 27 lut 2013
Posty: 230
Pomógł: 4

Nie pokazałeś co zmienia zmienną "flaga_sek" na wartość większą od zera (prawdę)

Jeśli ona jest tylko powołana do życia na początku programu to automatycznie przypisaną ma wartość 0 więc warunek się nie wykona.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 06:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

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


Tak jak kolega "michal1210" napisał. :) - gdzie i w jaki sposób ustawiasz flaga_sek ?

w pierwszym wierszu warunek jest spełniony gdy flaga_sek > 0.
(gdzieś systematycznie musisz przypisywać flaga_sek=1; )

w drugim wierszu warunek jest spełniony gdy reszta z dzielenia wartości sekund przez 10 wynosi 0.
(czyli co 10 sek.)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 11:39 
Offline
Użytkownik

Dołączył(a): 05 lis 2015
Posty: 92
Pomógł: 0

Przepraszam muszę poprawić nad swoim wyjasnienie tematu na przyszłość, jeśli wgl o coś pytam. Spowodowane jest to tym, że jak mi coś nie wychodzi to jeste zdenerwowany i się nie cierpliwie :P Po raz kolejny dziękuję za odzew z waszej strony.
Zmienne flaga_sek pochodzi o timera. Robię coś podobnego jak Pan Mirek w BB przy opisie czujników one wire.
Problem polegał na tym, że jak wykonuje kilka rzeczy w programie w jednym czasie to pod warunkiem if(flaga_sek){} muszą znaleźć się w tym samym miejscu wszystkie te rzeczy, a nie oddzielnie ( kilka tych samych warunków). Nie wiem czy jasno to powiedziałem... Jak coś to wyjasnie to jaśniej ;p Dzięki wielkie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 11:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 19:33 
Offline
Użytkownik

Dołączył(a): 05 lis 2015
Posty: 92
Pomógł: 0

Dzięki za podpowiedzi. Mam jeszcze jeden problem lub może nie problem, a takie rozmyślanie. Powiem o co chodzi...Trochę sie waham o tym pisać, ponieważ nie jest to związane za bardzo z tematem wątku. Problem polega na tym, że w pętli głównej, mam kilka funkcji i program sobie działa. Pokaże to ta obrazowo:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jednak chciałbym wprowadzić do programu taką zmianę. Program działa ciągle ale bez komunikacji z PC. Jednak gdy wcisnę na chwilę klawisz to aktywuje się działanie funkcji uart(); , wyłączam działanie funkcji pomiar(); natomiast pozostałe funkcje pracują. I taką zmianę chciałbym wporwadzać na okres od kliknięcia klawisza do ponownego kliknięcia klawisza.
Zastanawiam sie jak można to zrealizować. Rozmyślałem nad przerwaniami , ale do tej pory korzystałem z nich, aby po np. jakimś przerwaniu zewnętrznym wykonać dany algorytm. Natomiast tutaj trochę to innaczej wygląda.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 20:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

czy już pisałeś obsługę klawiszy ?
jeżeli tak to kliknięciem zmieniaj wartość zmiennej z 1 na 0 i odwrotnie.
jeżeli jeden to wykonuj funkcję 1.
jeżeli 0 to wykonuj funkcję 2.

albo kliknięcie to inkrementacja "zmienna++;"

jeżeli zmienna==1 to - f_1;f_2...
jeżeli zmienna==2 to - f_3; f_5...
jeżeli !zmienna to - f_1;f_2;f_3.....
...


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 20:32 
Offline
Użytkownik

Dołączył(a): 05 lis 2015
Posty: 92
Pomógł: 0

Dzięki bardzo za odpowiedź. W sumie myslałem nad własnie takimi jakby flagami( jeszcze nie tesotwałem) . Zastanawiam sie tylko czy to jak to mówią "eleganckie" rozwiązanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 gru 2016, o 21:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Bardziej "eleganckim" rozwiązaniem jest zastosowanie mechanizmu callbacków.
Poczytaj: topic2783.html

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



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 1 gość


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