ATNEL tech-forum
https://forum.atnel.pl/

DS3231 problem z przeportowaniem
https://forum.atnel.pl/topic19590.html
Strona 1 z 2

Autor:  Lu_let [ 11 lis 2017, o 21:38 ]
Tytuł:  DS3231 problem z przeportowaniem

Witam,
Chciałem przeportować kod z bloga Mirka na ATmega328P
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zmieniłem rejestry EICRA, EIFR i PORTB

Wyświetla się tylko napis Start.. kompilator nie zgłasza żadnych błędów.
Co robienie tak, co pominąłem?

Autor:  Zealota [ 11 lis 2017, o 22:00 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

A czemu nie włączasz globalnych przerwań:
// sei();

Autor:  mczarny [ 11 lis 2017, o 22:02 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

cześć
korzystasz z INT0 czy PCINT0
w komentarzu masz INT0 a to jest na PD2 a nie na PB0

Autor:  Lu_let [ 12 lis 2017, o 10:13 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Poprawione na PD2 ale wciąż nie działa.
Tylko napis "start..."

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


Nie działają funkcje do pobierania daty i temperatury, kiedy je "zakomentuję"
Wszystko się poprawnie wyświetla.

Autor:  tom_zas [ 12 lis 2017, o 10:42 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

A czemu masz zakomentowane to przerwanie?
Kolega wcześniej pisał aby je włączyć.
Odkomentuj sei ();

Autor:  Lu_let [ 12 lis 2017, o 10:46 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

To nic nie zmienia tak jest w oryginalnym przykładzie, i powinno działać bez przerwań.

Autor:  tom_zas [ 12 lis 2017, o 10:57 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

A biblioteki są podłączone.
Ja przerobiłem ten kod pod atmege88 i działa bez problemu.

Autor:  Lu_let [ 12 lis 2017, o 11:21 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Oczywiście, inaczej wysypało by błędy.

Autor:  mczarny [ 12 lis 2017, o 11:36 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

tom_zas napisał(a):
A czemu masz zakomentowane to przerwanie?
Kolega wcześniej pisał aby je włączyć.
Odkomentuj sei ();


W programie nie ma obsługi przerwania więc nie trzeba a nawet nie można zezwalać na przerwania globalne bo program się będzie resetował. Tu jest wykorzystywana flaga sprzętowa i jej zerowanie.

Piszesz, ze nie działają funkcje odczytu daty i temperatury. Jak masz ustawiony adres na szynie I2C? Czy jest to 0xD0?
Czy zainicjowałeś DS-a? Masz przebieg 1Hz na wyjściu? Musisz pod adres 0x0E wpisać "0" bo inaczej scalak nie ruszy.

Autor:  Lu_let [ 12 lis 2017, o 11:53 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Tak, mam ustawiony adres 0xD0
Jest zainicjowany 0x0E
Wyjście generuje 1Hz

Autor:  mczarny [ 12 lis 2017, o 12:17 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

no cóż nie widząc funkcji do odczytu czasu, daty i temperatury nic mi więcej nie przychodzi do głowy.
Gdzieś masz błąd w tych funkcjach lub w strukturze.
Spróbuj odczytać na początek tylko np. sekundy czyli jeden bajt z adresu 0x00 i wyświetl sobie tą wartość na LCD ale nie funkcją tylko normalnie jako liczbę - będziesz wiedział czy funkcja działa prawidłowo

Oczywiście ustawiłeś częstotliwość I2C?

Autor:  Lu_let [ 12 lis 2017, o 12:31 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Funkcje do odczytu daty są jak w przykładzie z bloga, zakładam że są uniwersalne i nie trzeba nic zmieniać.
Tak samo struktury.
i2cSetBitrate(100);
LCD też mam podłączone na I2C.

Autor:  mczarny [ 12 lis 2017, o 12:49 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Lu_let napisał(a):
Funkcje do odczytu daty są jak w przykładzie z bloga, zakładam że są uniwersalne i nie trzeba nic zmieniać.
Tak samo struktury.
i2cSetBitrate(100);
LCD też mam podłączone na I2C.


Czyli masz wszystko dobrze a jednak nie działa hmm......
Piszesz, że LCD też masz na szynie I2C - nie masz tam jakiegoś konfliktu?

Autor:  micky [ 12 lis 2017, o 14:45 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Mozna skorzystać z i2c scannera. A nuż to jednak jest inny adres?

Autor:  mczarny [ 12 lis 2017, o 15:38 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

micky napisał(a):
Mozna skorzystać z i2c scannera. A nuż to jednak jest inny adres?

Można chociaż wątpię żeby DS miał inny adres.
Można odłączyć wyświetlacz LCD z szyny I2C i podłączyć go po uruchomieniu programu gdy pierwsze odczyty z DS-a już polecą lub użyć do prezentacji danych terminala.
Autor wątku twierdzi jednak, że ma wszystko tak jak P.Mirek prezentuje na blogu (czyli wszystko dobrze) a jednak nie działa.
Nie wiemy też czy uruchomiane to jest na zestawie ATB czy na czymś innym...

Autor:  mirekk36 [ 12 lis 2017, o 15:49 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

mczarny napisał(a):
Można chociaż wątpię żeby DS miał inny adres.

Kolega widzę nie rozumie w ogóle roli tego typu narzędzi.

Pewnie, że nie będzie miał innego adresu ... ale już sam fakt, że narzędzie sprawdzi ten adres czyli nawiąże komunikację z układem - to mamy pierwsze 50% problemu rozwiązane, bo WIADOMO, że od strony sprzętowej wszystko jest dobrze podłączone.

Teraz zostaje do rozwiązania drugie 50% czyli sprawa oprogramowania ... I teraz ZNOWU trzeba problem podzielić na DWA

itd itd itd

zamiast pisać, że nic nie pomoże zewnętrzne sprawdzenie - i męczyć się np nad problemem softu jeśli leży on np w problemie sprzętu.

Autor:  mczarny [ 12 lis 2017, o 17:04 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

mirekk36 napisał(a):
mczarny napisał(a):
Można chociaż wątpię żeby DS miał inny adres.

Kolega widzę nie rozumie w ogóle roli tego typu narzędzi.

No nie skąd taki wniosek? :roll:
Autor wątku pisał, że uruchomił scalaka przez wpisanie zer w rejestr 0x0E więc nie ma sensu sprawdzać skanerem.
Problem ma z odczytem danych stąd moje sugestie żeby odpiął LCD z szyny i wykorzystał np.terminal po RS do podglądu co mu się zapisuje w strukturze.

Autor:  anshar [ 12 lis 2017, o 18:18 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Tak nieśmiało zapytam, czy podłączyłeś INT/SQW z DS3231 do pinu PD2 (nóżka nr4) uC?
Coś czuję, że nie.

------------------------ [ Dodano po: 2 minutach ]

Funkcja main powinna 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.

Autor:  Lu_let [ 12 lis 2017, o 18:35 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Tak mam podłączony, nóżka nr 32 ( TQFP )
Funkcja main dokładnie taka jak kolega napisał.

Autor:  anshar [ 12 lis 2017, o 18:47 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

OK
A pull up rezystor na INT/SQW też?

Autor:  Lu_let [ 12 lis 2017, o 18:49 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Tak jest 1,2K.

Autor:  anshar [ 12 lis 2017, o 18:53 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

No to moim zdaniem za mały. Daj 10k.

Autor:  Lu_let [ 12 lis 2017, o 19:05 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

To raczej nie pomoże. Dałem 12k bez zmian.

Autor:  Zealota [ 12 lis 2017, o 19:10 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Lu_let napisał(a):
Tak mam podłączony, nóżka nr 32 ( TQFP )
Funkcja main dokładnie taka jak kolega napisał.


To mnie ciekawi: "TQFP"
Z tego wynika, że prawdopodobnie masz własną płytkę, na której próbujesz uruchomić DS3231.
W kilku pierwszych postach wyszło, że oprócz błędu złego pinu PB0 (PD2) kod był zbliżony do tego, który Mirek zaprezentował.

Zatem najwyższa, wg mnie, pora byś zaczął szukać błędów w układzie elektronicznym.
Pokaż schemat, pokaż pcb połączenia itd. Stawiam, że błąd tam popełniłeś, ale coś czuję, że zapierasz się nogami i rękami, że nie :)
Z czego to wnioskuję?
Z tego, ze gdy sam robiłem ten port na 328P wszystko ruszyło mi od strzała. Byłem wtedy taki dumny, że zrozumiałem poradnik Mirka bez większego problemu i po 1,5 godziny obcowania z poradnikiem miałem gotowy zegarek, który potem wylądował m.in. do mojego MgickClocka, opisywanego na forum.

Co do 12kOhm, wg mnie żaden rezystor nie jest tam potrzebny, wystarczy podciągnie wewnętrznym pullapem atmegi.

Autor:  Lu_let [ 12 lis 2017, o 19:47 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Kod jest pobrany wprost z bloga.
Zmieniłem tylko rejestry EICRA, EIFR



Połączenia sprawdziłem i raczej nie ma błędów.
To jest płytka

Obrazek

Autor:  Zealota [ 12 lis 2017, o 20:02 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Czy sprawdziłeś dokładnie, w którym miejscu wiesza się program?
Wyświetlany napis Start to za mało wg mnie.
Ja bym zrobił "pułapkę diodową" i sprawdzał po kolei na której linii się zatrzymuje lub sprawdził na oscyloskopie albo analizatorze.
Gdy uruchamiałem zegarki już w gotowych projektach to przy braku dobrego połączenia lub właściwego adresu, biblioteka "wieszała" się wtedy na wewnętrznych pętlach tak jak pisał Kolega Roske.
Widzę też, że zastosowałeś tani moduł RTC bez wyprowadzonego INT - zrobiłeś zworę (zresztą jak i ja :) ). Może tutaj jakiś kłopot albo zwarcie do sąsiedniej nóżki, albo co.
EDIT:
A nie doczytałem, że teraz się wiesza na get_Date_Time...

Autor:  mirekk36 [ 12 lis 2017, o 21:18 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

jak pisałem wyżej ;) w 5 sekund udałoby się uzyskać odpowiedź na pytanie o połączenia sprzętowe - stosując I2C Scaner ;)

topic19430.html

Autor:  Zealota [ 12 lis 2017, o 21:28 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

mirekk36 napisał(a):
jak pisałem wyżej ;) w 5 sekund udałoby się uzyskać odpowiedź na pytanie o połączenia sprzętowe - stosując I2C Scaner ;)

topic19430.html

Ale jak, gdzie, kiedy ? :)
Chyba czegoś nie rozumiem, bo Kolega Lu_let ma własną płytkę. Z tego co widzę nawet nie ma zestawu ATB, ani przejściówki RS232, więc nie za bardzo może wykorzystać I2CSkaner. Nawet jeśli sprawdzi sam moduł z DS2321 po zakupie odpowiedniego hardware to jedynie sprawdzi sam moduł, swojej płytki narzędziem nie sprawdzi...

Autor:  mirekk36 [ 12 lis 2017, o 21:49 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

Zealota napisał(a):
Chyba czegoś nie rozumiem, bo Kolega Lu_let ma własną płytkę. Z tego co widzę nawet nie ma zestawu ATB, ani przejściówki RS232, więc nie za bardzo może wykorzystać I2CSkaner.

tak jeśli nie ma to rzeczywiście problem - może ja gdzieś przez przypadek źle założyłem albo doczytałem, że jednak posiada ...

Autor:  yaiba83 [ 13 lis 2017, o 10:25 ]
Tytuł:  Re: DS3231 problem z przeportowaniem

A ja mam pytanie do kolegi Lu_let - jaki symbol posiada ta biała obudowa w której masz zainstalowany wyświetlacz LCD?

A co do twoich problemów - jesteś pewien, że ten moduł DS3231 jest sprawny? Sprawdzałeś go na innym, pewnym układzie? Mi się zdarzyło raz, że taki gotowiec DS3231 z małą bateryjką nie działał.

Zrób sobie pułapkę diodową zaraz za instrukcją DS3231_init();

Jak ci się dioda nie zaświeci to albo DS nie działa, albo błąd w połączeniach. Dopiero potem patrz co dalej.


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

Przy okazji żeby nie zakładać nowego wątku:

Zrobiłem sobie właśnie programator do wstępnego wpisywania aktualnej daty takich malutkich układów DS3231.
Czas pobieram modułem ATB-WiFi korzystając z serii poradników Dawca Czasu.
Obsługę DS`a też mam wykonaną na podstawie poradnika Mirka.
Ładnie czas pobiera z internetów, tak samo zapisuje i odczytuje z układu DS3231.

Ale mam małą zagwostkę z DS3231_init();
Chodzi mi o to, że jak nie ma modułu w układzie to program zatrzymuje się w tym miejscu i wisi na amen.
Jak będzie obecny przy starcie jest ok. Potem mogę go wyjąć, program się zatrzymuje, wkładam z powrotem i rusza dalej.

Tu moje pytanie czy można tak sprawić by program wystartował bez modułu lub sam się restartował aż wreszcie moduł będzie wmontowany?
Próbowałem to rozwiązać watchdogiem (załączenie przed DS3231_init(); i zaraz za nim dezaktywacja) ale mi to nie działało. Może nie w tym miejscu, może za długi czas?

Macie może jakieś pomysły na tego typu problem?

Strona 1 z 2 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/