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



Teraz jest 13 lut 2025, o 20:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 28 ] 
Autor Wiadomość
PostNapisane: 8 lut 2017, o 12:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Witam
Pewnie zaraz mi się dostanie za pytanie ale męczy mnie jedna rzecz.
Przeglądając forum natknąłem się na funkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i patrząc na jej ciało nie widzę różnicy w stosunku do zwykłego
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Pętla "while" będzie się wykonywać dopóki wartość "ms" nie osiągnie "0" więc też jest funkcją blokującą program.
Zresztą idąc dalej zrobiłem małe doświadczenie.
Oto programik
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Wywołanie funkcji "LED" powoduje zatrzymanie działania zarówno pętli "while(1)" jak i przerwania niezależnie od tego czy użyję funkcji "my_delay" czy zwykłego "_delay_ms" - diody LED1 i LED2 przestają migać - w tym wypadku przez sekundę wstrzymana jest pętla główna. Przerwanie również się nie wykonuje bo widzę na wyświetlaczu zmienne "m" i "n".
Jaki jest sens w takim razie stosowania takiej funkcji jak "my_delay"?

Zaznaczam, że w swoich programach korzystam z Timerów programowych więc nie mam tego kłopotu ale nie daje mi to spokoju.

pozdrawiam

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 12:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1167
Lokalizacja: Kraków
Pomógł: 93

A to nie jest tak, że funkcja my_delay() blokuje za każdym razem na 1 ms? I pomiędzy tymi "blokadami" może wykonać się przerwanie?
Zaznaczam, że nie sprawdzałem dokładnie całego kodu, to tylko taka sugestia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 12:56 
Offline
Moderator
Avatar użytkownika

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

mczarny napisał(a):
Pewnie zaraz mi się dostanie za pytanie

No pewnie - proszę zrobić 10 pompek i zameldować o ich wykonaniu ;) to standardowa kara na forum

A kto ci powiedział że taka funkcja ma ZASTĄPIĆ _delay_ms() ? albo jeszcze gorzej - kto ci powiedział że ona ma być , że co? ... że niby nieblokująca ? ;)

eeeeeh i tak czuję, że ty sam sobie dopowiedziałeś to wszystko ;)

Funkcja taka jest blokująca ALE ...

1. Po pierwsze trzeba było obejrzeć chociaż JEDEN mój poradnik jak był konkurs o ROBALU - dlaczego nie starasz uczyć się z takich praktycznych kodów - w tym również z kodów od użytkowników

2. Po drugie funkcja taka różni się DRASTYCZNIE od zwykłego _delay_ms() bo nie zajrzałeś nawet do opisu _delay_ms() w którym to możesz podać argument o wielkości powiedzmy MAX 1500 ms - a co jeśli zechcesz dać np 10 sekund czyli argument 10000 ??? sam sprawdź czy _delay_ms( 10000 ) ci zadziała w ogóle ? ;) wtedy sam się przekonasz

3. Po trzecie - taka funkcja umożliwa zrobienie PODSTAWY czasu dla bardzo pseudo timerów programowych - ale tu już nie będę się rozpisywał - weź że zajrzyj na bloga mojego i pobierz sobie plik ZIP z kodami źródłowymi prac na konkurs - toż to KOPALNIA wiedzy i zrozumiesz wiele wiele rzeczy

NA KONIEC: żebyś za chwilę nie mówił , że jak to ? no przecież timery programowe są lepsze! .... a pewnie, że są lepsze - ale czasem gdy nie mamy możliwości użyć timera programowego np w ATtiny w którym jest tylko jedne timer sprzętowy i używamy go do innych celów - to co ? Nie poradzisz sobie ze zorganizowaniem timera programowego ? ;) poradzisz poradzisz dzięki właśnie takiej technice - ale znowu - zajrzyj pan do poradnika robala i do kodów kolegów

_________________
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: 8 lut 2017, o 13:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Dobra - pompki wykonane i to z nadmiarem :)
To nie chodzi o to, ze nie oglądam poradników i z nich nie korzystam - robię to jak najbardziej.
Po prostu znalazłem temat gdzie "ktoś" polecał tą funkcję zamiast zwykłego _delay_ms i zacząłem się zastanawiać :?:
Stąd moje doświadczenie i pytanie.
W programach praktycznie nie używam _delay_ms - no chyba, że w miejscu w którym wiem, że mogę bo to nie wpłynie na pracę programu np:
zanik napięcia sieci - procek dokonuje wtedy zapisu do Eeprom-u i żeby nie zrobił tego kilka razy dostaje na końcu funkcji zwykłego delaya.

Gdzieś czytałem, że na forum mogę zadać każde nawet najgłupsze pytanie a tu masz - każą pompki robić ehhh.... :lol:

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 13:41 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

Jeszcze (chyba :P ) jak chcesz przekazać zmienną jako argument funkcji _delay_ms(zmienna) to wtedy nagle program zaczyna zjadać dużooooo pamięci. A tym z my_delay jest lepiej. Zresztą co będę pisał spróbuj sobie i zobacz które mniej zajmuje pamięci ;) .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 13:44 
Offline
Moderator
Avatar użytkownika

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

mczarny napisał(a):
każą pompki robić ehhh....

Wiesz sam pisałeś o karze - więc aż się prosiło żeby ją zlecić :lol: .... a co ? ja też musiałem już kilka razy pompki robić :lol: za karę na forum

------------------------ [ Dodano po: 1 minucie ]

Bartek123 napisał(a):
Jeszcze (chyba :P ) jak chcesz przekazać zmienną jako argument funkcji _delay_ms(zmienna) to wtedy nagle program zaczyna zjadać dużooooo pamięci. A tym z my_delay jest lepiej. Zresztą co będę pisał spróbuj sobie i zobacz które mniej zajmuje pamięci ;) .


No tak to BODAJŻE najważniejsze w tej zamianie ;) do funkcji _delay_ms() NIE MOŻNA przekazywać czasu w postaci zmiennej lecz TYLKO I WYŁĄCZNIE w postaci STAŁEJ DOSŁOWNEJ bo program spuchnie o 2kb z uwagi na dodanie funkcji obsługi liczb float. A taka zamiana daje nam swobodną możliwość żeby nie było dociągania tej biblioteki - więc SAME zalety tej funkcji ;)

_________________
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: 8 lut 2017, o 13:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1167
Lokalizacja: Kraków
Pomógł: 93

mirekk36 napisał(a):
ja też musiałem już kilka razy pompki robić :lol: za karę na forum
Te, o których pisałeś dziś wcześniej? O czym nie miał się SunRiver dowiedzieć? (Tu mogę napisać, Sun do działów dla początkujących nie zagląda ;))



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 13:57 
Offline
Moderator
Avatar użytkownika

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

Marhef napisał(a):
mirekk36 napisał(a):
ja też musiałem już kilka razy pompki robić :lol: za karę na forum
Te, o których pisałeś dziś wcześniej? O czym nie miał się SunRiver dowiedzieć? (Tu mogę napisać, Sun do działów dla początkujących nie zagląda ;))


pssssst ;) cichosza ... tamtego miał nikt nie widzieć :lol:

_________________
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: 8 lut 2017, o 14:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

mirekk36 napisał(a):
ja też musiałem już kilka razy pompki robić :lol: za karę na forum


Ja myślę, że niektórym to i brzuszki by się przydały :lol:

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 15:04 
Offline
Moderator
Avatar użytkownika

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

No ale właśnie pompki są na brzuszki :lol:

_________________
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: 8 lut 2017, o 15:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 26 sty 2016
Posty: 1167
Lokalizacja: Kraków
Pomógł: 93

Mirku, możesz mnie uznać za gramar nazi, ale nie na brzuszki, tylko na brzuszek :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 16:04 
Offline
Moderator
Avatar użytkownika

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

Marhef napisał(a):
Mirku, możesz mnie uznać za gramar nazi, ale nie na brzuszki, tylko na brzuszek :P


hahaha tu nie chodzi o gramatykę, bo skąd wiesz, kto ma ile brzuszków? ;) ja mam dwa :lol:

_________________
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: 8 lut 2017, o 18:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Panowie
Wracając do tematu
W pętli głównej zachodzą sobie trzy niezależne migania diodą i jest ok.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ale jeżeli chcę zrealizować opóźnienie w funkcji to jest problem. Program po naciśnięciu przycisku START wchodzi w funkcję
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

LED3 jest zapalany ale niestety nie jest gaszony a chodzi o to żeby został zgaszony po np.1s
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak to zrealizować nie blokując pętli głównej?
Aha 20 pompek zrobione zaliczkowo.....

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 19:33 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

Zobacz ja to sobie tak zrozumiałem ->. Aby program był nieblokujący ma być tak zrobiona pętla aby możliwie najwięcej obiegów mogła zrobić ;) . To teraz tak jak wstawisz delay czy mydelay czy nie wiadomo co co opóźnia jeden obieg pętli wtedy się zacznie wydłużać i jak pętla ma się nie blokować skoro jeden obieg jej zajmie np 1s :o woolno co nie?. To teraz możesz zrobić zmienna dajmy na to Timer. Teraz zrobić trzeba podstawe czasu czyli jak dużo razy musi się obracać pętla aby była w miare nie zauważone blokowanie? Dajmy na to że musi 1000 razy obiegnąć na sekundę czyli jeden obieg 1ms czyli w pętlę dajemy delay'a 1ms i co obieg zwiększamy zmienną Timer o 1 wtedy ta zmienna będzie wskazywać ile ms minęło. I na koniec starczy dać jeszcze warunek w pętli że jak Timer osiągnie np 100 (czyli 100ms minęło) to wyzeruj Timer i zrób jakąś akcję np mrugnij ledem czy coś ;) . A teraz kod dla zobrazowania
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co prawda dalej się troszeczkę będzie blokować ale dla takich prostych akcji jak obsługa 2 klawiszy kilku ledów to co to jest, a jak nie ma wyjścia to Trzeba jakoś sobie radzić. Kwestia wyobraźni ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 19:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Bartek123

Zupełnie nie zrozumiałeś o co chodzi

To jak to zrobić w pętli to ja wiem co zresztą pokazałem w kodzie post wyżej bez użycia nawet "delay_ms(1)"
Chodzi o to że po wciśnięciu przycisku program skacze do funkcji w której ma zapalić diodę a po powiedzmy 2s ją zgasić i koniec - koniec funkcji która może być wywołana przez naciśnięcie przycisku w dowolnym czasie a pętla główna ma latać sobie cały czas swobodnie.

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 20:28 
Offline
Użytkownik

Dołączył(a): 26 lip 2015
Posty: 269
Pomógł: 34

Jak pisałem kwestia wyobraźni już Ci pokazuje ;) .

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: 8 lut 2017, o 20:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Może jakoś 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: 8 lut 2017, o 20:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Bartek123
nadal operujesz w pętli głównej a opóźnienie ma zadziałać wewnątrz funkcji wywołanej naciśnięciem klawisz lub czymkolwiek innym
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w tym czasie pętla główna działać ma niezależnie

Kol.anshar przedstawił ciekawą koncepcję wykorzystania w funkcji dodatkowej zmiennej.
Wnioskuję, że kod jest przetestowany :)

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 21:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

mczarny napisał(a):
Wnioskuję, że kod jest przetestowany

A przetestowany? ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 22:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

anshar napisał(a):
mczarny napisał(a):
Wnioskuję, że kod jest przetestowany

A przetestowany? ;)


Właśnie przetestowany i działa z jednym małym ale - mianowicie musiałem dokonać małej zmiany
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zamiana pozycjami LED2_ON i LED2_OFF inaczej dioda jest zapalona a gaśnie po wejściu w funkcję (miała być zgaszona i zapalać się po wywołaniu funkcji)
druga sprawa to w tym fragmencie
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

musiałem "zatyldować" PIN_KEY inaczej reakcja była nie na naciśnięcie a na puszczenie klawisza - być może mam inaczej podłączony

Jak widać sprawa zastąpienia "głupiego" delay nie jest taka prosta jeżeli coś ma się wykonać tylko raz a nie w pętli.
Rozwiązanie ląduje w moich tajnych notatkach i będę szukał dalej innych sposobów.
Kol.anshar dostaje pigułkę ;)
pozdrawiam

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 22:42 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
Jak widać sprawa zastąpienia "głupiego" delay nie jest taka prosta jeżeli coś ma się wykonać tylko raz a nie w pętli.

Jest prosta a nawet bardzo prosta - tylko teraz to musisz się w końcu nauczyć jak korzystać z tzw "maszyny stanów" za pomocą jakichś prostych zmiennych

_________________
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: 8 lut 2017, o 22:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

mirekk36 napisał(a):
Jest prosta a nawet bardzo prosta - tylko teraz to musisz się w końcu nauczyć jak korzystać z tzw "maszyny stanów" za pomocą jakichś prostych zmiennych


Maszyna stanów no była mowa w którymś z poradników - muszę poszukać w notatkach...

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2017, o 22:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Wszystko zależy od tego jak masz podłączone te diody.
Jeżeli jeszcze tego nie widziałeś to poczytaj tutaj:
http://mirekk36.blogspot.co.uk/2012/01/avr-porty-wewy-dir-podstawy.html
Testuję na zestawie ATB, diody są podłączone katodami do pinów procka, a anodami do Vcc. Musisz mieć odwrotnie, dlatego wystarczy zamienić te makra:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

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

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

Co do przycisku to podłącz go z jednej strony do masy, a z drugiej do pinu procka i ta funkcja powinna działać normalnie na wciśnięcie.
Nie wiem jakiego procka używasz, sprawdź czy przypadkiem nie masz włączonego JTAG'a.

Co do mojego rozwiązania to jest to jedno z wielu, wcale nie musi być najlepsze. Można to zrealizować na wiele sposobów. Kiedyś wpadłem na taki pomysł i się z tobą nim podzieliłem. ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2017, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

anshar
Z diodami miałeś rację bo ja mam anodą do procka.
Zrobiłem tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


dioda zapala się po wejściu w funkcję i po osiągnięciu przez Timer1 wartości 200 dioda gaśnie.
Dodatkowo zmienną pomocniczą "key" ustawiam na "1" żeby pierwszy if zadziałał tylko raz.
Po puszczeniu przycisku START zmienna "key" jest zerowana.
Maszyna stanów w postaci prostego szpadla ;)

_________________
Pomóżcie mi stanąć na nogi



Ostatnio edytowano 10 lut 2017, o 19:50 przez mczarny, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2017, o 19:48 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
dioda zapala się po wejściu w funkcję i po osiągnięciu przez Timer1 wartości 200 dioda gaśnie.

a teraz sobie pomyśl co można tu zdziałać dodatkowo za pomocą Miodulo ;)

_________________
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: 10 lut 2017, o 19:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Z "miodulo" też była wersja i też działała ale uznałem, że Timer to tak bardziej poważnie brzmi ;) a dodatkowo muszę jeszcze te procenty przetrawić praktycznie w większym zakresie bo możliwości są jak widzę duże.
Dzięki wszystkim za rady a ostatni kod wstawiłem bo może się komuś przyda?

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2017, o 19:59 
Offline
Moderator
Avatar użytkownika

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

mczarny napisał(a):
Z "miodulo" też była wersja i też działała ale uznałem, że Timer to tak bardziej poważnie brzmi


ale ja mówię o czymś innym panie ... Miodulo w połączeniu z Timerem programowym - to może być mieszanka wybuchowa ;)

------------------------ [ Dodano po: 1 minucie ]

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


zanim oczywiście Timer1 dojdzie do zera ;) - pomyśl (tak tylko rzucam hasło)

_________________
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: 14 mar 2017, o 23:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

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

wtedy - procesor jest zajmowany(blokowany) przez 1ms na obieg funkcji głównej.
Jeśli się mylę, to już robię pompki :lol:
Ja w ROBALU z "miodulo" używam takiego kodu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Sprawdzam, czy Timer1 True i ms wewnątrz funkcji mDelay() jest False.



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

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