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



Teraz jest 18 kwi 2024, o 21:21


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 1 maja 2019, o 21:33 
Offline
Nowy

Dołączył(a): 17 sie 2015
Posty: 20
Pomógł: 0

Mam problem z program . Chciałem aby na wyświetlaczu LCD w czwartej Lini zapalał się napis ZAL. kiedy SYSTEM_PIN =1 a WYL. kiedy SYSTEM_PIN = 0. Niestety mimo zmiany stanu z niskiego na wysoki SYSTEM_PIN napis na ekranie widnieje wciąż WYL. W czym tkwi problem. Jak Powinno wygladac kod. wyświetlania czwartej LINI?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2019, o 22:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

#define SYSTEM_PIN (1<<PD6)
To zawsze bedzie prawdą. Nie zmienia sie na 0



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2019, o 22:18 
Offline
Nowy

Dołączył(a): 17 sie 2015
Posty: 20
Pomógł: 0

Hm... To jak inaczej zdefiniować funkcje if żeby kiedy na PD6 jest 0 było na LCD WYL. a kiedy 1 było ZAL. ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2019, o 22:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

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


Albo jakas zmienna powołaj którą bedziesz zmieniac w zaleznosci od przycisku.

Ale zauwaz, ze u Ciebie ( pomijajac to ze to nie jest zmienna tylko definicja preprocesora ) ty nigdzie nie zmieniasz jej wartosci



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2019, o 22:30 
Offline
Nowy

Dołączył(a): 17 sie 2015
Posty: 20
Pomógł: 0

Niestety napisanie funkcji w ten sposób nadal skutkuje ciągłym Napisem WYL.
Składnia: [ Pobierz ] [ Ukryj ]
język c_mac
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 maja 2019, o 22:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

@jez2000 dobrze Ci podpowiedział. Musisz używać jakiejś flagi typu bool albo nawet int choć to przerost formy. Nigdzie nie widze zmian tej zmiennej nawiasem mówiąc.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2019, o 06:13 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

< czy << powinno być? :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2019, o 07:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

No pewnie ze chodzilo o dwa. Zjadlo jeden :)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2019, o 08:20 
Offline
Nowy

Dołączył(a): 17 sie 2015
Posty: 20
Pomógł: 0

Dziękuje problem rozwiązany. Mam jeszcze jedno pytanie do kolegów bo to mój pierwszy bardziej rozbudowany program. Gdy program był napisany tylko załącz, wyłącz (PD6) zmiana stanu odbywała się błyskawicznie. Odkąd rozbudowałem o funkcje pomiaru na ADC i wyświetlania napisów na LCD przyciski muszę trzymać około 1s żeby zmienić stan wyjścia. Czy taki jest już urok mikroprocesorów że działają linia po linii? Jak można by to usprawnić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2019, o 08:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Uzywasz delay i w każdym obiegu wstrzymujesz program na 500ms. Odmierzanie czasu zastąp to jakimś timerem.
Na YT jest poradnik Mirka nt timerów.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2019, o 20:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2015
Posty: 313
Lokalizacja: Czerwionka-Leszczyny
Pomógł: 22

No i ten nieszczęsny delay w tej funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Czas drgania styków realizuje się w trochę inny sposób aby nie robić sobie dodatkowych problemów.
Zajrzyj np. tu http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html
Wyrzuć tego okropnego delay-a.

_________________
http://www.avrboss.pl



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

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