ds1307 obsługa a w zasadzie jej brak. jakaś pomoc?

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

ds1307 obsługa a w zasadzie jej brak. jakaś pomoc?

Post autor: matrix » 21 lip 2010, 14:57

słuchajcie, mam drobny rebus. mam płytkę testową EVBavr-04 a na niej zegar ds1307.

napisałem (a raczej posklejałem) soft do jego obsługi i nawet wstawiłem biblioteki żeby lepiej pracował, ale nie dzieje się nic poza tym że wyświetla mi czas w postaci:

Kod: Zaznacz cały

05:05:05
a obie linie, SDA i SCL wystawiają logiczną 1
i nie wiem o co chodzi?

oto program:

Kod: Zaznacz cały

$PROG &HFF , &HA4 , &HD9 , &H00    ' generated. Take care that the chip supports all fuse bytes.

$regfile = "m8def.dat"
$crystal = 8000000
$baud = 19200
$lib "mcsbyte.lbx"
$lib "ds1307clock.lib"
$eepleave
$hwstack = 40
$swstack = 16
$framesize = 40

config LCD = 16 * 2
CONFIG LCDPIN = PIN , DB4 = pind.4 , DB5 = pind.5 , DB6 = pind.6 , DB7 = pind.7 , E = pind.3 , RS = pind.2
config sda = portb.0
config scl = portb.1
i2cinit

const ds1307w = 208
const ds1307r = 209

dim wartosc as byte
dim sekundy as byte
dim minuty as byte
dim godziny as byte

sekundy = 0
minuty = 0
godziny = 0


sekundy = makebcd(sekundy)
minuty = makebcd(minuty)
godziny = makebcd(godziny)
cursor off
cls

gosub zapis_do_zegara

do
home
 i2cstart
 i2cwbyte ds1307w
 i2cwbyte 0
 i2cstart
 i2cwbyte ds1307r
 i2crbyte sekundy , ack
 i2crbyte minuty , ack
 i2crbyte godziny , ack
 i2cstop

 sekundy = makedec(sekundy)
 minuty = makedec(minuty)
 godziny = makedec(godziny)

 waitms 500

 cls
 wartosc = makebcd(godziny)
  lcd bcd(wartosc) ; ":"
 wartosc = makebcd(minuty)
  lcd bcd(wartosc) ; ":"
 wartosc = makebcd(sekundy)
  lcd bcd(wartosc)
loop
end

zapis_do_zegara:
 i2cstart
 i2cwbyte ds1307w
 i2cwbyte 0
 i2cwbyte sekundy
 i2cwbyte minuty
 i2cwbyte godziny
 i2cstop
return
mały EDIT:
okazuje się że jednak działa tylko nie wiem czemu na początku pokazywało to co pokazywało. przez kilka godzin zegar chodził na baterii bez zasilania głównego i teraz pokazuje godzinę jak trzeba.

wiecie coś na ten temat?

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 22 lip 2010, 7:41

może na czas pracy na baterii wyłącza wysyłanie danych w celu zmniejszenia poboru prądu? przeglądam sheeta ale ten milczy w tej kwestii...

Artizzz
-
Posty: 41
Rejestracja: 03 mar 2007, 11:59
Lokalizacja: xx

Re: ds1307 obsługa a w zasadzie jej brak. jakaś pomoc?

Post autor: Artizzz » 22 lip 2010, 9:08

matrix pisze: i2crbyte godziny , ack
i2cstop
a czy czasem ta linijka nie powinna mieć parametru Nack?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 22 lip 2010, 14:57

Artizzz pisze:a czy czasem ta linijka nie powinna mieć parametru Nack?
w wersji finalnej ma. był drobny błąd podczas kopiowania softu, bo kilka rzeczy z oryginału usunąłem nim tu wkleiłem.

generalnie jest tak. jak naładuję baterię podtrzymującą na full to wtedy fiksuje i wyświetla:

Kod: Zaznacz cały

05:05:05
natomiast jak napięcie baterii podtrzymującej spadnie do jakiegoś poziomu to całość zaczyna pracować jak Bóg przykazał.

wnioskuję więc, że napięcie na wejściu Vbat tegoż zegara jest po pełnym naładowaniu zbyt duże i dlatego nie działa to prawidłowo. niestety na chwilę obecną nie mogę zmierzyć tegoż napięcia, bo pod ręką brak jakiegokolwiek miernika. chyba że napiszę na szybko coś na atmegę na tejże mojej płytce testowej.

Awatar użytkownika
haterkmp
Użytkownik
Posty: 652
Rejestracja: 08 sie 2008, 11:47
Lokalizacja: Wałbrzych

Post autor: haterkmp » 22 lip 2010, 16:47

tak jest napisane w dokumentacji:
"Diodes in series between the battery and the VBAT pin may prevent proper operation."
czyli diody mogą przeszkodzić w poprawnym działaniu

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 22 lip 2010, 17:28

ale ja nie mam diod pomiędzy baterią zasilającą a samym zegarem ds1307.

Wojtek
Moderator
Posty: 2606
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Post autor: Wojtek » 22 lip 2010, 17:36

matrix pisze:ale ja nie mam diod pomiędzy baterią zasilającą a samym zegarem ds1307.
A mógłbyś wrzucic tutaj schemat tego układu?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 22 lip 2010, 18:09

Wojtek pisze:A mógłbyś wrzucic tutaj schemat tego układu?
ciężko wrzucić schamacik bo to jest płytka testowa firmy PROPOX i wygląda tak:

Obrazek

natomiast sam schemat zegara RTC wygląda tak:

Obrazek

Wojtek
Moderator
Posty: 2606
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Post autor: Wojtek » 22 lip 2010, 19:30

A jakiś bardziej zaawansowany uklad resetu na tej płytce też jest?
Co z tymi zworkami podczas paracy?
A moze link do schematu całego?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 22 lip 2010, 19:39

w linku jest cały pdf od tej płytki jaki mam. niestety na chomiku.

http://chomikuj.pl/matrix0606/elektroni ... r04_pl.zip

Wojtek
Moderator
Posty: 2606
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Post autor: Wojtek » 22 lip 2010, 20:57

a jakie masz napięcie Vtg ustawione 3V3 czy 5V?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 22 lip 2010, 21:04

Wojtek pisze:a jakie masz napięcie Vtg ustawione 3V3 czy 5V?
zapodaję 5V.

ODPOWIEDZ