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



Teraz jest 1 sty 2026, o 20:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
 Tytuł: PETLA+SWICH
PostNapisane: 21 lip 2014, o 10:03 
Offline
Nowy

Dołączył(a): 19 lip 2014
Posty: 21
Pomógł: 0

Czesc, mam pytanie odnośnie poniższego programu. Trochę się nagłowiłem sam zanim napisałem tu na forum i nie doszedłem do rozwiazania. A pytanie jest następujące.

1. Jak napisać ten kod żeby funkcja LEDS po jednokrotnym włączeniu przycisku (swich_on) zapętlała się w nieskończoność a po kolejnym jednokrotnym włączeniu swicha zatrzymywala się? i analogicznie - ponowne zalaczenie i ponowne wylaczenie. Taki wiecie jumperek ktory sluzy jak on/ff. Nie mam pojecia jak to programowo zrobić,probowałem kombinowac z do..while, break ale nic nie wychodziło:/



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  
 Tytuł: Re: PETLA+SWICH
PostNapisane: 21 lip 2014, o 10:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Musisz dodać zmienną która będzie pamiętała poprzedni stan i zmieniać w momencie wciśnięcia przycisku, wciśnięcia a nie trzymania.

Dużo lepiej by było jak byś obsługę przycisku zrobił na przerwaniach. Zauważ też że funkcja LEDS blokuje działanie programu.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PETLA+SWICH
PostNapisane: 21 lip 2014, o 11:25 
Offline
Użytkownik

Dołączył(a): 05 lut 2014
Posty: 252
Lokalizacja: obok Częstochowy
Pomógł: 14

Tak by mogła wyglądać obsługa klawisza bez przerwań:
klawisze.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


klawisze.h
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  
 Tytuł: Re: PETLA+SWICH
PostNapisane: 21 lip 2014, o 13:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Faktycznie bez przerwań jest to niewykonalne, gdyż program zatrzymany na którymś z "delay'ów" nie jest w stanie robić nic innego (sprawdzać warunku).
Rozwiązań tego problemu może być co najmniej kilka. Pierwszym i wydaje mi się najprostszym jest użycie liczników sprzętowych bądź programowych (które i tak de facto opierają się o timery sprzętowe).
Kolejny sposób to przerwania zewnętrzne (INT) i "zabawa" ze stosem (wywłaszczenie zadań). Jest jeszcze jeden pomysł, który przechodzi mi do głowy i jest rozwinięciem poprzedniego tj. RTOS.

Jednak na początek polecam pierwszą metodę ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PETLA+SWICH
PostNapisane: 21 lip 2014, o 16:05 
Offline
Nowy

Dołączył(a): 19 lip 2014
Posty: 21
Pomógł: 0

To pewnością za wysoka szkoła jazdy jak dla mnie jeszcze :/
Nie wiedziałem, że tak banalna obsługa klawisza w skutkach okaże się tak skomplikowana w języku C.
Przerwań jeszcze nie robiłem, nie mam pojęcia też jak wykorzystać do tego TIMER, powoli z pomocą niebieskiej książki jakoś do tego dojdę.
Dzięki za pomoc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: PETLA+SWICH
PostNapisane: 22 lip 2014, o 08:10 
Offline
Nowy

Dołączył(a): 19 lip 2014
Posty: 21
Pomógł: 0

No faktycznie, po wprowadzeniu poprawek z tym kodem działa to ale tylko w połowie. Ponieważ pętla leci i da się ja wyłaczyć jumperkiem w momencie kiedy kończy swój obieg i jumperek jest "on". Nie do końca o to chodziło ponieważ chciałem przerywać pętle w dowolnym momencie jej trwania i wzbudzać ponownie ( niekoniecznie w momencie w którym stanęła). CHyba jednak bez przerwań się nie obejdzie, żeby to zrealizować. Dzięki za pomoc, zawsze to jakiś kolejny krok w nauce :)



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

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