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



Teraz jest 28 mar 2024, o 14:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 31 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 11 lis 2017, o 21:38 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2017, o 22:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2017, o 22:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 10:13 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 10:42 
Offline
Użytkownik

Dołączył(a): 19 sty 2016
Posty: 49
Lokalizacja: Kraków
Pomógł: 1

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 10:46 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 10:57 
Offline
Użytkownik

Dołączył(a): 19 sty 2016
Posty: 49
Lokalizacja: Kraków
Pomógł: 1

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 11:21 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 11:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 11:53 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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



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

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 12:31 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 12:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 14:45 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2561
Pomógł: 126

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 15:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 15:49 
Offline
Moderator
Avatar użytkownika

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

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.

_________________
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 lis 2017, o 17:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

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.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 18:18 
Offline
Użytkownik
Avatar użytkownika

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

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 18:35 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 18:47 
Offline
Użytkownik
Avatar użytkownika

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

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 18:49 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

Tak jest 1,2K.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 18:53 
Offline
Użytkownik
Avatar użytkownika

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

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 19:05 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 19:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 19:47 
Offline
Użytkownik

Dołączył(a): 19 lip 2016
Posty: 114
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 20:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 21:18 
Offline
Moderator
Avatar użytkownika

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

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

_________________
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 lis 2017, o 21:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 lut 2017
Posty: 369
Lokalizacja: Gliwice
Pomógł: 34

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2017, o 21:49 
Offline
Moderator
Avatar użytkownika

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

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

_________________
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: 13 lis 2017, o 10:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 sty 2014
Posty: 243
Pomógł: 9

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?

_________________
http://www.ate-zbaszyn.eu



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: 31 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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