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



Teraz jest 18 kwi 2024, o 17:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 10 mar 2019, o 21:20 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

Jako RTC użyłem modułu takiego jak na zdjęciu z układem DS1307. W pierwszej wersji działał tylko na wyświetlaczu LCD z biblioteką Mirka. Biblioteka I2C też ściągnąłem od Mirka tylko dostosowałem do DS1307. Dołożyłem do tego wyświetlacz LED (ze wspólną anodą). Obsługę wyświetlacza LED napisałem całkiem sam, po tym jak poczytałam BB i trochę w necie. Do puki nie było wyświetlacza LED i kodu z nim związanego zegar działał jak należy. Po tym jak dodałem LED zegar działa przez kilka, kilkanaście, kilkadziesiąt sekund, czasami kilka minut, różnie i się zatrzymuje, obydwa wyświetlacze pokazują ten sam czas. Po usunięcie z pliku main.c funkcji led_init zegar działa poprawnie, wyświetlacz LED oczywiście nic nie pokazuje. Dodaję kod programu w wersji w której LCD pokazuje datę i godzinę na wyświetlaczu LED zwiększa się liczba od 0 do 9999, następnie liczba się zeruje i tak w kółko powinno być. Efekt zatrzymywania zegarka jest taki sam jak wtedy gdy na wyświetlaczu LED była godzina. Proszę naprowadźcie mnie gdzie zrobiłem błąd.
Obrazek
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.

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

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


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

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2019, o 12:21 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 181
Lokalizacja: Kraków
Pomógł: 30

A na jakim procku operujesz, gdzie jest podpięty LCD?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 mar 2019, o 14:35 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

Próbuję na atmedze32 bo tylko taki mam teraz. Anody mam włączone w PC4..PC7, katody zajmują cały port PA. W pliku multipleks.h tak to zdefiniowałem.
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: 11 mar 2019, o 15:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Zdefiniowałeś anody na porcie C. Na tym samym porcie masz szynę I2C więc powinieneś zakładać maskę na PC0-PC3 w czasie przemiatania anod wyświetlacza
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

W BB masz to opisane dokładnie pod koniec rozdziału o multipleksowaniu

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 mar 2019, o 21:45 
Offline
Użytkownik

Dołączył(a): 03 lut 2016
Posty: 126
Pomógł: 0

Raczej nie o maskowanie chodzi. Po przełączeniu anod na piny portu B i zmianie tego w kodzie programu efekt jest dokładnie ten sam (oczywiście usunąłem obsługę wyświetlacza LCD).
Trochę pokombinowałem z Timerem który odpowiada z multipleksowanie wyświetlacza. I widzę że jeżeli zmniejszam wartość OCR czyli zwiększam częstotliwość multipleksowania to zegar się nie zawiesza, przynajmniej do tej pory ponad 10 min od ostatniego restartu zegara. Mógł by ktoś mi powiedzieć o co z tym chodzi?



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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