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



Teraz jest 13 gru 2017, o 12:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 7 gru 2017, o 00:40 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 127
Lokalizacja: Katowice
Pomógł: 0

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

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.

Poz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2017, o 05:34 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 459
Pomógł: 17

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
Składnia: [ Pobierz ] [ Ukryj ]
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

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2017, o 07:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1278
Lokalizacja: Lipsko
Pomógł: 85

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.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2017, o 21:04 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 127
Lokalizacja: Katowice
Pomógł: 0

Zrobiłem jak zaproponował Harry ale coś jest nie tak zegar całkowicie stanął :(
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.

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.

Poz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2017, o 21:22 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 03 gru 2014
Posty: 11
Pomógł: 1

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

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

wówczas warunek:
Składnia: [ Pobierz ] [ Ukryj ]
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).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2017, o 23:41 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 127
Lokalizacja: Katowice
Pomógł: 0

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

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.

Poz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2017, o 23:58 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 459
Pomógł: 17

Nie zjadłeś gdzieś nawiasów?
Czy kompilator zwraca jakiś błąd?

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2017, o 17:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 kwi 2013
Posty: 61
Lokalizacja: Rzeszów
Pomógł: 0

Spróbuj na początek uprościć zliczanie sekund bez żadnych warunków i sprawdź czy zmienną sek wyrzuca na wyswietlacz

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 gru 2017, o 20:35 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 127
Lokalizacja: Katowice
Pomógł: 0

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 :shock: .
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Poz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2017, o 21:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 kwi 2013
Posty: 61
Lokalizacja: Rzeszów
Pomógł: 0

Masz dwa razy zadeklarowaną zmienną
Składnia: [ Pobierz ] [ Ukryj ]
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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: wczoraj, o 23:01 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 127
Lokalizacja: Katowice
Pomógł: 0

Zegar zaczął działać :D 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
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 multipleks.c za radom ‘Kristek zapisałem z przydomkiem extern volatile i wszystko zaczeło grać chociaż do końca nie jestem pewien dlaczego :?:
Składnia: [ Pobierz ] [ Ukryj ]
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 ;) .
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Poz.



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

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