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



Teraz jest 20 kwi 2024, o 13:10


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 1 wrz 2014, o 20:21 
Offline
Nowy

Dołączył(a): 10 sie 2014
Posty: 3
Pomógł: 0

Witam serdecznie.

Mam problem z prawidłowym działaniem układu RTC. (Kodz niebieskiej książki dla rozdziału4.10.1 RTC - sprzętowa obsługa I2C)
Używam zestawu ATB 1.04

Problem polega na tym że cały czas na LCD wyświetla się ta sama godzina.

A tera jak do tego doszło.
1)Najpierw lekko zmodyfikowałem i wgrałem kod z książki(z DVD)
Program zadział i na LCD wyświetlił się godzina zmieniając się co sekundę.

2)Ale godzina był nieprawidłowa, więc postanowiłem ją zmienić. W kodzie był za komentowany fragment kodu do ustawiania czasu.
Odkomentowałem go, wpisałem nowe wartości i wysłalem do AVR.
Następnie od razu zakomentowalem ten fragment i wgrałem poprzedni kod (ten który tylko odczytuje czas)
Czas się zmienił na prawidłowy, ale zaczął się dziwnie zmieniać. Sekundy zmieniały się od 0 do 7 i z powrotem 0 .. Minuty w ogóle się nie zmieniały.

3) Dzisiaj postanowiłem zmienić tak kod, żeby po naciśnięciu przycisku godzina zmieniła się na 20:00:00.
kod wgrałem godzina się zmieniła, ale zegar stoi w miejscu

Sprawdziłem, że przerywania się wykonują.

Załączam kod, który jest aktualnie wgany
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Czy macie pomysł co moglem zrobić źle?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 wrz 2014, o 22:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sie 2013
Posty: 119
Lokalizacja: Cinisi
Pomógł: 12

podałeś kod gdzie nie zmieniasz już ustawiania godziny. Na tym kodzie rtc też nie działa ? skopiuj dokładnie kod z erraty do BB i spróbuj odpalić nic nie grzebiąc w kodzie, czasami można coś przeoczyć albo niechcący usunąć. Pozdrawiam

_________________
sig off :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 00:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 wrz 2012
Posty: 73
Pomógł: 2

Hej,

Zobacz proszę, czy działa Tobie Twój kod, ale z tymi funkcjami konwertującymi:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


@@EDIT

look-ashek napisał(a):
ale zegar stoi w miejscu



Nie ma czegoś takiego, jak zegar, który się zatrzymał. Nie wiem jak jest w przypadku PCF'a, ale z tego co na szybko wyczytałem też jest bateria zewnętrzna jako podtrzymanie zastosowana, mi się wydaję, że zegar cały czas tyka (możesz to sprawdzić?), tylko kwestia z odbiorem tych danych po I2C.

Jesteś w stanie wrócić do kodu, w którym jest sam odbiór i wyświetlenie tego na LCD?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 00:53 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

Najprawdopodobniej coś przy ustawianiu czasu poszło nie tak i niechcący coś wpisałeś do rejestru konfiguracyjnego PCF8583, wystarczy jesli wpiszesz 0x00 i zegar ruszy :-). Poniżej masz kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Umieść to przed wejściem do pętli głównej, zaraz po sei();. W zasadzie możesz to zostawić na stałe - jeśli coś znów pójdzie nie tak, to zegar się odblokuje :-).

Pozdrawiam, QuadMan.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 06:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Widzę że definiujesz też eeprom. Rozumię że działasz na ATB. Kiedyś miałem podobny przypadek. Zanim coś pozmieniasz to zobacz tak czy ci zadziała RTC.

Wyłącz zasilanie.
Wypnij eeprom.
Włącz zasilanie.

Jak RTC rudzy to może zworka przy eeprom źle ustawiona lub eeprom nie ten albo padnięty.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 20:04 
Offline
Nowy

Dołączył(a): 10 sie 2014
Posty: 3
Pomógł: 0

Niestety nie pomogło.

1) Skopiowałem kod z Erraty
2) Odpiąłem EEPRON, przez wyciągniecie zworki J13
3) Zmieniłem funkcje konwertujące (za radą sheep)
4) Zresetowałem rejestr konfiguracyjny (za radą QuadMan). Z tym, ze wywołałem funkcję TWI_write_buf( PCF8583_ADDR, 0x00, 1, bufor ), czyli od adresu 0x00 a nie tak jak napisał QuadMan
5) Dla pewności do ustawiania czasu zrezygnowałem z funkcji konwertujących i wpisuje bezpośrednio wartości binarne

Reset i ustawienie czasu przeniosłem do funkcji wywoływanych po wciśnięciu przycisków (PD6 i PD7)

Teraz sytuacja wygląda tak.
W zależnosći od tego jaki czas uwawie to zegar tyka lub nie. Ale jak tyka to wartosci są losowe. Np.
12:12:12
12:12:10
12:12:00
12:12:10

I uwaga ciekawostka.
Jak wcisnę przycisk który wywołuje funkcję reset_zegara() i trzymam go wcisnięty to pojawia się "prawidłowa" godzina i zegar tyka poprawnie.


Ktoś ma pomysł co się dzieje.

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: 2 wrz 2014, o 20:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 wrz 2012
Posty: 73
Pomógł: 2

A czy tutaj, nie powinieneś podać kolejnych numerów do odpowiedniego wskazania indeksu tablicy?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

No i dlaczego nie numerujesz od zera?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 20:31 
Offline
Nowy

Dołączył(a): 10 sie 2014
Posty: 3
Pomógł: 0

Sheep napisał(a):
A czy tutaj, nie powinieneś podać kolejnych numerów do odpowiedniego wskazania indeksu tablicy?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

No i dlaczego nie numerujesz od zera?



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

A później dla pewności na
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ale jest bez zmian.

Nie numeruje od zera bo pod indeksem zero są zwracane setne sekundy, których nie wyświetlam na LCD.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 20:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 wrz 2012
Posty: 73
Pomógł: 2

To ja też bym spróbował je wyświetlić i zobaczyć jak się RTC zachowuje ;)

Ale zwykle, jeśli masz problem, staraj się rozbić go na mniejsze podproblemy, potem złączysz je w całosć i rozwiażesz problem.
Chodzi mi o to, byś zakomentował funkcję ustawiania czasu(pomińmy póki co jaka godzina jest ustawiona - na pewno jakaś jest) i obsługi przycisków. DOdatkowo wyłączył bym póki co przerwanie i w while'u z delayem odczytywałbym czas i wrzucał go na LCD. Wtedy jeśli to ruszy, dopiero dodawaj przyciski( po jednym), potem przerwanie. Po drodze na pewno problem się sam odnajdzie.

Wstaw proszę w nowym poście kod po mojej radzie (jeśli uważasz ją za słuszną oczywiście ;) )



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 wrz 2014, o 22:21 
Offline
Użytkownik

Dołączył(a): 29 lip 2014
Posty: 195
Pomógł: 44

Witam,

Sorry, faktycznie miało być 0x00 - późno już było... ;-). Masz podpięte przyciski do PD6 i PD7 ? W takim razie:

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


po co ustawiasz te linie jako wyjścia ??? Klawiatura Ci pewnie przez to działa bez sensu - nie wiadomo, co czytasz. przestaw DDR tak, aby PD6 i PD7 były wejściami.

Pozdrawiam, QuadMan.



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

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