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



Teraz jest 28 gru 2025, o 16:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 4 cze 2013, o 14:24 
Offline
Nowy

Dołączył(a): 04 cze 2013
Posty: 3
Pomógł: 0

Witam,

Od dłuższego czasu próbuję uruchomić zegar RTC na swojej płytce, niestety nie potrafię sobie poradzić z problemem na jaki się natknąłem. Napisałem program, w którym na wyświetlaczu LCD wyświetla się aktualna godzina. Wszystko działa dobrze na zestawie uruchomieniowym ATB rev:1.03. Niestety problem pojawia się na mojej płytce. Otóż czas wyświetlany na LCD nie aktualizuje się. Po zresetowaniu atmegi wyświetla się czas aktualny w momencie resetu, ale później brak kolejnych aktualizacji. Stan na pinie PD2 (przerwanie INT0) zmienia się od 0 do 5V, co sekundę więc wydaje się być ok.
Podejrzewam, że problemem może być transmisja I2C, ponieważ napięcie na nóżce SCL zmierzone za pomocą multimetru wynosi 0V natomiast w przypadku zestawu uruchomieniowego napięcie to 5V.

W załączniku dołączam schemat.

Bardzo proszę o pomoc .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 cze 2013, o 14:54 
Offline
Użytkownik

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

hmmm .... gdzie masz ten schemat ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 cze 2013, o 14:56 
Offline
Moderator
Avatar użytkownika

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

a przeglądałeś ten schemat ATB dokładnie ? widziałeś że są tam rezystory podciągające SDA i SCL do VCC ( 2x po 4,7K) ? coś mi się wydaje że nie widziałeś i pewnie ich nie zastosowałeś - a wtedy nie ma co się dziwić opisywanym przez ciebie efektom

inny powód to może być że nie zastosowałeś funkcji i2cSetBitRate() .... czytasz na naszej stronie o uaktualnieniach do DVD ?

http://atnel.pl/uaktualnienia-programow-do-dvd.html

jak nie ? to zachęcam cię do zajrzenia

_________________
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: 4 cze 2013, o 18:09 
Offline
Nowy

Dołączył(a): 04 cze 2013
Posty: 3
Pomógł: 0

Przepraszam za brak obrazka, byłem przekonany, że dodałem schemat. Teraz już jest. Zastosowałem rezystory podciągające. Zastosowałem funkcję i2cBitRate(), wszystko działa dobrze w zestawie uruchomieniowym, a na mojej płytce tak jak wcześniej opisałem. Dzięki za linka :)

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 cze 2013, o 19:08 
Offline
Moderator
Avatar użytkownika

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

To jeszcze sprawdź adres na I2C bo masz podpięte A0 do VCC a adres jaki ? podłącz A0 do GND ;) i sprawdź tak na szybko - ale i tak doczytaj o adresowaniu tzn ustalaniu adresu jak ruszy

_________________
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: 5 cze 2013, o 15:04 
Offline
Nowy

Dołączył(a): 04 cze 2013
Posty: 3
Pomógł: 0

Podłączyłem A0 do GND. Niestety problem w dalszym ciągu jest ten sam. Adresowanie mam zdefiniowane w następujący sposób: PCF8583_ADDR 0xA0 .

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


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

Czy ma ktoś może jakieś pomysły co może być nie tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 16:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

if( int0_flag ){} umieść w nieskończonej pętli while(1){}, bo teraz nie ma się co dziwić, że raz się wykona odczyt.
PS.
Kod umieszczaj w znacznikach syntax=c

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 cze 2013, o 18:37 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
Czy ma ktoś może jakieś pomysły co może być nie tak?


przede wszystkim to twój program stoi do góry nogami .... skąd ty wymyśliłeś żeby definicje funkcji powrzucać do pliku i2c.h ??? to jest masakra :( ... masz przecież przykłady działające na DVD, a w książce opis o podziale projektu na pliki - tymczasem ty tworzysz po swojemu wszystko ?

tyczy się to także tego co napisał wyżej kolega Krauser - podstawa programu to nieskończona pętla while(1) albo for(;;) w głównej funkcji programu main(). Więc może rzuć okiem jeszcze raz proszę na podstawy C opisane w książce ok ? będzie ci łatwiej dalej pisać programy

_________________
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: 8 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO