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



Teraz jest 30 mar 2026, o 12:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 6 maja 2014, o 17:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

Mam taki sobie problem jak poniżej na obrazku. Nie zabardzo rozumiem czemu w przedziale 40-59 sekundy do części dziesiętnej godzin dodaje sie jakby "5". dotyczy to tylko godzin, próbowałem wyświetlać niezaleznie obie zmienne (latkze w innym całkiem połozeniu na LCD, i zawsze gdy mam ten okreslony przedział sekund, zmienia sie także zmienna odpowiadająca z godziny.

Patrzyłem n konwersje z BCD na DEC, wydaje mi sie ze jest w porzadku. Nie wiem, może Wy zobaczycie błąd?

Obrazek


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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 maja 2014, o 17:51 
Offline
Moderator
Avatar użytkownika

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

Panie kochany masz przykład w książce - pokazuję i omawiam jak synchronizować odczyt z PCF'a jego własnym przerwaniem, a ty robisz takie "wydziwągi" ;) .... chodzi o ten timer programowy ... który tu zastosowałeś -

weź że przeczytaj i zajrzyj do książki o czym tam piszę ok?

_________________
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: 6 maja 2014, o 22:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

Rozumiem ze można użyć przerwania które generuje układ RTC, tylko czy te pomyłki w wyświetlaniu godzin to jest wina użycia timera a nie przerwania od RTC ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 maja 2014, o 22:36 
Offline
Moderator
Avatar użytkownika

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

Atmegowiec napisał(a):
tylko czy te pomyłki w wyświetlaniu godzin to jest wina użycia timera a nie przerwania od RTC ?


Panie kolego przeanalizuj sobie DOBRZE co robi twój program, szczególnie to przerwanie i ta zmienna - przecież pokazałem ci babola ... a ty teraz pytasz czy to nie wina przerwań od RTC ???? a gdzie ty masz te przerwania niby od RTC ? eeeeh ...

_________________
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: 6 maja 2014, o 22:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

No własnie dlatego pytam, bo postawił Pan tak sprawę jakby to nieprawidłowe wyświetlanie była wina tego ze nie uzywam przerwania od RTC, a program to sobie analizuje oczywiscie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2014, o 05:12 
Offline
Moderator
Avatar użytkownika

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

Atmegowiec napisał(a):
No własnie dlatego pytam, bo postawił Pan tak sprawę jakby to nieprawidłowe wyświetlanie była wina tego ze nie uzywam przerwania od RTC, a program to sobie analizuje oczywiscie.


Ok przepraszam, ponieważ dopiero teraz zobaczyłem (wczoraj byłem mocno zmęczony) .... twój główny problem. Co NIE OZNACZA że tego problemu o którym ja piszę nie ma - tzn jeśli robisz odczyt za pomocą timera programowego czyli masz rozjechaną synchronizację odczytu to zdarza się raz na jakiś czas, że w zegarku przeskakują ci sekundy nie "co jedną"! ale czasem "co dwie" i nie musi to być zawsze w ciągu jednej minuty. To typowy błąd początkujących i dlatego zasugerowałem się właśnie tym widząc twój pomysł na timer programowy do odczytu RTC, więc żeby była jasność - TU TEŻ MASZ BABOLA - na pewno

ale ....

... ale też jest niby drugi babol czyli to co opisałeś jako "dodawanie" piątki w godzinach - chociaż to nie ma nic wspólnego z dodawaniem piątki - po prostu ta piątka się wyświetla na tej pierwszej pozycji bez sensu

w związku z moją pomyłką co do zasadniczego twojego pytania - postanowiłem wręcz wgrać ten twój kod do procka i tu już wyszły banialuki pokazujące że TY nie pokazałeś wszystkiego co masz w swoim main.c bo:

- gdzie są definicje zmiennych g_rtc, m_rtc itd ?
- gdzie jest definicja funkcji set_time() ?

musiałem kod sobie uzupełnić po swojemu i oczywiście działa poprawnie .... nie wyświetla się ta piątka na pierwszej pozycji w ŻADNYM wypadku, tylko raz na jakiś czas sekundy przeskoczą sobie radośnie "co dwie" ;)

-------------------------------------------------

reasumując - no co by nie mówić to robisz coś bardzo chaotycznie - bo nawet nie jesteś w stanie wkleić TEGO SAMEGO kodu z main.c który masz w momencie gdy ci on rzekomo źle działa

--------------------------------------------------------------------------

a już na sam koniec - oglądałeś poradnik?

http://mirekk36.blogspot.com/2014/04/pu ... ednej.html

jak nie to obejrzyj .... tyle że tu masz wyświetlacz LCD więc jest wygodniej i można nawet bez diody LED się obyć, co za problem sprawdzić w jakim momencie ci się ta PIĄTKA wyświetla co ?

masz przecież w kodzie TYLKO JEDEN moment odpowiedzialny za to wyświetlanie:

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



powiedz mi więc dlaczego trudno ci to sprawdzić ????

- pierwsze co bym zrobił to zakomentował tą linię wyświetlającą nieznaczące zero do testu gdy testujesz z godziną 18-tą .... bo po co ci ono i dzięki temu pozostaje TYLKO już jedna linia do analizy czyli

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


skoro tak - to można by np podejrzewać że :

1. albo g_rtc przyjmuje nagle wartość = 85
2. albo g_rtc ma cały czas poprawną wartość = 18 a COŚ INNEGO nagle wyświetla znak "5" nie na swojej pozycji

i wtedy już łatwiej szukać dalej .... NO TAKĄ DROGĄ trzeba sobie powoli analizować swoje babole

a podejrzewam że masz BABOLA gdzieś w swoim kodzie tylko oczywiście nam na forum pokazałeś całkiem inny kod

_________________
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: 7 maja 2014, o 10:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

Nie lubię się tłumaczyć, ale to zrobię szybko. W pewnym poradniku lub gdzieś na tym forum mówił Pan, że początkujący wrzucają cały kod i proszą żeby znaleźć błąd - ze czasem na takie tematy nei ma odpowiedzi - bo ludzie widąc dziesiątki linii kodu, zwyczajnie nei mają ochoty... a do tego jesli autor czasem może niezbyt dokładnie wyjaśnia problem. Wiec, ja pamiętając o tych słowach, i po anlizie kodu, wkleiłem tylko ta cześć kodu w której podejrzewam ze siedzi błąd.

Do rzeczy wiec wklejam wszystko:

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


plik *.c z funkcjami

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


Tak, sprwdzałem kod poprzez wykomentonwie linijek, i doszłem do wniosku ze cos jest nie tak z funkcja pobierającą czas godzinny. Wyrzuciłem wsyztsko zostawiaąc tylko wyswietlanie godzin i dajej jest ta "5". Kod miał taka postac wtedy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co do zmiennej g_rtc to ona zmienia się nie tylko na "58" ale gdy np jest godzina 19 to pisze "59". wygląd tak jakby ta "5" zasłaniała zmienną.

Skoro musiał Pan dopisć fragment kodu i u Pana działa, wiec wynika z tego ze błąd jest w funkcji, wiec go szukam. Zwrócę uwage tylko ze ja mam PCF8563P a nie PCF8583 jak Pan w zestawie ATB - jesli to moze byc istotnie - poki co zauzyłem taką róznicę ze mój RTC nie ma 1/100 sekund. No wiec szukam błędu dalej :) Niech Pan sie nie gniewa -jak patrze o której Pan to pisał to zastanawiam sie czy potem mógł Pan jeszcze usnąc hehe po moich postach.



Ostatnio edytowano 7 maja 2014, o 11:23 przez Atmegowiec, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2014, o 11:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2014
Posty: 448
Lokalizacja: DKL
Pomógł: 53

Ja mam dwie uwagi :)
Jedna nie związana z tematem, ale proszę o podmianę Twojego awatara na mniejszy, teraz waży on 1,6MB i ma rozdzielczość 2688x1732 :shock: Ten co zamieszczam poniżej jest maleńki i nie utylizuje nadmiernie transferu serwera ;)
Obrazek

Co do twojego problemu to ja jestem jeszcze za cienki w uszach, ale widzę że funckcję do stopowania transmisji i2c masz nie poprawioną, powinna ona wyglądać tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Migracja z punktu B do punktu C
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2014, o 11:13 
Offline
Moderator
Avatar użytkownika

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

Atmegowiec napisał(a):
W pewnym poradniku lub gdzieś na tym forum mówił Pan, że początkujący wrzucają cały kod i proszą żeby znaleźć błąd


Dokładnie tak mówiłem ale

1. po pierwsze prosiłem żeby nie udostępniać na forum bibliotek z książki jeśli ich sam nie zmieniałeś - bo każdy na forum je posiada a poza tym to moja prośba żeby ich nie umieszczać na forach

2. po drugie pisałem wyraźnie że chodzi O SAM PLIK ----> main.c ....... a ty jakby w ogóle tego nie czytasz ... i bach - wszystko teraz z bibliotekami

czy to tak ciężko zrozumieć - żeby bibliotek nie umieszczać a same pliki main.c śmiało można dawać na forum :(

wracając do tematu - proszę bardzo .... DEFINICJE ZMIENNYCH

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


umieściłeś o zgrozo w pliku *.h ???? ..... czy wiesz do czego są pliki *.h ? umieszczamy w nich DEKLARACJE a nie DEFINICJE :(

w książce masz to fajnie w takich tabelkach pokazane i wielokrotnie omówione

Atmegowiec napisał(a):
Co do zmiennej g_rtc to ona zmienia się nie tylko na "58" ale gdy np jest godzina 19 to pisze "59". wygląd tak jakby ta "5" zasłaniała zmienną.


to wywal wszystko inne z programu i sprawdzaj odczyt TYLKO tego bajtu żeby znaleźć gdzie robisz błąd

i popraw te DEFINICJE zmiennych

_________________
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: 7 maja 2014, o 11:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

wywalenie zmiennych z *.h, i dołozenie ich do obu plików *.c nie poprawiło sytucji, identyczny rezultat, szukam dalej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2014, o 11:32 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
wywalenie zmiennych z *.h, i dołozenie ich do obu plików *.c


Bo to wcale nie miało pomóc na ten problem - ot po prostu przy okazji zwracam uwagę na babole jakie popełniasz licząc że kolejnym razem już nie będziesz takich rzeczy robił ;)

_________________
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: 7 maja 2014, o 11:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

no bedę pmietał, tylko nie rozumeim czemu pojawia mi sie teraz warring"

Cytuj:
../pcf8563p.c:82:2: warning: implicit declaration of function 'lcd_str' [-Wimplicit-function-declaration]
../pcf8563p.c:83:2: warning: implicit declaration of function 'lcd_int' [-Wimplicit-function-declaration]


dzieje się to wtedy gdy w pliku main umieszcze te definicje:

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


gdy w pliku main.c je zakomentuje to jest oki. Owszem w tych fukcjach sa w/w zmienne, tylko kurcze neiw eim dlaczego mi wyrzuce Eclipse warring.

Panie Mirku skoro Panu działo, a u mnie niebardzo, to hmm, moze to dlatego ze mamy inne scalaki?, nie wiem juz - szukzm dalej


----------------------------------------------
Co zrobiłem:
1. Wyrzuciłem wszystko z programu, zostawiłem tylko funkcję ustawiająca czas [18:59:30], pobrałem tylko adres odpowiedzialny za wyświetlanie godzin [0x04] (pominałem konwersje z bcd na dec) i wysłałem na LCD - wyświetliła sie liczba 24 -> co po Mirkowych poradnikach odnośnie konwersji BCD łatwo przetłumaczyć na binarne
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
-> co z koleji w BCD znaczy "18". Czyli prawidłowo. Gdy dochodzi do tego wspomnianego zakresu od 40s -59s to lcd pokazuje 88 co znaczy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
-> czyli w BCD "58".
Inny przykład:
Gdy ustawie godzinne [19.59.30] przed określonym zakresem sekundowym, wartosc godiznna na wyświetlaczu wynosi 25, co po "przeliczeniu" daje
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
-> czyli w BCD "19" -OK. Gdy wejdzie w w/w zakres pojawia sie na LCD 89 czyli
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
-> czyli dziesiętnie 137.

2. Wyrzuciłem ustawianie czasu, zresetowałem wszytsko, teoretycznie bity w RTC powinny sie wyzerowac, a ja pobrałem czas godzinny, i wyswietlania mi sie 131 czyli 0b10000011, dlaczego ? w nocie pdf jest zaznoczone rejestr godizn oznaczony jest jako "X" a ponizej informacja:
Kod:
Registers marked x are undefined at power-up and unchanged by subsequent resets.

Czemu po resecie bity są nieokreslone? jak ciagle mi sie coś pojawia, jedno i to samo [dziesiętne 131].

Obecnie w uC mam taki kod:

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


Nie używam żadnej funkcji ustawiającej czas, ani pobierającej czas. Tylko pobranie jednej wartości z jednego adresu w RTC w formacie BCD. Nie używam żadnej konwersji i co ciekawe? Dalej się to zmienia..... z dziesiętnego 131 na 195 w tym przedziale czasu co mówimy...
Nie mam już pomysłu ;). Została tylko funkcja do odczytu z RTC i ustawiająca szybkość transmisji. Czyżby to jakiś problem sprzętowy z tym scalakiem? albo czymś się różnią co wpływa na ta sytuację?... nie wiem czemu u Pana działało - na moim własnym kodzie. Zresztą, co to za kod... tez jest juz praktycznie wszytko wywalone i dalej coś nie tak... bo rozumiem ze funkcje wysyłające i odbierające z RTC miał Pan te moje? czy zmieniaj ja Pan jakoś?

3. Zmieniłem na inny egzemplarz tego RTC, łudziłem sie... ta sama sytuacja



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

Spróbuj tak:
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: 7 maja 2014, o 23:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

Trafiłeś idealnie, to rozwiązało problem, owszem patrzyłem do PDF-a, cos mi sie z maskowaniem świtało, no ale nie jakoś nie pociagłem tego dalej. Czułem z eto coś z tymi bitami nieuźywanymi jest : P dzięki. Teraz jeszcze fajnie by było jakbyś to wytłumaczył co tu dokładnie się dzieje.
:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2014, o 23:26 
Offline
Moderator
Avatar użytkownika

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

Atmegowiec napisał(a):
cos mi sie z maskowaniem świtało, no ale nie jakoś nie pociagłem tego dalej


nota to podstawa:
Obrazek

i dlatego krauser zaproponował:

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


czyli zamaskowanie tych bitów ... nie wiesz co to maskowanie ? ..... eeeeej no panie kochany - a to?

http://mirekk36.blogspot.com/2014/03/ma ... m-oka.html

_________________
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: 7 maja 2014, o 23:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

No mówie ze to widziałem, tylko nie wpadłem na to zeby to zamaskować.

Wiem,co to maskowanie..

Poradnik ogladałem i zrozumiałem nawet, ale to nie znaczy ze jak go oglądne to od razu załapie i w kazdej sytuacji go bede umiał uzyc. Czasem zwyczajnie sie o czymś nie pomyśli i tyle. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 maja 2014, o 14:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 mar 2013
Posty: 333
Pomógł: 10

Dziękuję wszytskim za pomoc w tym temacie, szczegolnie p. Mirkowi i Krauser-owi który odnalazł błąd :) podstawy podstaw odnosnie I2C są :) teraz kolejny biorę sie za zrozumienie kolejnego interfejsu komunikacyjnego.. : ) Oby było prościej zrozumieć.



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

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