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



Teraz jest 28 mar 2024, o 12:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 9 cze 2012, o 11:11 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Witam. Ostatnio zacząłem się dużo bawić tym układem w różnych programach. Napisałem program od nowa z poddziału Układ czasu rzeczywistego. Jak wiadomo jest tam ten układ. Dodając również swoje kody rozszerzałęm program dla własnej nauki i potrzeb. Zauważyłem, że cały program się często zawiesza. Raz to bywało po godzinie, raz częściej,a nie raz później. Skracając program doszedłem do wniosku, że to wina kodu RTC. Dla pewności wgrałem program Mirka z płyty odnośnie samego RTC oraz jego program układu czasu rzeczywistego. Zostawiłem te programy na noc, aby sobie działały. Po czasie znowu złapały zawieszkę. Dodam, że wszystkie programy testuje na płytce ATB ver 1.01. W czym może być problem? Czy u was też się tak dzieje jak np. zostawicie program z RTC na cały dzień?

Drugi problem co zauważyłem to nie dokładność tego układu, otóż zrobiłem sobie prosty test. Najprostsze dwa zegarki: jeden na przerwaniach, drugi PCF8583 połączony według schematu w książce. Wzorcowy zegarkiem był zegarek CASIO (według niego ustalałem czas) Wyszło, że np. po 24h układ RTC spoźniał się o 5 s. niż CASIO, a na przerwaniach chodził sekunda w sekundę jak CASIO(Po paru dniach oczywiście czasy się rozbiegły).
Za zaletami RTC przemawia do mnie brak ustraty czasu po zaniku zasilania, ale czy jego wadą nie jest duża rozbieżność? Dlaczego tak jest?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 11:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Zasadniczo układy zewnętrzne są bardzo dokładne i stabilne , w twoim wypadku doszukiwałbym się raczej błędów z Twojej strony, osobiście nie znoszę układów RTC z NXP są dla mnie jakieś takie "kocie" i zwykle bazuje na układach Dallasa DS1307 nie miałem z nimi żadnych problemów chętnie też stosuję
"zamiennik" dla PCF8563 czyli DS1337 i nigdy nie miałem problemów z zawieszaniem się, czy znaczących rozbieżności czasowych. Dla mnie akurat masowe produkty Casio nie są wyznacznikiem dokładności pomiaru czasu , równie dobrze możesz wzorować się na jakimkolwiek chronometrze z tzw tandety efekty będą podobne. Co u ciebie powoduje problem ??

Co do zawieszeń to najprawdopodobniej wina jest po twojej stronie.
Co do dokładności jest jaka jest i cudu na poziomie wzorca atomowego się nie spodziewaj :)

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 11:38 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Dobra, z tym programem co ja go sklejałem i pisałem może być moja wina, ale wgrywałem także programu "układ czasu rzeczywistego" oraz z poddziału o RTC Mirka, który raczej jest dobry. A nic tam nie zmianiałem. Więc nie wiem czy wina lezy po stronie sprzętu czy programu, który jest przetestowany, dlatego piszę tutaj.

Ale czy rozbieżność czasu tego układu na poziomie 5 s. przez 24h to już chyba daje do myślenia, że to jest duży błąd i nie wiem czego to wina. Program Mirka, płytka ATB 1.01 więc to już może świadczyć tylko o nie dokładności tego układu. Teraz muszę się włąsnie mocno zastanowić czy stosować ten układ w moich projektach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 11:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

zastąp go innym układem i sprawdź może w skrajnych przypadkach być to wina samego PCF-a, częstym powodem niedokładności jest też kwarc może się tak zdarzyć że się trafi ułomek ...

najlepiej to sprawdzić montując układ RTC na np. stykówce na innym kwarcu i innym układzie porównać
i wtedy wysunąć wnioski.

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 11:58 
Offline
Moderator
Avatar użytkownika

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

SunRiver ma rację w całej rozciągłości ale ja dodam, że:

mam swój stareńki zegarek zrobiony na PCF8583:

http://www.elektroda.pl/rtvforum/viewto ... 4297e52994

chodzi już sobie od kilku lat i nie odnotowałem ani jednej zwiechy. Ja w ogóle zawsze powtarzam, że jak ktoś pisze, że układy scalone (nie ważne jakie) mu się zawieszają i są wadliwie zrobione - to warto żeby bardzo dobrze zrewidował swoje podejście do elektroniki. Bo w ten sposób to można o każdym układzie napisać z którym nie potrafimy sobie poradzić. W ogóle próba zrzucania winy na układy zamiast doszukiwania się przyczyn tego dlaczego coś na mnie wychodzi - to niestety ZGROZA :(

Owszem też uważam, że DS'ki bywają lepsze niż PCFki - ale czy to miałoby oznaczać że dlatego lepsze bo się nie zawieszają - a te drugie zawieszają ? .... tak jak mówi SunRiver szukaj panie kolego rozwiązania problemu a nie staraj się go obchodzić.

Dobra przechodząc do meritum, i uznając że kolega już raz na zawsze pozbędzie się takiego podejścia spróbujmy pomóc w rozwiązaniu problemów. Najpierw może zajmiemy się tym nieszczęsnym zawieszaniem.

Kolega pisze że wgrał program z książki - tzn z książki ? przepisany palcami ? czy ten z płyty DVD ? bo przy przepisywaniu palcami już nie jedna osoba popełniła błędy i doszukiwała się ich w tym że kody z książki są nieteges.

Jeśli zaś kolega wgrał program z DVD to teraz który? ten ze sprzętową obsługą I2C ????? A jeśli ten to czy kolega był łaskaw pobrać aktualizację do tego programu i to z tego forum?

topic27.html

chodzi właśnie o lekcję ze sprzętowym TWI ponieważ na DVD zabrakło mi jakoś funkcji do ustawiania prędkości magistrali I2C, chodzi o to:

08_TWI - dodano funkcję void i2cSetBitrate(uint16_t bitrateKHz)

poza tym jaką częstotliwością kolega taktuje procka 8MHz ??? bo jeśli akurat taką - to mogło się okazać że nawet bez ustawiania tą funkcją prędkości na 100kHz też będzie wszystko śmigać ale jeśli większą np 11,0592MHz albo jeszcze wyższą taktujesz procka i nie ustawisz i2cSetBitrate na 100kHz to nie dziw się że ci się transmisja zawiesza co jakiś czas - bo to wtedy normalne zjawisko ;)

poza tym - transmisja się zawiesza .... a doczytałeś w książce szczegóły tworzenia biblioteki do obsługi sprzętowej I2C ??? oj chyba nie. A pisałem tam że pokazuję najprostsze przykłady, w których są pętle nieskończone while() i jeśli wystąpi jakiś błąd na magistrali to niestety zakończy się to zawieszeniem dlatego jeśli już to można sobie je dalej przerobić tak żeby brały pod uwagę TimeOuty i się nie zawieszały. Ale jakbym ja je tak przedstawił to rzadko kto z początkujących by zrozumiał o co tu chodzi - tymczasem na takich najprostszych wersjach można się nauczyć szybko podstaw. A jak się ustawi transmisję I2C i prawidłowo zrobi magistralę (podciąganie rezystorami 4,7k do VCC linii SDA i SCL) to nawet na tych zwykłych najprostszych funkcjach nigdy ci się nic nie zawiesi. I ja najczęściej je w takiej postaci używam. A jak padnie magistrala I2C jakoś sprzętowo i to i tak cały układ o naprawy i tak

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

drugi problem - dokładności czasu. Przede wszystkim to fakt - nie porównuj do jakichś takich dziwnych zegarków bo to żaden wzorzec - już lepszy wzorzec możesz sobie na kompie zorganizować odpalając byle co - co będzie ci synchronizować czas kompa przez sieć z wzorcami czasu SNTP

kolejna rzecz - takie układy RTC to żadne atomowe wzorce czasu i to normalne że będą się późnić lub nieco śpieszyć - chociaż byś nie wiem jak chciał. Ale spokojnie - nie muszą to być ogromne różnice - tylko warto zajrzeć do noty PDF takiego układu i zastanowić się np po co tam jest TRYMER panie kochany TRYMER a nie kondensator 22pF jaki ja pokazałem w książce. Bo oczywiście jak się znajdzie ktoś kto potrzebuje atomowego wzorca czasu - to powinien zamiast tego kondka dać właśnie trymerek i mając jakieś przyrządy - wyregulować sobie dokładną częstotliwość - ustawiając na wyjściu RTC programowo nie 1Hz to kalibracji tylko maksymalną - zdaje się coś koło 4kHz .... a potem możesz myśleć o lepszej dokładności, ale też bez przesady - bo jak wyłączysz zasilanie i RTC będzie podtrzymywany z baterii czy kondensatora 1F to już się nieco zmienią warunki i może chodzić szybciej albo wolniej. Podobnie zależy to od temperatury jak i od samego użytego egzemplarza kwarca zegarkowego.

Generalnie to sprawdź sobie czas nie po 1 dobie tylko np po miesiącu a najepiej pół roku. To się zdziwisz bo się okaże że tego typu układy potrafią się czasem lekko przyśpieszać a czasem spowalniać i wtedy średnia odchyłka wcale nie wychodzi taka duża w dłuższym czasie.

eeeeeh generalnie tyle razy już na różnych forach o tym pisałem że już mnie palce bolą - panowie jak chcecie mieć dokładny czas - SUPER dokładny - to się robi po prostu synchronizację. Poczytaj sobie w tym linku co podałem na górze jak ja ją zrobiłem sobie. A można jeszcze lepiej nie przez kompa a od razu dołożyć moduł ethernetowy na ENC28J60 i zrobić przez sieć Ethernet z internetem z jakimś serwerem SNTP i już masz.

a nie tam bawić się w super regulacje układów RTC .... ciekawe czy po roku czasu będziesz wciąż spoglądał i obserwował swój zegarek czy przypadkiem aby nie śpieszy się albo nie późni ileś tam sekund. Dopiero jak się późni albo śpieszy o kilka minut - to wtedy dopiero chce się komuś podejść do zegarka i go nastawiać ;)

to tyle

_________________
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: 9 cze 2012, o 12:57 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Dziękuje kolego za wyczerpującą odpowiedź. Mam nadzieje, że nie tylko mi pomoże twoja wypowiedź.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 13:02 
Offline
Moderator
Avatar użytkownika

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

Nie ma za co, po to jest nasze forum ;)

Ok, ale daj znać jak po testach - i czy stosowałeś wcześniej tą funkcję do ustawiania BitRate dla I2C ?

_________________
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: 9 cze 2012, o 13:10 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

No właśnie nie za bardzo wiem o co chodzi z tą funkcją BitRate dla I2C ? Nigdy nie z niej nie korzystałem, a w książce nic nie było o niej (albo coś przeoczyłem). Czy mógłbyś mi ją wyjaśnić? Kody stotosowałem z DVD przy taktowaniu 11059200.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 13:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 lis 2011
Posty: 302
Lokalizacja: Kraków
Pomógł: 6

Tutaj masz link do zaktualizowanych programów z książki.

_________________
Zapraszam:
filiporlo.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 cze 2012, o 14:46 
Offline
Moderator
Avatar użytkownika

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

Klucha napisał(a):
No właśnie nie za bardzo wiem o co chodzi z tą funkcją BitRate dla I2C ? Nigdy nie z niej nie korzystałem, a w książce nic nie było o niej (albo coś przeoczyłem). Czy mógłbyś mi ją wyjaśnić? Kody stotosowałem z DVD przy taktowaniu 11059200.


No właśnie to że ustawia się prędkość na magistrali I2C wydało mi się tak oczywiste, że po prostu zapomniałem o tym wspomnieć w książce i w kodach przykładowych na DVD. Dlatego zrobiłem to uaktualnienie.

O co chodzi? No a weź sobie zajrzyj do kilku not różnych scalaków działających na I2C - przecież w każdej nocie masz podane do jakiej maksymalnej prędkości w kHz może on działać. Taką standardową prędkością jest 100kHz ale są układy mogące działać i na 400kHz ale nawet i jeszcze dwa razy szybciej. Więc w czym problem ze zrozumieniem? Taktowanie procesora może być przecież różne - więc i zegar na linii SCL mógłby posuwać jak mały motorek przy taktowaniu procka 20Mhz ..... i dlatego są specjalne rejestry TWI w których ustawia się konkretną prędkość na magistrali I2C. W związku z tym masz w tej aktualizacji przygotowaną już prostą jak drut funkcję

i2cSetBitrate( 100 );

tak ją wywołujesz przy inicjalizacji TWI i już masz ustawioną prędkość. Tylko nie potraktuj tego jako gotowca, weź ją przejrzyj dokładnie i zobacz jakich rejestrów dotyka i poczytaj w nocie PDF o tym - żeby mieć świadomość co i jak.

_________________
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: 10 cze 2012, o 23:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 gru 2011
Posty: 204
Lokalizacja: Boguchwała
Pomógł: 3

Klucha napisał(a):
Witam. Ostatnio zacząłem się dużo bawić tym układem w różnych programach. Napisałem program od nowa z poddziału Układ czasu rzeczywistego. Jak wiadomo jest tam ten układ. Dodając również swoje kody rozszerzałęm program dla własnej nauki i potrzeb. Zauważyłem, że cały program się często zawiesza. Raz to bywało po godzinie, raz częściej,a nie raz później. Skracając program doszedłem do wniosku, że to wina kodu RTC. Dla pewności wgrałem program Mirka z płyty odnośnie samego RTC oraz jego program układu czasu rzeczywistego. Zostawiłem te programy na noc, aby sobie działały. Po czasie znowu złapały zawieszkę. Dodam, że wszystkie programy testuje na płytce ATB ver 1.01. W czym może być problem? Czy u was też się tak dzieje jak np. zostawicie program z RTC na cały dzień?....................

A może tu jest problem z zasilaniem tego układu (zawieszanie) ? Może brakuje 10 uF przy nóżkach zasilania ? Miałem podobny problem.
Co do dokładności, to kalibrowałem ( kalibrował zegarmistrz ustawiając trymer C ) i na rok pracy błąd zegara wynosi ok. 1 minuty.



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