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



Teraz jest 29 mar 2024, o 10:56


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 50 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 15 kwi 2015, o 16:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!

Od kilku dni walczę z obsługą PCF8583 w języku C. Korzystam z kodów do obsługi magistrali TWI z BB oraz poradnika zamieszczonego przez kolegę Villen na forum elektroda.pl http://www.elektroda.pl/rtvforum/topic1651785.html.
Prawie wszystko działa dobrze (tak mi się wydaje) oprócz obsługi numeru dnia tygodnia. Nr dnia tygodnia uparcie odpowiada jednostkom miesiąca, a nie rzeczywistej wartości. Podejrzewam, że błąd jest w maskowaniu bitów lub przesunięciach bitowych. Dzień tygodnia jest źle zapisywany lub źle odczytywany. Bardzo proszę o sprawdzenie kodu i pomoc w rozwiązaniu problemu.

Pozdrawiam
avrfun

Obrazek

Obrazek

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: 15 kwi 2015, o 18:13 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

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


PS. dla dni tygodnia i roku nie musisz używać dec2bcd i bcd2dec ponieważ to tylko jedna cyfra


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 18:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!

Bardzo dziękuję za szybką pomoc. Dzień tygodnia wyświetla się prawidłowo! Podpowiedz jeszcze proszę czy jest jakiś algorytm zamiany numeru roku 0-3 na rok w pełnym formacie (np. 2015)?
Jeszcze raz wielkie dzięki! Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 18:50 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

avrfun napisał(a):
Podpowiedz jeszcze proszę czy jest jakiś algorytm zamiany numeru roku 0-3 na rok w pełnym formacie (np. 2015)?

No musisz sam wymyślić.
Przykładowo wiadomo, że zegar ma jeszcze sporo wolnych komórek pamięci od adresu 0x10 do 0xFF. Do 0x10 zapisujesz 2015>>8 do kolejnej (0x11) wpisujesz (uint8_t)2015 i do następnej (0x12) rok_write_copy. Nie wyświetlasz rok_write zegara, ani rok_write_copy zapisane w wolnej pamięci tylko odczytujesz obie wartości i jak są sobie równe to wyświetlasz to co masz w komórce 0x10 i 0x11. Jak są różne to tą różnicę, która zwykle wynosi 1 dodajesz do odczytanego pełnego roku z 0x10 i 0x11 i od razu zapisujesz w to samo miejsce, a potem zapisujesz też rok_write z zegara do komórki 0x12 (więc znowu te zmienne są równe). Jak odczyt zegara nie nastąpi przez 4 lata to masz pecha, ale to mało prawdopodobne, aby nie było prądu przez 4 lata.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 18:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Trudny temat do ogarnięcia dla amatora. Muszę to sobie chyba jakoś rozpisać. Rozumiem, że nie można zrobić tego w kodzie programu poprzez proste dodanie: miniony rok przestępny (2012) + aktualny rok 3 (0-3) i otrzymać w efekcie 2015, a nastepnie wpisać do programu kolejny rok przestępny (2016) gdy licznik pokaże 0 (0-3).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 19:07 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Możesz tak zrobić, ale jak zabraknie prądu to program zacznie się od początku i będzie znowu rok z zakresu 2012-2015.

Na początek po prostu zapisz coś pod adresem 0x10 w końcu to tylko tyle:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Powyższy kod powinien być wykonany tylko przy spełnieniu jakiegoś warunku (przytrzymanie klawisza podczas startu, albo założona zworka)

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 19:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Zrobiłem tak jak mówisz. Co teraz?

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: 15 kwi 2015, o 19:46 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Tylko nie wiadomo co masz w rok_write. Troszkę bym to zmodywfikował biorąc pod uwagę zapis rok_write:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


Nie ma sensu tworzenie nowych zmiennych do każdej operacji. Możesz ten sam bufor wykorzystać wielokrotnie i tą samą zmienną wykorzystać do zapisu i odczytu.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 20:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Zrobiłem tak jak napisałeś, ale komplilator zgłasza ostrzeżenie w linii 133: suggest parentheses around '+' inside '<<' [-Wparentheses]. W powyszych ustawieniach w miejsce lcd_int(pelny_rok) otrzymuję 7. Może źle zainicjowałem zmienne pełny_rok i rok_kopia? Zastanawia minie linia 92 i uint8_t(pelny_rok). Ja powyżej zadeklarowałem zmienną pelny_rok jako uint16_t.

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


------------------------ [ Dodano po: 12 minutach ]

Dodałem nawiasy w linii 133 i działa!!! Rok 2015 jest na LCD. Zmienił się sprawnie na 2016, w grudniu oczywiście. Jesteś wielki! Jakby przetłumaczyć 0-6 na poniedziałek-niedziela byłaby pełna szczęścia. Jak masz jeszcze trochę cierpliwości to podpowiedz jak to zrobić proszę? Na marginesie mam kilka martwych układów poprzez nieopaczne złe ustawienie bitów rejestrze kontrolnym PCF8583 (0x00). Jak zapisać rejestr kontrolny PCF8583 pod adresem 0x00, aby powrócił do ustawień fabrycznych i odblokować układy. Dziękuję jeszcze raz za ogromną pomoc. Dzięki Tobie zrobiłem skok jaj Neil Armstrong na Księżycu, szacunek! Chciałby się odwdzięczyć, ale nie wiem jak? Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 20:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

avrfun napisał(a):
Jakby przetłumaczyć 0-6 na poniedziałek-niedziela byłaby pełna szczęścia.

Robisz tablicę 7 elementów w postaci tekstów: poniedziałek, wtorek, itd. do niedzieli. A następnie w odwołaniu indeksujesz ją wartościami odczytanych dni tygodnia z PCF.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2015, o 21:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Dzięki tak uczynię!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 15:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!

Walczę nadal z przyporządkowaniem nazw dni tygodnia do wartości odczytanych dni tygodnia z PCF (zmienna dzien_tygodnia). Wymyśliłem taką konstrukcję:

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


Chciałbym, aby w kodzie programu po odczytaniu zmiennej dzien_tygodnia, został jej przyporządkowany (przekazany do zmiennej nazwa_dnia) i wyświetlony na lcd odpowiedni element tablicy. np. dzien_tygodnia=4 -> nazawa_dnia="piatek" -> lcd_str(nazwa_dnia). Czy moje pojmowanie problemu jest prawidłowe? Jak to zapisać w kodzie programu? Bardzo proszę o pomoc.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 16:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

A po co te cyfry w strukturze ? przecież wystarczy zwykła tablica której indeksy od 0 do 6 będą tymi numerami dnia tygodnia.

Warto obejrzeć sobie ten poradnik
https://www.youtube.com/watch?v=tIS1LX6if3E

i zobaczyć co to znaczy metoda tablicowa - bo nie tylko do diod można ją stosować.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 17:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Obejrzałem poradnik. Próbuję pisać tak:

1. Deklaracja zmiennej:

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


2. Definicja tablicy:

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


3.Użycie wyliczonej wartości dziesiętnej jako numeru indeksu tablicy:

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


4. Próba wyświetlenia nazwy:

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


Kompiluje się z ostrzeżeniem przy definicji tablicy:
Multiple markers at this line - multi-character character constant [-Wmultichar] - large integer implicitly truncated to unsigned type [-

Ostatecznie wyświetla dziwny znaczek w miejscu nazwy.

Co robię źle?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 17:58 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

avrfun napisał(a):
Co robię źle?

Właściwie to wszystko ;)
Napisy należy umieszczać w pamięci programu podobnie jak tablicę wskaźników do nich. Spróbuj to zrozumieć:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 18:10 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

avrfun napisał(a):
Kompiluje się z ostrzeżeniem przy definicji tablicy:
Multiple markers at this line - multi-character character constant [-Wmultichar] - large integer implicitly truncated to unsigned type [-

Ostatecznie wyświetla dziwny znaczek w miejscu nazwy.

Warto zajrzeć d Bluebooku do podstaw C i zobaczyć czym się różni apostrof od cudzysłowu.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 18:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Dziękuję, ale jak teraz przypisać wskaźnik do numeru dnia tygodnia uzyskanego z RTC? Nie rozumiem ideii:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
wskaźnik powinien pokazać "piatek" w tablicy dni. Kompiluje sie z błędem przy odczycie z pamięci: Symbol 'i' could not be resolved.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 18:24 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

To proste. Masz błąd, bo zmienna i nie została znaleziona, więc zrób sobie tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 18:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Po zmianie i++ na dzien_tygodnia kompiluje się z błędem: subscripted value is neither array nor pointer nor vector.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 18:52 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Masz również zmienną o nazwie jaką zaproponowałem, więc trzeba ją zmienić na unikalną:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2015, o 19:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Dzięki! Jesteś Wielki. Działa tak jak chciałem Po raz kolejny klikam pomógł! Teraz czeka mnie nowe wyzwanie - wprowadzanie czasu i daty za pomocą przycisków, już się boję.
Pozdrawiam

------------------------ [ Dodano po: 9 minutach ]

Za wcześnie się ucieszyłem. Wyświetla starą nazwę z pamięci: patek. Może trzeba pamięć najpierw wykasować?

------------------------ [ Dodano po: 15 minutach ]

Działa!!! Moje niedopatrzenie. Ma być "piatek". Przepraszam za zamieszanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 12:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!
Od kilku dni myślę nad sposobem wprowadzania czasu i daty do mojego zegara za pomocą przycisków. Chciałby zdefiniować 4 przyciski: SET, UP, DOWN, SAVE. Po naciśnięciu SET zaczyna na LCD mrugać wartość do nastawy np. HH, po kolejnym naciśnięciu SET MM itd. Gdy mruga np. HH przyciskami UP i DOWN zmieniam godzinę. Na koniec przyciskam SAVE i zegar ustawiony. Nie wiem od czego zacząć! Proszę o wskazanie drogi.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 19:24 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak już umiesz obsługiwać klawisze z wykorzystaniem Timera to po prostu wprowadzasz zmienną ustaw, która będzie zwiększana z każdym naciśnięciem klawisza set. W pętli głównej w zależności od wartości tej zmiennej należy podejmować inne akcje związane z przyciskiem up i down. Klawisz save powinien uruchomić swoją akcję jeśli zmienna ustaw ma wartość inną niż zero a potem ją wyzerować. A by wygodnie migać LCD (szybciej niż co 1 sekundę) należy wyświetlanie na lcd oddzielić od odczytywania i przetwarzania czasu, a sam odczyt czasu powinien być wykonywany, gdy zmienna ustaw ma wartość 0.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Ostatnio edytowano 24 kwi 2015, o 20:12 przez Krauser, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2015, o 21:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Bardzo dziękuję. Spory kawałek kodu do przemyślenia i wdrożenia. Jutro dokonam pierwszych prób i dam znać. Rozumiem, że obsługuję klawisze w przerwaniach timera w trybie CTC?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 21:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!
Jestem w trakcie próby zrozumienia szkieletu działania Twojej obsługi klawiszy. Nie tworzyłem nigdy timerów programowych. Rozumiem, że trzeba je utworzyć w pętli głównej programu na bazie timera sprzętowego.

Powiedz proszę czy dobrze analizuję warunek:

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

Interpretacja:
Warunek1: PINB po zamaskowniu (1<<PB0) i logicznej negacji ! jest prawdziwy (przyjmuje wartość 1 PRAWDA) - klawisz PB0 jest wciśnięty
Warunek2: key_set_zablokowany == 0 (czyli wartość zmiennej key_set_zablokowany jest równa 0) - warunek jest prawdziwy
Jeżeli: Warunek1 i(&&) Warunek2 są prawdziwe to wykona się instrukcja w pierwszym nawiasie klamrowym czyli przypisanie wartości 1 do zmiennej key_set_zablokowany i wartości 1 do zmiennej key_set_naciśniety (nie bardzo wiem co to za zmienna key_set_zablokowany (synonim zwolniony?), rozumiem nacisniety i zwolniony, ale zablokowany?
w przeciwnym razie:
PINB po zamaskowaniu (1<<PB0) przyjmuje wartość 1 PRAWDA co oznacza, że przycisk nie jest wciśnięty i wykona się instrukcja else key_set_zablokowany=1

Bardzo to skomplikowane. Gdzie mógłbym poczytać o obsłudze klawiszy z użyciem timerów programowych?

Pozdrawiam serdecznie i proszę o wyrozumiałość.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 21:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

avrfun napisał(a):
Bardzo to skomplikowane. Gdzie mógłbym poczytać o obsłudze klawiszy z użyciem timerów programowych?

W Bluebooku i na blogu www.mirekk36.blogspot.com

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 21:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Dziękuję bardzo - właśnie posiłkuję się BB i poradnikami, ale nie wiem czy mój tok myślenia o tym warunku jest poprawny?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 21:49 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Dobrze interpretujesz. Zmienna key_set_zablokowany służy do tego, że jak klawisz jest trzymany to zmienna key_set_nacisniety nie zostanie ponownie ustawiona. Zmienna key_set_nacisniety jest używana do przekazania informacji, że klawisz został wciśnięty do innego kawałka kodu. Przy okazji zauważyłem, że zrobiłem błąd bo jak klawisz jest puszczony key_set_nacisniety powinna zostać wyzerowana, aby po ponownym naciśnięciu warunki były spełnione i kolejne wciśnięcie odnotowane:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Ostatnio edytowano 24 kwi 2015, o 20:12 przez Krauser, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 22:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Czyli reasumując warunek można zrozumieć tak:
Jeżeli przycisk jest przyciśnięty i przytrzymany to zmiennej key_set_zablokowany i key_set_nacisniety przypisujemy wartość 1 (co to oznacza?)
w przeciwnym razie przycisk jest puszczony i zmiennej key_set_zablokowany przypisujemy wartość 0.

Rozumiem, że klawiszem set przerywamy odczyt czasu i wchodzimy w tryb ustawiania. i na początku musimy zdefiniować zmienne przydatne w trybie ustawiania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 kwi 2015, o 22:34 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Wartość do tych zmiennych przypisuje się po to, że by później sprawdzając w warunkach co w nich jest sterować działaniem programu i dobrze myślisz, że trzeba je sobie zdefiniować wcześniej. Dla ułatwienia napisz sobie prosty licznik wciśnięć klawisza z prezentacją wyniku na LCD i pobaw się. Jak to opanujesz to nie stracisz czasu w razie pomyłki w dużym kodzie, gdzie trudno będzie wyłapać błąd.

_________________
Dragonus Cracovus: Biomagia



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: 50 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 9 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