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



Teraz jest 11 sty 2025, o 04:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
 Tytuł: Flaga
PostNapisane: 3 lut 2016, o 18:56 
Offline
Użytkownik

Dołączył(a): 14 mar 2015
Posty: 25
Pomógł: 0

Witam,
mam problem z działaniem zaprogramowanej flagi.
Tworzę flagę jako zmienną globalną
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przy jej pomocy chciałbym wywoływać odpowiednio dane funkcje po wciśnięciu przycisku
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Funkcje są oczywiście zadeklarowane
Program nie działa w miejscu gdy w kontrola_flagi_KL3_KL4 przypisuje flaga_zbiornika = 0;
Chciałbym aby przy pierwszym wciśnięciu, wykonało się to co będzie po wciśnięciu przycisku. Kiedy wcisnę przycisk kolejny raz ma się wyświetlić "Zanurzenie STOP" i tak na zmianę.
Co może być z tym nie tak? Dla mnie teoretycznie wygląda wszystko dobrze, a jednak nie działa :shock:
Pozdrawiam



Ostatnio edytowano 3 lut 2016, o 19:50 przez DanielM, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Flaga
PostNapisane: 3 lut 2016, o 19:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

W programie wchodzisz w funkcję kontrola_flagi_KL3_KL4() i jak masz wartość 2 dla zmiennej flaga_zbiornika ustawiasz ją na 0 a następnie wywołujesz if-a który od razu zmienia ją na 2.

Pewnie zmienna jest jeszcze gdzieś indziej używana, bo musi być między innymi zainicjalizowana oraz obsługiwane inne działania o których wspominasz a ich nie pokazałeś.
Czy przypadkiem nie zmieniasz tej zmiennej gdzieś w przerwaniach?

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Flaga
PostNapisane: 3 lut 2016, o 20:01 
Offline
Użytkownik

Dołączył(a): 14 mar 2015
Posty: 25
Pomógł: 0

rskup napisał(a):
W programie wchodzisz w funkcję kontrola_flagi_KL3_KL4() i jak masz wartość 2 dla zmiennej flaga_zbiornika ustawiasz ją na 0 a następnie wywołujesz if-a który od razu zmienia ją na 2.

Pewnie zmienna jest jeszcze gdzieś indziej używana, bo musi być między innymi zainicjalizowana oraz obsługiwane inne działania o których wspominasz a ich nie pokazałeś.
Czy przypadkiem nie zmieniasz tej zmiennej gdzieś w przerwaniach?

--
Pozdrawiam,
Robert

No właśnie flaga ma być też sterowana w przerwaniu, ale narazie powyłączałem wszystko z nią związane i zainicjowałem ją jako zmienna globalna. Przerwanie jest włączone od timera1, ale odpowiada ono za transmisje 433MHz, nie ma tam nic z tą flagą.
Dodałem pod przycisk kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Powinno działać teraz, że na zmianę na LCD wyświetla mi "KL3 zanurzenie start" i "Zanurzenie stop". Po odpaleniuprogramu włącza się "Zanurzenie start" i dalej nie reaguje przycisk. Gdy zakomentuje flaga_zbiornika = 0; działa tak jak powinno czyli "Zanurzenie start" potem "Zanurzenie stop" i koniec, czyli się zgadza



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Flaga
PostNapisane: 3 lut 2016, o 20:45 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

Troszeczkę nie rozumiem i nie umiem ci wytłumaczyć, ale zobacz jak to powinno być wykonane.
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: Flaga
PostNapisane: 3 lut 2016, o 21:03 
Offline
Użytkownik

Dołączył(a): 14 mar 2015
Posty: 25
Pomógł: 0

Tylko ja chciałbym to sprawdzanie flagi mieć w osobnej funkcji i dla kilku różnych wartości flagi, coś w ten sposób co stworzyłem, tylko rozbudowane.
Przypisanie jakiejś wartości do zmiennej globalnej blokuje wykonanie funkcji. Ktoś może wytłumaczyć czemu tak się dzieje?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Flaga
PostNapisane: 3 lut 2016, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Ale te dwie wersje się różnią warunkami. Pierwszy działa tak po naciśnięciu klawisza:
- jeżeli (flaga_zbiornika == 2) => wyświetl "Zanurzanie: STOP" na LCD i ustaw flaga_zbiornika = 0
- jeżeli (flaga_zbiornika == 0) => wyświetl "Zanurzanie start" na LCD i wstaw flaga_zbiornika = 2
Czyli jak wykona się pierwsza część to od razu wykonuje się druga i start nadpisuje STOP.
W drugim jak masz gdy (flaga_zbiornika == 0) wyświetlasz napis start i ustawiasz flaga_zbiornika = 2 a STOP wyświetlasz gdy masz 0, więc w tym wywołaniu nie zostanie to wykonane.

--
Pozdrawiam,
Robert

------------------------ [ Dodano po: 1 minucie ]

Musisz rozpisać sobie wartości flagi i co przy nich robisz oraz kiedy je zmieniasz. I będzie mógł korzystać ze swoich dodatkowych funkcji.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Flaga
PostNapisane: 3 lut 2016, o 21:37 
Offline
Użytkownik

Dołączył(a): 14 mar 2015
Posty: 25
Pomógł: 0

No tak, zaczajone :D
za dużo czasu przed kompem dzisiaj chyba i już mózg nie pracuje



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Flaga
PostNapisane: 9 lut 2016, o 09:33 
Offline
Nowy

Dołączył(a): 09 lut 2016
Posty: 8
Pomógł: 0

DanielM napisał(a):
No tak, zaczajone :D
za dużo czasu przed kompem dzisiaj chyba i już mózg nie pracuje


Nadmiar komputera nie sprzyja szybkiemu myśleniu :) Znam to ...



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

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