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



Teraz jest 18 mar 2026, o 17:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 21 paź 2016, o 20:13 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Witam.
Proszę o pomoc w zrozumieniu Timerów programowych.Nie do końca rozumiem dlaczego w przykładzie poniżej "l"się nie inkrementuje pewnie źle to rozumiem.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ja myślę tak że jeżeli Timer1 zliczy w dół i osiągnie zero to wtedy zmienia się stan LED4_na przeciwny no ale w tym samym momęcie powinna "l"wzrosnąć o 1 ale tak nie jest i nie mogę zrozumieć dlaczego.
Bardzo dziękuję za każdą podpowiedź.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 20:21 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

Rozumiem, że Timer1 to zmienna zadeklarowana jako volatile i dekrementowana jest w przerwaniu?

------------------------ [ Dodano po: 7 minutach ]

A czy to nie jest tak, że za pierwszym razem LED_5 zmienia się po 5 razach
przełączenia LED_4 a potem za każdym razem obie diody się przełączają? A Ty chciałeś
osiągnąć inny efekt? ;-)
Jeśli tak to w tym if'e musisz jeszcze ustawiać na wartość początkową l = 1 jak przed
wejściem w warunek.

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 20:53 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Chciałem osiągnąć coś takiego jak z delayem czyli dioda d4 miga sobie z jakąś tam częstotliwością taką jaką ustala Timer1 a po każdej zmianie stanu led4 naliczy się wartość "i" do wartości powyżej 5 i przełączy się dioda d5.Ale chyba to tak nie jest bo dioda d4 mruga ale z d5 nic się nie dzieje czyli wartość "i" się nie zmienia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:13 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

A czy dobrze masz ustawione LED5?
Sprawdź konfigurację i podłączenie

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:21 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Tak ustawienia ledów są ok,mogę to samo na delay zrobić i będzie śmigać według założeń.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:28 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

No a gdzie masz zerowanie zmiennej l ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:32 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

mirekk36 napisał(a):
No a gdzie masz zerowanie zmiennej l ?

Toż pisałem o tym też w pierwszym poście...

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:46 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Ok zapomniałem dopisać ale to też nic nie daje chodzi o to że jak l wzrośnie do np.załóżmy 20 to l się ma wyzerować.Tak zrobiłem i nic Timer sam działa jak go ustawię tak led mruga no ale z tym l nic dalej się nie dzieje,próbowałem ledy zamienić dla pewności i to samo ta za timerem pracuje a druga bez zmian.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 paź 2016, o 21:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

MirkoT napisał(a):
Toż pisałem o tym też w pierwszym poście...

Tak tak - sorki - nie zauważyłem

------------------------ [ Dodano po: kilkunastu sekundach ]

ELEKTRON105 napisał(a):
Ok zapomniałem dopisać ale to też nic nie daje chodzi o to że jak l wzrośnie do np.załóżmy 20 to l się

to pokaż cały ten prosty kod testowy programu przede wszystkim

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 13:50 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Jeżeli ten kod jest cały w pętli nieskończonej, to w każdym obiegu pętli "l" zostanie ustawione na 1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 13:53 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

HomoChemicus napisał(a):
Jeżeli ten kod jest cały w pętli nieskończonej,

No tak tylko to właśnie trzeba zgadywać - gdy ktoś zamiast zadawać pytanie podczas gdy zwraca się z prośbą o pomoc - to robi sobie KALAMBURY albo zgaduj zgadulę

też tak obstawiałem że to może być w pętli głównej ale po to właśnie chciałem zobaczyć cały kod - tymczasem autor broni się nogami i rękami ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 17:11 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Witam ponownie i przepraszam że najpierw proszę o pomoc a później znikam no nie raz po prostu siły wyższe.No ale już jestem ok.wrzucam program i z tego co widzę to właśnie mam w pętli głównej,jeżeli to jest przyczyną że moje l się nie inkrementuje to proszę o wytłumaczenie mi dlaczego tak nie będzie działać jak wspomniałem nie rozumiem za bardzo tego.

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: 22 paź 2016, o 18:01 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

No jak to nie rozumiesz ? A wiesz jak działa pętla czy nie wiesz ?

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



no przecież:

pierwszy obieg pętli:
1. powołujesz do życia zmienną o nazwie "liczba" i inicjujesz ją wartością = jeden
2. zwiększasz wartość zmiennej "liczba" o jeden, czyli już jest = dwa
3. sprawdzasz warunkiem IF() czy przypadkiem wartość zmiennej "liczba" jest większa niż 5 - ale nie jest zmienna bo w tym obiegu pętli jest równa DWA - tak?

pętla się kończy i znowu rozpoczyna się jej DRUGI OBIEG

1. powołujesz do życia zmienną o nazwie "liczba" i inicjujesz ją wartością = jeden
2. zwiększasz wartość zmiennej "liczba" o jeden, czyli już jest = dwa
3. sprawdzasz warunkiem IF() czy przypadkiem wartość zmiennej "liczba" jest większa niż 5 - ale nie jest zmienna bo w tym obiegu pętli jest równa DWA - tak?

i tak się powtarza miliardy razy na sekundę ... widzisz to NA CZERWONO ? to twój babol - zmienna "liczba" ma tzw dzień świstaka ;) jak się budzi na początku każdego obiegu pętli to znowu dzień zaczyna się dla niej od wartości JEDEN :lol:


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 18:13 
Offline
Użytkownik

Dołączył(a): 15 gru 2013
Posty: 213
Pomógł: 5

Już rozumiem no tak przecież ona nie może rodzić się i umierać przecież ona obowiązkowo musi być zmienną globalną ,musi żyć ciągle wtedy w każdej pętli wzrośnie to co wzrosło w poprzedniej pętli.Takie proste a ja się zapętliłem :lol: .
Dziękuję serdecznie i do następnego razu :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 paź 2016, o 22:26 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Nie musi być globalna. Można też tak:
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: 22 paź 2016, o 22:44 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

HomoChemicus napisał(a):
Nie musi być globalna.

Tu racja ...

HomoChemicus napisał(a):
Można też tak:

Ale tak to już bym nie robił, to już lekka masakra bym nawet powiedział. Owszem zmienna ze specyfikatorem static gdzieś na początku funkcji ... ale w ten sposób porozrzucane definicje zmiennych po każdym zakamarku kodu to już lekka zgroza niestety ... Owszem będzie to działać - ale tak się nie robi

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

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