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



Teraz jest 29 lis 2024, o 15:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 71 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona
Autor Wiadomość
PostNapisane: 21 maja 2015, o 22:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 gru 2013
Posty: 366
Lokalizacja: Wałbrzych
Pomógł: 7

Nom chyba że u nich autobusy posiadają zegarek atomowy i pług z przodu auta ze w razie korku rozepchną sobie innych uczestników ruchu na bok i śmigną by dojechać na czas.



Fajny cykl poradników . Jak zwykle uzupełnia wiedzę nie tylko na temat związany ale też i na inne poboczne co jest super.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2015, o 05:42 
Offline
Nowy

Dołączył(a): 21 maja 2015
Posty: 1
Pomógł: 0

Witam.

Od nie dawna bawię się procesorami PIC. Spodobał mi się ten wątek na temat RTC. Chciałbym to przenieść do PIC. Więc mam małą prośbę. Czy można zamieścić cały kod programu z filmiku 09 Pana Mirka - może nie cały tylko dotyczący zmian czasowych (lato-zima),z poprawkami kol. "tec-dive". Pan Mirek tak świetnie prowadzi te poradniki i wspaniale bawi AVR , aż żałuję że bawię się PIC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2015, o 06:09 
Offline
Moderator
Avatar użytkownika

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

siwo278 napisał(a):
Pan Mirek tak świetnie prowadzi te poradniki i wspaniale bawi AVR , aż żałuję że bawię się PIC

Ależ nie ma czego żałować. PIC'ki to równie fajne 8-bitowce i spokojnie zrobisz z nimi to samo co z AVR'ami. To o czym opowiadam w książkach czy poradnikach - jak sam widzisz - to jest Programowanie, techniki programowania - i można to wykorzystywać swobodnie na różnych rodzinach procków włączając w to nie tylko te 8-bitowe ale i 32-bitowe.

siwo278 napisał(a):
Czy można zamieścić cały kod programu z filmiku

Całe kody będą (jak się wszystko uda) na płytach DVD dostępnych do kupienia w naszym sklepie wkrótce. Planujemy bowiem wypuszczenie takich płyt z nagranymi w postaci offline cyklami poradników o Magic LED, OLED, czy też WIFI albo tym RTC

_________________
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: 22 maja 2015, o 07:16 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

siwo278 napisał(a):
Pan Mirek tak świetnie prowadzi te poradniki i wspaniale bawi AVR , aż żałuję że bawię się PIC.



Nie ma czego żałować. Jak piszesz w C to oprócz nazw rejestrów i spraw sprzętowych to kod będzie ten sam. Serio. Ja sam się teraz PIC'ami bawię i bez problemu kod z AVR'ów przenoszę ;) Jak już umiesz C i znasz fajne techniki programowania to jedyne co Ci zostaje to zapoznać się ze sprzętem na którym pracujesz, więc nosek w dokumentacje i heja ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2015, o 08:00 
Offline
Moderator
Avatar użytkownika

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

mokrowski napisał(a):
Jestem ciekaw tylko czy obsługa NTP w interfejsach Atnel to uwzględnia.

Oczywiście, że nie uwzględnia ;) .... co więcej - nawet nie uwzględnia czasu potrzebnego na sprowadzenie czasu z NTP i zapis do RTC więc z marszu możemy być kilka sekund w plecy. Mi wprawdzie kiedyś obiła się o uszy ta sekunda ale kompletnie zapomniałem ;) więc fajną ciekawostkę zapodałeś ....

_________________
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: 22 maja 2015, o 20:46 
Offline
Nowy

Dołączył(a): 16 lut 2015
Posty: 2
Pomógł: 0

To ja dodam jeszcze taki problem do rozważenia.

Proszę zauważyć, że w ostatnią niedzielę października czas pomiędzy godziną 2 i 3 mija dwa razy, najpierw jako letni a potem po raz drugi już jako zimowy.
Czyli przy ustawieniu np. 2:59:55 nie można jednoznacznie określić czy jest to jeszcze czas letni ( 1 dojście do godziny 3 ) czy może już zimowy ( 2 dojście do godziny 3).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 maja 2015, o 20:57 
Offline
Moderator
Avatar użytkownika

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

anstan96 napisał(a):
Czyli przy ustawieniu np. 2:59:55 nie można jednoznacznie określić czy jest to jeszcze czas letni ( 1 dojście do godziny 3 ) czy może już zimowy ( 2 dojście do godziny 3).

I o tym właśnie rozważałem długo (będąc już zmęczonym, po prawie całym dniu kręcenia tego cyklu) ;) tłumacząc - że w tej godzinie będzie ciężko coś zrobić ;) Że to ta "dziura" i jak ktoś po pijaku ustawi sobie wtedy czas, a obudzi się rano to może się zdziwić ;) ... oczywiście jeśli nie ma ATNEL-WIFI232-T, bo jeśli posiada ten moduł - to wtedy już po godzinie trzeciej - czyli jeszcze w czasie snu - czas się naprawi dzięki NTP i ATNEL-WIFI. (to już w 10 - ostatnim odcinku cyku wyjaśniam)

_________________
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 maja 2015, o 02:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

anstan96 napisał(a):
To ja dodam jeszcze taki problem do rozważenia.

Proszę zauważyć, że w ostatnią niedzielę października czas pomiędzy godziną 2 i 3 mija dwa razy, najpierw jako letni a potem po raz drugi już jako zimowy.
Czyli przy ustawieniu np. 2:59:55 nie można jednoznacznie określić czy jest to jeszcze czas letni ( 1 dojście do godziny 3 ) czy może już zimowy ( 2 dojście do godziny 3).


Proponuję rozwiązać to w sposób taki, a mianowicie w tym przedziale czasowym użytkownik nie będzie mógł w ogóle ustawić zegarka. Gdy akurat tak się przytrafi godzina i data zostaną ustawione na 12:00:00 i 1900-01-01, czyli będzie to oznaczało błąd. Teraz nawet "po pijaku" nie uda się ustawić nieprawidłowego czasu. :D

Proponuję zamienić void oblicz_dst(); (oczywiście pamiętając również o zmianie w pliku mk_pcf8583.h) na:

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


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


Dodam jeszcze jedną małą modyfikację w pliku mk_pcf8583.h tak aby było łatwiej ustawić strefę czasową (u mnie GMT=0) :D
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: 23 maja 2015, o 08:10 
Offline
Moderator
Avatar użytkownika

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

Kolega anshar jak zwykle od razu ma gotowy pomysł i kod ;) ale .....

Ja tutaj tylko tak półżartem jednak bym zaprotestował przed tym, żeby zegarek ustawiał się na 12:00:00 i rok 1900 ;) ... łooo matko! gdybym to ja np po pijaku ustawiał jakiś zegarek i kliknął OK, a on by mi takie cyrki robił i to przez godzinę - to pewnie zaraz złapałbym za młotek i go ..#@%^@@##!!@@##..lił :lol:

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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

mirekk36 napisał(a):
złapałbym za młotek i go ..#@%^@@##!!@@##..lił :lol:

:D Dodam, że ja bym zrobił to samo ale z rana gdyby się okazało, że godzina jednak nie halo, a tyle z nią walczyłem przed snem!
Na szczęście mamy "dawcę czasu", który nie tylko wstrzykuje prawidłowy czas, ale jeszcze zapobiega takim sytuacjom jak wyżej! :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 maja 2015, o 23:09 
Offline
Użytkownik

Dołączył(a): 13 maja 2014
Posty: 52
Pomógł: 0

Tak z innej beczki i oczywiście z ciekawości chciałbym zapytać dlaczego mi eclipse gadget pokazuje 3 282 flash i 241 ram a w poradniku 3 180 flash i 461 ram? W tym samym miejscu:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 maja 2015, o 06:31 
Offline
Moderator
Avatar użytkownika

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

Tequs napisał(a):
Tak z innej beczki i oczywiście z ciekawości chciałbym zapytać dlaczego mi eclipse gadget pokazuje 3 282 flash i 241 ram a w poradniku 3 180 flash i 461 ram? W tym samym miejscu:)

Bo może używasz innego procka niż ja i już będzie nieco inny wynik, albo może nie masz ustawionej optymalizacji -Os tak jak ja ...

------------------------ [ Dodano po: 13 minutach ]

aaaa jeszcze jedno ;) ja używam programu Eclipse GADGET a w nim opcji "BOOST FLASH ON" ;) a ty ?

Obrazek

_________________
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: 24 maja 2015, o 11:31 
Offline
Użytkownik

Dołączył(a): 13 maja 2014
Posty: 52
Pomógł: 0

Procek ten sam, w eclips gadget mam tak samo, ale widzę, że ja mam wersję 29:)Być może nie mam tej optymalizacji os pewnie gdzieś w eclipsie się to robi?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 maja 2015, o 15:59 
Offline
Moderator
Avatar użytkownika

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

Tequs napisał(a):
Być może nie mam tej optymalizacji os pewnie gdzieś w eclipsie się to robi?

Obrazek

ale powód może być jeszcze inny, być może nie zrobiłeś jednak czegoś w poradniku dokładnie tak jak ja - stąd różnica - więc nie przykładałbym do tego aż takiej wagi. No ale sprawdź sobie tę optymalizację - chociaż ona ustawia się domyślnie przy zakładaniu nowego projektu.

_________________
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: 24 maja 2015, o 17:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

anstan96 napisał(a):
To ja dodam jeszcze taki problem do rozważenia.

Proszę zauważyć, że w ostatnią niedzielę października czas pomiędzy godziną 2 i 3 mija dwa razy, najpierw jako letni a potem po raz drugi już jako zimowy.
Czyli przy ustawieniu np. 2:59:55 nie można jednoznacznie określić czy jest to jeszcze czas letni ( 1 dojście do godziny 3 ) czy może już zimowy ( 2 dojście do godziny 3).


mirekk36 napisał(a):
Ja tutaj tylko tak półżartem jednak bym zaprotestował przed tym, żeby zegarek ustawiał się na 12:00:00 i rok 1900 ;) ... łooo matko! gdybym to ja np po pijaku ustawiał jakiś zegarek i kliknął OK, a on by mi takie cyrki robił i to przez godzinę - to pewnie zaraz złapałbym za młotek i go ..#@%^@@##!!@@##..lił :lol:


Tym razem bez zbędnych komentarzy z mojej strony! Proszę Was bardzo o przetestowanie mojej modyfikacji.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dokonać trzeba takich zmain w stosunku do oryginalnego kodu z part 09 lub part 10
W pliku mk_pcf8583.c:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Do funkcji void ger_rtc_datetime( TDATETIME * dt) trzeba dopisać:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


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


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


Dodam jeszcze, że do testów można użyć takiej oto funkcji wyświetlania czasu na LCD:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Ostatnio edytowano 1 cze 2015, o 00:24 przez anshar, łącznie edytowano 4 razy

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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Konieczne jeszcze było dokonanie małej modyfikacji w funkcji void ger_rtc_datetime( TDATETIME * dt), by wszystko działało jak należy po ponownym włączeniu zasilania lub resecie. Poprawki naniesione!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 maja 2015, o 01:57 
Offline
Moderator
Avatar użytkownika

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

ale zapisujesz gdzie nie-gdzie coś do RAM układu RTC - za to nigdzie nie widzę żebyś dokonywał odczytu niektórych z tych wartości ?

------------------------ [ Dodano po: 3 minutach ]

próbuję właśnie ale kicha jest z przestawieniem czasu z zimowego na letni 29 marca 2015 o godzinie 1:59:55 .... niestety przeskakuje na 2:00:00 - pokazuje się letni (ok) ale powinien przeskoczyć na godzinę 3:00:00

------------------------ [ Dodano po: 30 minutach ]

jeszcze raz przetestowałem to co w poradniku robiłem i to działa dobrze - tak jak w poradniku - zarówno w marcu jak i w październiku

jedyny problem to DZIURA czasowa pomiędzy godziną 2:00 a 3:00 w ostatnią niedzielę października. I w zasadzie to nie ma problemu bo - uwaga mogą zajść 3 sytuacje:

1. zegarek rusza pierwszy raz i dst = 0 czyli ani zimowy ani letni
2. zegarek nastawia ktoś w ten dzień na 2:30 a w zegarku jest czas letni
3. zegarek nastawia ktoś w ten dzień na 2:30 a w zegarku jest czas zimowy

więc będzie tak:

ad.1 i ad.2 - o godzinie 2:30 ustawi się letni - więc ładnie o 3:00 zmieni się na 2:00 i czas zimowy
chyba, że pijak ustawia 2:30 już wtedy gdy tak na prawdę na świecie czas został cofnięty - ale na to nie ma siły chyba aby na podstawie daty i czasu zegarek mógł sobie uświadomić, że już jest po zmianie czasu albo przed zmianą :( Więc rano pijak i tak będzie musiał od nowa nastawić godzinę ale wtedy już pójdzie to dobrze.

ad.3 - o godzinie 2:30 nie zmieni się zimowy - więc o 3:00 czas się nie cofnie !
w tym przypadku będzie 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: 31 maja 2015, o 16:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Faktycznie p. Mirku pojawił się mały babol dla miesiąca marca.
Poprawki naniesione! Można zobaczyć wyżej! Tym razem z małymi komentarzami. Bardzo bym prosił o sprawdzenie w miarę możliwości.
ad.1, ad.2 i ad.3 Gdy użytkownik zegarka ustawi czas pomiędzy 2.00, a 3.00 w nocy w ostatnią niedzielę paździerika nastąpi wywołanie funkcji oblicz_dst(), która zwróci wartość równą 1. Będzie to oznaczało błąd, ponieważ nie jesteśmy w stanie jednozczanie określić czy ustawiamy tą godzinę w czasie jeszcze letnim czy już w czasie zimowym. Zmienna dst_error zostanie ustawiona na 1. Natomiast jeśli w funkcji get_rtc_time() sprawdzimy za pomocą warunku if( dt->dst_error ) to zmieniamy dst , godzinę co sekundę tak długo, aż użytkownik zegarka ustawi czas poza tym przedziałem czasowym. Dodam, że powołałem dodatkową zmienną hh_temp, którą zapisuję do RTC, po to aby po wyłączeniu zegarka lub resecie następowała automatyczna synchronizacja (aby niepotrzebnie nie nastąpijo kolejny raz dodanie lub odjęcie godziny).
Tak więc do RTC zapisuję w sumie trzy zmienne. Pierwsza to dst->error (oznacza ona błąd dst dla nieokreślonego czasu), druga to hh_temp (do synchronizacji godziny z czasem letnim bądź zimowym), oraz trzecia dla dst(_letni, _zimowy).
Odczytuję je z RTC natomiast w funkcji get_rtc_datetime().



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 31 maja 2015, o 20:37 
Offline
Moderator
Avatar użytkownika

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

właśnie sprawdziłem

tzn tak - to miganie na LCD napisu letni i zimowy (ok można byłoby to ukryć) ale zmieniająca się godzina co sekundę przez całą godzinę ? - to wg mnie niezbyt dobry pomysł na UI (interfejs użytkownika) :( .... ale już pomijając to - gdy ustawię w październiku czas na 2:59:50 ... to po 10 sekundach migania na LCD czas ustawia się niestety o zgrozo na letni i pozostaje godzina 3:00....

tylko nie zrozum mnie źle - nie piszę tego żeby ot tak skrytykować .... przede wszystkim to BARDZO ale to bardzo doceniam - za w ogóle taką siłę woli do poszukiwania jakiegoś rozwiązania na zautomatyzowanie tego problemu ;) Nie ważne, że się nie udaje - że są błędne próby - tak zwykle bywa przy testach - ale może kiedyś się uda coś wymyślić na tyle ciekawego co zaspokoi naszego przysłowiowego pijaka :lol: .... jak gdybym był na rauszu i w trakcie ustawiania zobaczyłbym takie miganie - to pewnie zaraz bym się dodatkowo przestraszył że za chwilę to pewnie jeszcze białe myszki zobaczę .... :lol: to tak pół żartem

Na poważnie zaś - to na prawdę wydaje mi się, że problem ustawiania czasu akurat pomiędzy 2-3 w ostatnią niedzielę października po prostu można pominąć ;)

Nie mniej jednak jak coś jeszcze wymyślisz - to z chęcią przetestuję

PS - w marcu działa to oczywiście dobrze

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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Dziękuję panie Mirku za sprawdzenie i poświęcony czas. :D

Problem ustawiania czasu akurat pomiędzy 2-3 w nocy w ostatnią niedzielę października oczywiście można pominąc, ale nie trzeba. Faktycznie zmiana z godziny 2 na 3 co sekundę nie jest najlepszym rozwiązaniem (męczące), ale w ten sposób zegarek daje nam znać o tym, że ustawiamy czas właśnie w tej luce czasowej, co jest błędem, prawda? Nie możemy być pewni czy ustawiamy czas letni czy zimowy. W takim razie użytkownik może się domyślić, że trafił akurat w tą lukę czasową. Może posiedzieć na ratuszu :D do maksymalnie godziny i ustawić prawidłowy czas o 3 w nocy. Wtedy zegarek przestanie migać i będzie wyświetlany prawidłowy czas. :D

W tym przypadku dodatkowo można dodać opcję wyboru czasu letniego lub zimowego. Wtedy wszystko będzie jak należy. (I to jest ten nowy pomysł :D )

Jeśli jednak pomyśli, że skoro zegar "miga" i że za chwilę zobaczy białe myszki. Pewnie ucieknie do domu i pójdzie spać. :D Kiedy wstanie rano to zegar wciąż będzie migał, powiedzmy z 8 na 9. Teraz już na trzeźwo (no prawie) sprawdzi jaka właściwie jest godzina i ustawi prawidłowy czas. :D Takie właśnie było założenie.

Nie wiem jak to jest, ale u mnie gdy ustawię 2:59:50 za pomocą set_rtc_datetime( &datetime, 2015, 10, 25, 2, 59, 50); to zegarek dalej zmienia czas z 2 na 3, jak również czas letni na czas zimowy. Dodam, że będzie tak sobie migał dopóki nie ustawimy prawidłowego czasu, poza tą luką czasową. Nie mam pojęcia czemu u pana jest inaczej. :( Testuję to na dwóch różnych zestawach. Sądzę, że zamieściłem wszystkie zmiany w kodzie powyżej. No trudno.

Dodam jeszcze, że oczywiście to wyświetlanie zimowy/letni jak rówież wyświetlenie błędu w postaci 0 lub 1 to tylko i wyłącznie dla testów. :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2015, o 00:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Jeszcze raz na spokojnie przeanalizowałem kod. Znalazłem dwa miejsca w których mogły pojawiać się błędy.
Oczywiście poprawiony już kod można zobaczyć kilka postów wyżej. Jeśli ktoś ma jeszcze ochotę przetestować, podoba mu się mój pomysł i takie rozwiązanie to zapraszam.

mirekk36 napisał(a):
tylko nie zrozum mnie źle - nie piszę tego żeby ot tak skrytykować .... przede wszystkim to BARDZO ale to bardzo doceniam - za w ogóle taką siłę woli do poszukiwania jakiegoś rozwiązania na zautomatyzowanie tego problemu ;) Nie ważne, że się nie udaje - że są błędne próby - tak zwykle bywa przy testach - ale może kiedyś się uda coś wymyślić na tyle ciekawego co zaspokoi naszego przysłowiowego pijaka

Panie Mirku ja się wcale nie obrażam, ani nie zniechęcam, a wręcz cieszę się, że znalazł pan dla mnie czas, wytknął błędy i wyraził swoje zdanie. Jeszcze raz za wszystko bardzo dziękuję. :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 cze 2015, o 08:31 
Offline
Moderator
Avatar użytkownika

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

Postaram się dzisiaj sprawdzić ;) ... dam znać

_________________
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: 12 cze 2015, o 21:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

A czy można gdzieś pobrać bibliotekę do RTC z tego poradnika?

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2015, o 21:20 
Offline
Moderator
Avatar użytkownika

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

gordon10 napisał(a):
A czy można gdzieś pobrać bibliotekę do RTC z tego poradnika?

Tak z poradników wideo

_________________
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: 12 cze 2015, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Ok, czyli trzeba wklepać:)

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2015, o 22:13 
Offline
Moderator
Avatar użytkownika

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

A ... no na razie tak, za jakiś czas może się pojawią płyty DVD z poradnikami offline, wtedy na nich będą już gotowe kody w postaci bibliotek. Na razie trzeba z poradników wideo.

_________________
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: 14 wrz 2015, o 23:42 
Offline
Moderator
Avatar użytkownika

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

UWAGA!

w moim poradniku, gdzie prezentuję funkcję na wieczny kalendarz (obliczanie dnia tygodnia) jest BABOL ;) sorki

ale już podaję prawidłową wersję tej funkcji - można a nawet trzeba sobie ją poprawić w kodach

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


Proszę potestować ew i sprawdzić ;)

bo np stara funkcja źle pokazuje dni w 2016 roku (czyli niedługo) ale począwszy od 1 marca !!!

ta nowa wersja już ma to poprawione. Błąd znalazł kolega Konradev2 w tym poście: post139851.html#p139851

_________________
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: 15 lis 2015, o 13:08 
Offline
Moderator
Avatar użytkownika

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

wachcio napisał(a):
Według mnie Mirek popełnił błąd obliczając dni dla kalendarza Juliańskiego zamiast Gregoriańskiego.


A kolega zadał sobie trud żeby sprawdzić ten sposób z wzorem który podałem w poście wyżej ? Wydaje mi się, że nie, więc przypomnę:

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


ta funkcja działa bardzo dobrze i to z tablicą dni zaczynającą się od PONIEDZIAŁKU a kończącą się na NIEDZIELI

ty zaś piszesz, że błąd nawet nie sprawdzając i podajesz nieco inny wzór - pokażę go troszkę inaczej:

Cytuj:
uint8_t oblicz_week_day(uint8_t dzien, uint8_t miesiac, uint16_t year) {

int Y,C,M,N,D;
M=1+(9+miesiac)%12;
Y=year-(M>10);
C=Y/100;
D=Y%100;
N=((13*M-1)/5+D+D/4+C/4+5*C+dzien)%7;

return ((7+N)%7);
}

(na czerwono oznaczyłem miejsce w tym wzorze, które powoduje, że u ciebie działa to dla dni liczonych akurat od poniedziałku)

którzy też działa dobrze ale dla tablicy dni rozpoczynającej się od NIEDZIELI a kończącej na PONIEDZIAŁKU. Ja jednak osobiście wolę mieć tablicę rozpoczynającą się od PONIEDZIAŁKU ;) ..... Bo inaczej to można by nieco jeszcze przerobić ten wzór i mieć np tablicę rozpoczynającą się od ŚRODY a kończącą się na CZWARTKU ale czy jest sens ? ;) Dla mnie i chyba dla każdego to poniedziałek jest pierwszym dniem tygodnia a niedziela od zawsze jest, była i będzie określana jaka siódmy dzień tygodnia ;)

------------------------ [ Dodano po: 4 minutach ]

wachcio napisał(a):
Poza tym jeśli by ktoś chciał synchronizować zegarek również (np. z powodu braku ATB-Wifi) przez RS232 z terminala lub wygodniej z programu Mirka ucSync dodałem trochę kodu w procedurze parse_rs232 w pliku main.c

I bardzo fajnie - warto sobie wspomagać programowo życie na każdy sposób ;)

_________________
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: 15 lis 2015, o 16:11 
Offline
Moderator
Avatar użytkownika

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

wachcio napisał(a):
Napiszę inaczej jeżeli się nie mylę Twój kalendarz

Po pierwsze to nie mój kalendarz - bo ja sam tego wzoru nie opracowywałem tylko sięgnąłem do netu i jak widzę dokładnie do tego samego źródła co ty ;) ....

https://pl.wikipedia.org/wiki/Kalendarz_wieczny

wyciąłem tylko warunek żeby nie bawić się w dwa kalendarze i to mi wystarczy - nie do końca mnie interesują daty np powyżej 2100 ;) dobrze będzie jeśli urządzenia, które buduję przetrwają chociaż 50 lat ;)

tak więc możesz mieć rację ... ale nie wiem i nawet już nie będę wnikał ;) jak ktoś chce mieć kalendarz do 9999 roku to powodzenia :)

Tyle, że implementacja od poniedziałku do niedzieli w takiej formie jak podałem działa ładnie - chyba rzeczywiście nie sprawdzałem powyżej 2100 ...

_________________
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: 15 lis 2015, o 18:15 
Offline
Moderator
Avatar użytkownika

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

wachcio napisał(a):
Chciałem tylko delikatnie Ci zaznaczyć, że wziąłeś nie ten warunek co trzeba... Mam nadzieję, że się nie gniewasz?

Ale za co się gniewać ? ;) sam na szybko szukałem jak znalazłem w poprzednim swoim rozwiązaniu problem

Jednak nie mogę się zgodzić, do końca, że w tym który wziąłem jest błąd dla tego podstawowego zakresu dat i tablicy od poniedziałku do niedzieli - bo sprawdzałem .... choć nie mówię na 100% że no dzień po dniu sprawdziłem ale wyrywkowo mnóstwo dat ....

Więc nie do końca rozumiem gdzie widzisz błąd - dla jakiej np daty ?

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 71 ]  Przejdź na stronę Poprzednia strona  1, 2, 3  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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