ATNEL tech-forum https://forum.atnel.pl/ |
|
Timer programowy - sekundy https://forum.atnel.pl/topic19759.html |
Strona 1 z 1 |
Autor: | Daro68 [ 7 gru 2017, o 00:40 ] |
Tytuł: | Timer programowy - sekundy |
Proszę o pomoc chciałbym jeśli to możliwe przerwanie obsługujące multipleksowanie wyświetlacza led obsłużyć też timer programowy odmierzający sekundy żeby pozbyć się delay bawiłem się z timerami i ledami no i jakoś zagrało ale nie umiem połączyć tego z multipleksowaniem i ustawić sekund. multipleks.c język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. main.c język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poz. |
Autor: | Harry [ 7 gru 2017, o 05:34 ] |
Tytuł: | Re: Timer programowy - sekundy |
Zmienną "sek" musisz inkrementować w momencie odliczenia sekundy, bo teraz masz tak że zwiększasz ją co każdy obieg pętli, zamiast co określony czas. Czyli język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oczywiście przy założeniu że timer działa co 200Hz |
Autor: | SylwekK [ 7 gru 2017, o 07:48 ] |
Tytuł: | Re: Timer programowy - sekundy |
A najlepiej odliczać tylko jedna zmienną w przerwaniach i dopiero tą zmienną rozbijać na h/m/s w pętli głównej tuż przed wyświetlaniem na lcd. |
Autor: | Daro68 [ 7 gru 2017, o 21:04 ] |
Tytuł: | Re: Timer programowy - sekundy |
Zrobiłem jak zaproponował Harry ale coś jest nie tak zegar całkowicie stanął multipleks.c język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. main.c język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poz |
Autor: | Ognisty [ 7 gru 2017, o 21:22 ] |
Tytuł: | Re: Timer programowy - sekundy |
Zmienna timer powinna być jako zmienna globalna ze specyfikatorem volatile, ponieważ ze specyfikatorem static zmienna ta jest dostępna tylko w procedurze obsługi przerwania. Dodatkowo linijka: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. powinna wyglądać tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. wówczas warunek: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. będzie spełniony co sekundę (o ile częstotliwośc przerwania ISR(TIMER0_COMPA_vect) wynosi 200Hz). |
Autor: | Daro68 [ 10 gru 2017, o 23:41 ] |
Tytuł: | Re: Timer programowy - sekundy |
Miałem małą awarie PC więc dopiero dzisiaj odpisuję . Po poprawieniu i wgraniu programu dalej to samo zegar stoi wyświetla same zera multipleks.c język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
main.c język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poz. |
Autor: | Harry [ 10 gru 2017, o 23:58 ] |
Tytuł: | Re: Timer programowy - sekundy |
Nie zjadłeś gdzieś nawiasów? Czy kompilator zwraca jakiś błąd? |
Autor: | Krystek [ 11 gru 2017, o 17:07 ] |
Tytuł: | Re: Timer programowy - sekundy |
Spróbuj na początek uprościć zliczanie sekund bez żadnych warunków i sprawdź czy zmienną sek wyrzuca na wyswietlacz |
Autor: | Daro68 [ 11 gru 2017, o 20:35 ] |
Tytuł: | Re: Timer programowy - sekundy |
Wstawiłem do kodu LED1_TOG i zegar ruszył a gdy skasowałem LED1_TOG to zegar przestał działać po prostu stanął i teraz już wcale nic nie rozumiem o co tu chodzi . język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poz. |
Autor: | Krystek [ 11 gru 2017, o 21:29 ] |
Tytuł: | Re: Timer programowy - sekundy |
Masz dwa razy zadeklarowaną zmienną język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. W pliku multipleks.c i main.c, zostaw tylko w multipleks.c z przydomkiem extern volatile |
Autor: | Daro68 [ 12 gru 2017, o 23:01 ] |
Tytuł: | Re: Timer programowy - sekundy |
Zegar zaczął działać dzięki za podpowiedzi ale dopiero gdy powołałem dodatkową zmienną timer w main.c bo bez tej dodatkowej zmiennej wywalał mi cały czas błąd język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. a w multipleks.c za radom ‘Kristek zapisałem z przydomkiem extern volatile i wszystko zaczeło grać chociaż do końca nie jestem pewien dlaczego język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. ale za to pojawił się kolejny problem z przyciskami do ustawiania godzin i minut to znaczy mogę przyciskiem ustawić tylko minuty a przycisk do ustawiania godzin nie chce działać proszę o jakaś podpowiedz . język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poz. |
Autor: | Krystek [ 14 gru 2017, o 00:09 ] |
Tytuł: | Re: Timer programowy - sekundy |
Przydomek "extern" informuje kompilator, że tej zmiennej możesz używać w innych plikach projektu gdzie zainkludujesz multipleks.h. DO tej pory radziłeś sobie tak ze w dwóch miejscach deklarowałeś zmienną o takiej samej nazwie, i gdy w pliku multipleks.c ją modyfikowałeś, to w pliku main.c deklarowałeś ją na nowo nadpisując inną wartością. Zrób tak, że w pliku multipleks.c daj " volatile uint8_t timer" a w pliku multipleks.h "extern volatile uint8_t timer" , wtedy wykasuj zmienną timer z maina. (Wprowadziłem Cię w błąd mówiąc Ci że extern musisz dać w pliku . c - ja tez się uczę )W pliku .h zawsze wpisujesz deklaracje zmiennych i funkcji których używasz potem w mainie, żeby go nie zaśmiecać a w pliku .c ich definicje. Możesz zadeklarować zmienne tylko w pliku .c (bo nie do każdej zmiennej czy funkcji musisz mieć dostęp w main), ale jeśli chcesz żeby były widoczne też w pliku main, musisz je zadeklarować także w .h . Mam nadzieję że nie pogmatwałem za bardzo A co do przycisków to pokaż jak wyglądają makra do obsługi przycisków i upewnij się że oba klawisze masz podciągnięte wewnętrznym rezystorem do VCC |
Autor: | Daro68 [ 14 gru 2017, o 20:52 ] |
Tytuł: | Re: Timer programowy - sekundy |
Działa tylko przycisk do ustawiania minut a przycisk godzin wcale nie reaguje myślałem że jak za komentuje przycisk minut to przycisk godz. się odblokuje ale nic z tego proszę o pomoc Poniżej cały main.c język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Poz. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |