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



Teraz jest 23 lut 2025, o 11:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 12 paź 2013, o 19:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 78
Lokalizacja: Grójec
Pomógł: 2

Witam szanownych forumowiczów :)
Niestety nie mogę zaczaić o co chodzi z inkrementacją i dekrementacją po lewej lup prawej stronie. Np mam taki timerek programowy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

co będzie się działo ze zmienną sekundy jeśli inkrementacja wystąpi za zmienną ms_cnt?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 paź 2013, o 19:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lip 2013
Posty: 106
Pomógł: 0

W przykładzie ++ms_cnt najpierw zostanie dodane 1 a dopiero potem zmienna ms_cnt zostanie postawiona do wyrażenia.

Jeśli wyrażenie wyglądałoby tak ms_cnt++ to najpierw zmienna ms_cnt zostanie postawiona do wyrażenia a dopiero potem zostanie do niej dodana 1.


Tapnięte ze smartfona :) [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 paź 2013, o 19:50 
Offline
Moderator
Avatar użytkownika

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

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


panie kochany tu NAJPIERW zmienna ms_cnt zwiększy się o JEDEN i dopiero wtedy nastąpi sprawdzenie czy jest > 199

a tutaj:

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


NAJPIERW zmienna ms_cnt zostanie sprawdzona czy jest większa 199 i dopiero POTEM zostanie zwiększona o JEDEN ;)

teraz jaśniej ?

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

O i ktoś już zdążył przede mną ;)

_________________
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: 12 paź 2013, o 19:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lip 2013
Posty: 106
Pomógł: 0

O proszę jak ładnie guru nasz wytłumaczył ;)

Jeszce tak przy okazji...
zmienna++ nazywamy postinkrementacją
A
++zmienna nazywamy preinkrementacją

Tapnięte ze smartfona :) [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 paź 2013, o 20:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lip 2012
Posty: 78
Lokalizacja: Grójec
Pomógł: 2

Kurczę, rozumiem to co mi wytłumaczyliście tylko według moich przemyśleń zmienna sekundy nie zwiększa się równo co sekundę tylko co 995ms, ale pewnie coś pomieszałem :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 paź 2013, o 21:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 lip 2013
Posty: 106
Pomógł: 0

To może od początku... Nie wiem co jaki czas wywoływane jest przerwane ( taktowanie mikroklocka, prescaler) ale zakładając że z częstotliwością 100Hz'ów, przy taktowaniu 1Mhz...

1 000 000 Hz / 100 Hz daje nam wywołanie przerwania 10 000 razy na sekundę. W każdym przerwaniu ustawiasz flagę ms5_flag i zerujesz ms5_cnt. Te dwie zmienne nie są w warunkach więc wykonują się w każdym przerwaniu.
Warunek ze zmienną ms_cnt wykonuje się 5 razy, czyli (10000 / 5 = 5000) 5000 razy na 1Mhz czyli 5000 razy na sekundę...
W tym warunku ustawiasz s1_flag i postinkrementujesz zmienną sekundy. Następny warunek to zabezpieczenie przed przepełnieniem licznika sekund.
Zmienna sekundy dodaje się co (60 sek / 5000 razy. inkrementacji = 0.012s ) hmm coś nie tak...
Sporo się napisałem, więc podepnę się pod temat i czekam na sprostowanie mojego toku myślenia ;D

Tapnięte ze smartfona :) [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
sig off ;(



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

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

komor34 napisał(a):
Kurczę, rozumiem to co mi wytłumaczyliście tylko według moich przemyśleń zmienna sekundy nie zwiększa się równo co sekundę tylko co 995ms,


Ale co ma wspólnego (na ZEUSA) jedno z drugim :( ?

może jakoś jaśniej precyzuj pytania hmmm ? ;)

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO