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



Teraz jest 13 gru 2017, o 12:15


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  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: 32
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: 140
Lokalizacja: Gliwice
Pomógł: 8

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: 498
Lokalizacja: pod Warszawą
Pomógł: 28

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

_________________
WIEM, ŻE NIC NIE WIEM
JUŻ TROCHĘ WIEM



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

Dołączył(a): 19 lip 2016
Posty: 32
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: 39
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: 32
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: 39
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: 32
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: 498
Lokalizacja: pod Warszawą
Pomógł: 28

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.

_________________
WIEM, ŻE NIC NIE WIEM
JUŻ TROCHĘ WIEM



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

Dołączył(a): 19 lip 2016
Posty: 32
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: 498
Lokalizacja: pod Warszawą
Pomógł: 28

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?

_________________
WIEM, ŻE NIC NIE WIEM
JUŻ TROCHĘ WIEM



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

Dołączył(a): 19 lip 2016
Posty: 32
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: 498
Lokalizacja: pod Warszawą
Pomógł: 28

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?

_________________
WIEM, ŻE NIC NIE WIEM
JUŻ TROCHĘ WIEM



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

Dołączył(a): 26 lip 2017
Posty: 64
Pomógł: 9

Ewidentnie problem jest z związany z I2C, objawy są typowe: niby wszystko działa ale próba czytania wiesza program. Niestety te biblioteki nie zwracają błędów generowanych przez sprzęt, więc poznać naturę problemu nie sposób. Rozwiązania masz dwa: albo zastosujesz bibliotekę I2C, która zwraca błędy i zaimplementujesz jakąś obsługę, albo w tej bibliotece powstawiasz jakiś kod diagnostyczny, który Ci powie co tam się dzieje. Tak czy inaczej trzeba się trochę pobrudzić i przerobić program. Chyba, że ewentualnie wolisz rozwiązanie nr 3: losowe przepinanie kabelków i żganie paluchem, a nóż coś samo zaskoczy.

_________________
ignorance is bliss



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

Dołączył(a): 25 lip 2013
Posty: 1179
Pomógł: 57

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: 498
Lokalizacja: pod Warszawą
Pomógł: 28

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

_________________
WIEM, ŻE NIC NIE WIEM
JUŻ TROCHĘ WIEM



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: 22060
Lokalizacja: Szczecin
Pomógł: 805

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: 498
Lokalizacja: pod Warszawą
Pomógł: 28

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.

_________________
WIEM, ŻE NIC NIE WIEM
JUŻ TROCHĘ WIEM



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: 1441
Pomógł: 242

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: 32
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: 1441
Pomógł: 242

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: 32
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: 1441
Pomógł: 242

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: 32
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: 140
Lokalizacja: Gliwice
Pomógł: 8

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: 32
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: 140
Lokalizacja: Gliwice
Pomógł: 8

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: 22060
Lokalizacja: Szczecin
Pomógł: 805

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: 140
Lokalizacja: Gliwice
Pomógł: 8

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: 22060
Lokalizacja: Szczecin
Pomógł: 805

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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 32 ]  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 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