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



Teraz jest 29 mar 2024, o 16:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
 Tytuł: Ds1307 prroblem
PostNapisane: 23 sie 2017, o 14:41 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Kolejny problem tym razem z i2c. Mam taki moduł z ds1307 i już przy ustawianiu godziny program nie działa. Dodałem migającą diodę, zaczyna migać dopiero jak usunę TWI_write_buf. Zaznaczam, że nie mam baterii. Funkcje z książki.
Kod:
int main(void)
{
DDRC |= (1<<PC2);
   i2cSetBitrate(100);
czas[0]= dec2bcd(0);      //sekundy
czas[1]= dec2bcd(1);     //minuty
czas[2]= dec2bcd(2);     //godziny

TWI_write_buf(0xD0,0x00,3,czas);

while(1){

PORTC ^=(1<<PC2);
_delay_ms(500);
}
}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 15:35 
Offline
Moderator
Avatar użytkownika

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

pokaż lepiej jak to połączyłeś - jakiś schemat??? zdjęcie itp ....

bo z tego co piszesz to zrobiłeś mega babola w połączeniach

_________________
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 sie 2017, o 15:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

A linie SDA i SCL masz podciągnięte do Vcc rezystorami?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 16:47 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Żadnych rezystorów nie dodawałem myślałem, że wszystko jest w module. Podłączyłem sda do sda i scl do scl. Obrazek źle wklejony - Różowo-zielony J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 17:09 
Offline
Użytkownik

Dołączył(a): 14 sty 2017
Posty: 39
Pomógł: 4

W poradniku https://www.youtube.com/watch?v=rPxRkYTtvYg&t Mirek napisał eleganckie rozwiązanie dla DS3231. Możesz go użyć zmieniając tylko w inicjalizacji wartość ctrl na 0x90. I nie używać funkcji temperatury get_temp i show_temperature bo DS1307 nie posiada tej funkcjonalności.

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 sie 2017, o 17:39 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Na TWI_write_buf cały program się zawiesza.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 18:20 
Offline
Użytkownik

Dołączył(a): 14 sty 2017
Posty: 39
Pomógł: 4

Możesz pokazać jaki masz moduł? Powinieneś podłączyć pin SQ do INT0. Jeżeli masz Atmega32 to dodaj w kodzie linię:
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 sie 2017, o 18:55 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Nie mam podłączonego pinu SQ, ale chyba nie jest to wymagane do ustawienia godziny i jej odczytu?



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

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Na jakim mikrokontrolerze próbujesz to uruchomić i na jakiej płytce jest ten uC? Bez tych informacji, wątek zamienia się w zabawę w kalambury!

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 20:22 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Atmeg8a na płytce stykowej. Kondensatory i wszystko jest. Podłączone mam Tylko sda scl i wyświetlacz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 20:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 gru 2013
Posty: 121
Pomógł: 16

Czy uwzględniłeś erratę do książki Mirka dotyczącą biblioteki I2C ?? Ja przez to nie mogłem odpalić ds1307

_________________
http://strefapic.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2017, o 21:31 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Sprawdziłem erratę, w książce jest dobrze napisane, biblioteka też się zgadza.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2017, o 08:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

Skoro już masz tę diodę to użyj jej dalej jako debugera tzn skopiuj sobie kod
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

do ciała funkcji TWI_write_buf(0xD0,0x00,3,czas); na sam początek.
a z pętli głównej usuń miganie diodą.
Skompiluj i wgraj. Jak dioda zamruga przesuń wklejony fragment o jedną bądź kilka linijek kodu niżej i ponownie skompiluj i wgraj i sprawdź czy dioda zamruga. Rób tak do momentu aż dioda przestanie mrugać. Wtedy będziesz wiedział że pomiędzy obecną pozycją pętli mrugania a poprzednią jest błąd, bądź coś co powoduje nieskończone oczekiwanie.
Oczywiście przesuwając pętlę mrugającą musisz to robić zgodnie z kolejnością wykonywania kodu tak więc jeśli przesuwając ją napotkasz na koniec funkcji musisz wrócić do miejsca jej wywołania i tam ją dalej wklejać lub ewentualnie do ciała kolejnej funkcji która jest wywoływana.
Bo tak to trochę trudno cokolwiek podpowiedzieć bo powodów może być wiele.
Obejrzyj sobie ten poradnik http://mirekk36.blogspot.com/2014/04/puapki-programowe-debuger-na-jednej.html bo ten sposób jest na prawdę potężnym narzędziem, a samodzielne znalezienie problemu tym sposobem jest mega satysfakcjonujące i pouczające.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2017, o 08:25 
Offline
Użytkownik

Dołączył(a): 14 sty 2017
Posty: 39
Pomógł: 4

Zrobiłem testowo dla ciebie cały układ na szybkiego, bez rezystorów i kondensatorów. Wydaje mi się, że układ jest ten sam. U mnie dioda miga po załadowaniu programu.
Masz tu filmik: [youtube]https://youtu.be/M79oOsoDbmM[/youtube]

A tu listing main.c

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: 24 sie 2017, o 08:45 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Upewnij się, że nie podłączasz odwrotnie linii SDA i SCL.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2017, o 12:39 
Offline
Użytkownik

Dołączył(a): 24 kwi 2012
Posty: 76
Lokalizacja: Ostrów Wielkopolski
Pomógł: 6

Eilip999 napisał(a):
Zaznaczam, że nie mam baterii
....zerknij do noty katalogowej co trzeba zrobić żeby układ działał bez baterii :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2017, o 18:33 
Offline
Nowy

Dołączył(a): 19 sie 2017
Posty: 14
Pomógł: 0

Podłączyłem vbat do gnd i działa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sie 2017, o 18:41 
Online
Użytkownik

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

Czyli warto czytać noty ;)



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: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO