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



Teraz jest 11 sty 2025, o 23:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 12 mar 2014, o 21:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Witam mam problem z kodem timera. Założenie jest takie by zliczał w dół do 0.
Wszystko działa ,tylko że przy konwersji liczby z bcd na dziesiętną coś jest nie tak.
Początkowo zlicza od minuty w dół ,ale po "przekręceniu" jest 17:41:41 ,zamiast 23:59:59

Funkcja jest z BB ,dział I2C. (str. 284)

Objawy błędu:
chodzi o to ,że po konwersji godziny przyjmują max. watrość 17 ,a nie (23) ,minuty i sekundy 41 (zamiast zliczać od 59)

Reszta działa bez zarzutów ,możliwe ,że jest jakiś błąd w funkcji ,ale nie umiem do tego dojść :(


poniżej kod programu:

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



Kod będzie dalej rozwijany oczywiście ,założenie jest takie ,że przy 0:00:00 załącza Alarm ,dojdą jeszcze przyciski ustawiające czas.
No ale narazie zatrzymałem się na samym wyświetlaniu czasu i konwersji ,która coś nie działa.

Nie wiem męczę się z tym i męczę.

_________________
sig off ;(



Ostatnio edytowano 12 mar 2014, o 22:18 przez mac34, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, 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

Konwersja nie jest potrzebna

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 21:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

W bibliotece LCD korzystam z funkcji

"usunąłem kod biblioteczny ,na prośbę kolegi ,dzięki za zwrócenie uwagi "

dlatego zdecydowałem się na konwerję.

Jak inaczej mogę ją wyświetlić???, mam jeszcze funkcję wyświetlającą znaki

void lcd_str(char * str); (ale nie widzę opcji jak ją wykorzystać)

_________________
sig off ;(



Ostatnio edytowano 12 mar 2014, o 22:16 przez mac34, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 22:06 
Offline
Użytkownik
Avatar użytkownika

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

Nie jestem pewien czy dobrze zrozumiałem program

ale poddajesz konwersji BCD liczbę w zmiennej "godziny"
która nie jest zapisana w kodzie BCD tylko dziesiętnie

liczba 59 w kodzie BCD to 89 (wyrażone dziesiętnie)
a nawiasem mówiąc liczba w kodzie BCD 17 -> dziesiętnie 23

No chyba że wszystko pomieszałem i nie zrozumiałem programu :)

EDIT:

I znowu za długo analizowałem kod :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 22:10 
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

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

Ta konwersja była dlatego, że w układzie PCF8583 liczba godzina 23 jest przechowywana jako 0x23, czyli każda cyfra jest przechowywana na 4 bitach natomiast tutaj wcale nie potrzeba tej konwersji.

PS. Kodów z książki nie publikujemy. Edytuj post i usuń.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 22:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Racja przedobrzyłem :)

Już jest 23:59:59

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


Po usunięciu konwersji jest lepiej.

Ostatnie pytanie jak zrobić ,by było 00:01:59

,bo teraz mam 0:1:59

ucina początkowe zera po zejściu od 10 w dół
00:01:59

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 22:16 
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.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 mar 2014, o 22:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Dzięki, jutro wypróbuję i dam znać. Usunąłem też kod biblioteczny ,dzięki za zwrócenie uwagi ,pozdrawiam.

Dam znać czy ruszyło.

Nie wytrzymałem i musiałem sprawdzić :)

Działa dzięki ,możesz jeszcze powiedzieć dlaczego w warunku if nie użyłeś klamer {}
if(godziny<10) lcd_str("0");
,pytam bo to mnie zaskoczyło.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 mar 2014, o 01:02 
Offline
Użytkownik

Dołączył(a): 11 wrz 2013
Posty: 709
Zbananowany użytkownik

Pomógł: 23

mac34 napisał(a):
Dzięki, jutro wypróbuję i dam znać. Usunąłem też kod biblioteczny ,dzięki za zwrócenie uwagi ,pozdrawiam.

Dam znać czy ruszyło.

Nie wytrzymałem i musiałem sprawdzić :)

Działa dzięki ,możesz jeszcze powiedzieć dlaczego w warunku if nie użyłeś klamer {}
if(godziny<10) lcd_str("0");
,pytam bo to mnie zaskoczyło.


Bo wykonuje tylko jedno polecenie.
Jakbyś chciał po if-ie wywołać kilka funkcji to się klamerki kłaniają.

--
Grzegorz...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 mar 2014, o 20:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lut 2014
Posty: 101
Pomógł: 4

Ok dzięki ,już rozumiem ,ja po prostu zawsze odruchowo daje {} ,nawet przy jednym warunku.

Dlatego mnie to zaskoczyło.

_________________
sig off ;(



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 17 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