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



Teraz jest 28 mar 2024, o 20:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 19 kwi 2018, o 15:22 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Witam.Mam pytanko jak zastosować Timer w pętli for zamiast delay_ms().Czy w ogóle można.Z góry dziękuje.Pozdrawiam.

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

Wiem że można zrobić to 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: 19 kwi 2018, o 19:52 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Jest tam kto?

------------------------ [ Dodano po: 27 minutach ]

Nie wiem czy zadałem głupie pytanie czy trudne ??????



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 kwi 2018, o 21:44 
Offline
Użytkownik
Avatar użytkownika

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

Właściwie to co za różnica czy będziesz blokował pętlę delayem czy timerem... Timery stosuje się aby był maksymalnie szybki przelot przez pętlę główną z wykluczeniem fragmentu, zależnego czasowo. W twoim wypadku jak zrozumiałem to dalej blokująca opcja i łatwiej by ją było zrealizować wpisując wartość do timera, np. Timer=100; , a następnie czekać aż odliczy go przerwanie za pomocą while(Timer); .
Co chcesz konkretnie osiągnąć?

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2018, o 00:36 
Offline
Moderator
Avatar użytkownika

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

wrctomi napisał(a):
Wiem że można zrobić to tak:

no to skoro wiesz ? ... to po co pytanie ? ja nie za bardzo rozumiem takiego podejścia - więc jeśli rozjaśnisz to może coś uda się pomóc - bo na razie to nie wiadomo w czym

_________________
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: 20 kwi 2018, o 09:50 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Bo mam zakodowane z poradników Mirku " pozbyć się obrzydliwych delay-ów " .Czyli można stosować delay_ms w pętli for? I Dlatego kombinuje jak koń pod górę.A dlaczego nie zeruje się przy 255 w tym przykładzie? I czy mógłby ktoś napisać kod za pomocą pętli for bez delay_ms żeby wyszedł efekt z portu 1, 3, 7, 15, 31, 63, 127, 255.Nie stosując tablicy.

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: 20 kwi 2018, o 10:17 
Offline
Moderator
Avatar użytkownika

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

a jak ma ci się zerować skoro twoje licz to pewnie typ uint8_t a ty sprawdzasz czy jest większe niż 255. A jaki jest zakres dla uint8_t ? hmm?

_________________
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: 20 kwi 2018, o 10:40 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Przy uint8_t licz; zapalają się diody wszystkie lecz nie zeruje się. Natomiast jak dam uint16_t to dochodzi tylko do przed ostatniej diody ale z kolei się zeruje? A jak dam bez licz *= 2; to inaczej zapala. Dodaje bit po bicie wiadomo ale też prawidłowo zeruje.Jak rozwiązać ten licz*=2 ?Bo chcę efekt jak podałem wcześniej.

------------------------ [ Dodano po: 52 minutyach ]

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

itd. Ale znowu ta if-o logia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2018, o 12:03 
Offline
Użytkownik

Dołączył(a): 23 sty 2014
Posty: 1079
Pomógł: 73

Może 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: 20 kwi 2018, o 12:47 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Później zobacze bo nie jestem przy kompie.Dam znać.narazie dzięki



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 kwi 2018, o 21:58 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Działa ale jak dodałem tmp++ ale nie tak jak chcę.Ma działać 1,3,7,itd do 255. A to działa 2,3,4 i jeszcze bez pierwszego bita bo w kodzie tmp++ i jeszcze przesunięcie bitowe to już od drugiego zaczyna tak 2,3,4,5.Wyrzuciłem ~ i zmieniłem na tmp=0;.Bo mam inaczej podłączone diody(anodami).Ale to szczegół.Zatem jak to zrobić?

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


------------------------ [ Dodano po: 9 minutach ]

Jeszcze to zmieniłem i działa od pierwszego bitu.
PORTB = (tmp << 0);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2018, o 09:44 
Offline
Użytkownik

Dołączył(a): 06 wrz 2017
Posty: 93
Pomógł: 0

Ale jak wspomniałem że ma działać 1,3,7,15 itd na końcu 255. ?? Mógłby ktoś podpowiedzieć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2018, o 02:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2014
Posty: 162
Pomógł: 6

wrctomi napisał(a):
Ale jak wspomniałem że ma działać 1,3,7,15 itd na końcu 255. ?? Mógłby ktoś podpowiedzieć?


Proszę bardzo, teraz tylko zamiast delaya użyj timerka :D
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



_________________
1+1=10



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

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO