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



Teraz jest 18 kwi 2026, o 19:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 19 sty 2014, o 15:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Witam.
Piszę malutki program, w którym trzeba obsługiwać przyciski jako, że nie chcę używać polecenia _delay_ms() to wymyśliłem sobie, że zrobię to w taki sposób:

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



w programie flagę wywołuję tak:

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


Jednakże taki sposób nie działa tak jak ja bym chciał (dziwnie "przerywa") dlatego, proszę o jakieś przykłady, jak to ma wyglądać.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 15:27 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

A jak zadeklarowana jest zmienna flaga i cnt?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 15:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Nie wiem co masz na myśli pisząc o przerywaniu
ale czy zmienną flaga i cnt masz ze specyfikatorem "volatile" ?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 15:36 
Offline
Użytkownik

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

A jak ustawiłeś timer? jaka częstotliwość taktowania, jaki uC?
Po drugie to ty nie wywołujesz flagi tylko sprawdzasz ją w programie głównym. Timer cały czas robi przerwanie i flaga jest ustawiana więc nie ma tu 100% pewności ze timer odmierzy wyznaczony czas. Bo przy wciśnięciu flaga może być równa 1 i zadziała od razu. Lepiej skorzystać z delaya bo tam jest pewność ze działa tak samo za każdym razem.


Autor postu otrzymał pochwałę

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 15:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Zaba napisał(a):
ale czy zmienną flaga i cnt masz ze specyfikatorem "volatile" ?

Tak jest volatile.

Cytuj:
A jak ustawiłeś timer?

To znaczy? Timer pracuje w trybie CTC z prescalerem 1024. Taktowanie wynosi 16MHz.

Janadamis napisał(a):
Lepiej skorzystać z delaya bo tam jest pewność ze działa tak samo za każdym razem.


To chyba będę musiał tak zrobić, jednakże czy mógłby kolega podać jakiś przykład wywoływania flagi?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 15:48 
Offline
Użytkownik

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

A co kolega rozumie poprzez wywołanie flagi??
To jest zwykła zmienna którą sprawdzasz w if'e jeśli ona wcześniej przyjęła wartość 1 to tutaj się wykona bo warunek będzie spełniony i tyle.


Autor postu otrzymał pochwałę

_________________
Programowanie to styl życia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 15:53 
Offline
Użytkownik

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

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


oczywiście gdy nie korzystasz z przerwań stosowanie volatile jest mało stosowne :)

taki mały przykład użycia flagi -- nap do sprawdzenia poprzedniego stanu diody LED

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



oczywiście przykład trochę z kosmosu i bezsensowny skoro i tak używamy w nim negacji
więc sprawdzanie stanu poprzedniego mija się z celem , ale mniej więcej tak można zastosować flagę
:) do sprawdzania przycisku czy coś tam :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 16:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Ok, dziękuję za wyjaśnienie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 sty 2014, o 16:29 
Offline
Użytkownik

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

proszę bardzo , jak widzisz nie jest aż takie skomplikowane jakkolwiek strasznie brzmi


Autor postu otrzymał pochwałę


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 3 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