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



Teraz jest 29 lis 2024, o 05:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 4 lis 2013, o 21:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Generalnie chodzi o to że mam eliminację drgań styków itp :

natomiast mam mały problem gdy wcisnę przycisk ... pokazuje mi to co chcę ale nie działa podtrzymanie klawisza ... chciałem to zrobić pętlą for ale nie za bardzo mi to wychodzi może ktoś powiedzieć dlaczego ?

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


Męczę się z tym 2h i nie mogę nic wykombinować :/

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2013, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

A nie brakuje ci na końcu klamry zamykającej '}'

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2013, o 22:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

W którym miejscu bo nie wydaje mnie się :) kompilacja przechodzi bez błędów ... klamry nie brakuje ... ale nie zlicza od 0 do 10 :/ timer co 1 sek :/

------------------------ [ Dodano po: 5 minutach ]

najlepsze jest to że pokazuje to co ma ale pętla for powinna to podtrzymać o 10 cykli timera czyli 10 sek .. a tu klapa :/

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2013, o 23:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

majster napisał(a):
... ale nie zlicza od 0 do 10 :/ timer co 1 sek :/


A dlaczego twierdzisz, że nie zlicza? Wyświetl sobie zmienną flaga_podtrzymania zaraz po wykonaniu pętli, to zobaczysz jaką ma wartość.

Piszesz, że timer cyka co 1sek, ale to jego cykanie ni w ząb nie jest zaimplementowane w pętlę która miałaby wykonać się w czasie 10sek (bo tak właśnie zrozumiałem zamysł zasady działania). Pokazałeś tylko mały wycinek programu, gdzie w żaden sposób nie wiadomo jak pracuje timer, i jak jest powiązany z całością.

Tak dla testu spróbuj dołożyć zwykłego delaya:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Uzyskasz podtrzymanie na 10 sek, ale również będziesz miał "zwieszony" program na 10sek ;) odsyłam do niebieskiej książki -> przykład z pseudo RTSem

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2013, o 23:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

odsyłanie do niebieskiej ksiązki mija się z celem.
Na razie nie pokażę całego kodu bo to łącznie już ok 1500 linii kodu.

zakładając że zlicza to liczy do 10 w 1 setną sekundy,
jak ma liczyć do 10000 to na to samo wychodzi.

Więc i tak ni jak się to ma do timera. ale ni jak się to ma do zliczania. bo kiedy przycisk puszczony ma robić coś innego i kombinuję tutaj z flagami ale też nic nie wychodzi :/

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

kombinuję z czymś takim, ma to działać jak pętla for .. no i działa ... nie zlicza :) albo zlicza zajefajnie szybko:

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




Jeżeli wyhashuje else to wciśnięcie klawisza wyświetla wartości na stałe:

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 ]

savian86 napisał(a):

Tak dla testu spróbuj dołożyć zwykłego delaya:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Uzyskasz podtrzymanie na 10 sek, ale również będziesz miał "zwieszony" program na 10sek ;) odsyłam do niebieskiej książki -> przykład z pseudo RTSem



problem w tym że ja w kodzie nie mam _delay i nie chcę go mieć tak na łatwiznę też mogę iść ale po co ?

------------------------ [ Dodano po: 12 minutach ]

chcesz zobaczyć ustawienia timera proszę bardzo ale zegarek i pozostałe funkcję działają mi świetnie

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: 15 minutach ]

a i 367 podaje mi flaga_podtrzymania tak pokazuje LCD ... dlaczego skoro zadeklarowałem ją jako 0 ?

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2013, o 23:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Nie chodzi tu o pokazywanie całego kodu, istotne jest jak masz zrobione "kolejkowanie" wykonywanych zadań w czasie. Właśnie w książce jest to elegancko pokazane, sama idea organizacji programu.

Dobra, ale załóżmy że masz zrobione tyknięcie co 1sek. ale i tak wchodząc do pętli for wykona się ona prawie natychmiastowo i ślad po niej nie zostanie. Powinieneś pod przyciskiem ustawić flagę, a wyświetlanie zrobić w miejscu które wykonywane jest co 1sek. Coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2013, o 23:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

widzisz opierasz to na sporej ilosci if a mozna to zawrzec we petli for
twoje rozwiazanie moze i dzialac ale mnie interesuje wykozystanie petli

for

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 00:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

A czym popędzasz procka? Bo chyba nie sygnałem 1Hz? Niestety wykluczeń nie da się zrealizować na pętli, a program w dużej mierze opiera się właśnie o warunki. Ifa można zawsze zamienić na switcha :)

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 07:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Ale mozna to zrobic w petli for. I to chce osiagnac. I nawet mam pomysl jak to zrobic. Wroce z pracy i zobacze mozr zadziala.

W timerze zrobic podtrzymanie++;

W petli for zrobic.

For(podtrymanie=0; podtrzymanie < 10 ; >{
Warunek;
}

I wtedy zobacze czy smiga jak zakladam.

Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 08:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Jeśli w pętli for nie zrobisz inkrementacji zmiennej, to jedyna droga wykonania sie tej pętli to ustawienie zmiennej podtrzymanie jako volatile i zwiększanie jej bezpośrednio w przerwaniu od timera. No bo niby jak zostanie osiągnięty warunek wyjścia z pętli ?

Ale przy takim rozwiązaniu wracamy do pierwszego mojego postu i równie dobrze można zastosować _delay_ms bo program w tym czasie nie będzie wykonywać nic innego, chyba że w przerwaniu.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 09:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Delay nie moge uzyc jak juz pisalem wyzej bo rownoczesnie wyswietlany jest czas i delay z automatu opozni mi moj zegarek o 10 sekund. savian86 mieszasz mieszasz nic nowego nie wnosisz. Czytales mojego podprzedniego posta ?

A warunek wyjscia z petli zostanie osiagniety bo inkrementacja zwielszac bedzie sie w przerwaniu.

Jak nie chcesz podac wedki do petli for to nie mieszaj bardzo cie prosze.

Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 10:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

majster napisał(a):
A warunek wyjscia z petli zostanie osiagniety bo inkrementacja zwielszac bedzie sie w przerwaniu.

Mogę się mylić, bo nie znam całego kodu, ale jak wejdziesz w for (pętla główna programu?) to nie opuścisz jej do spełnienia warunku i żadna inna funkcja z pętli głównej nie będzie w tym czasie obsłużona. To, że przerwanie przyjdzie to pętle for "zawiesi" na czas obsługi przerwania, a potem wróci ponownie do for i dopiero, gdy przy którymś tam z kolei przerwaniu (po 10s) ustawi się warunek opuszczenia pętli for, zostaną obsłużone pozostałe funkcje pętli głównej. De facto zatem przez 10s wisisz w pętli for.
Jak więc widać savian86 nie miesza.

Chyba, że cały pozostały program chodzi w obsłudze przerwania.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 11:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Zegar chodzi w obsludze przerwania wiec bedzie czas liczyl dalej. Natomiast te podtrzymanie potrzebne mi jest by zamiast temperatur pokazalo mi pamiec temperatury.

Jezeli trzymam przecisk to wyswietla pamiec i chodzi zegar wiec defacto by nie trzymac przycisku wystarczy fetla for w jego obsludze by podtrzymac wyswietlenie pieci np o 3 sekundy.

Savian86 proponuje mi wstawienie delay co mi w tomencie zawiesi procka i zegar nie bedzie liczyl. Dlatego nie chce delay. Chce petle for obsluzyc bez delay wiec zegar dalej bedzie cykal.

Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 13:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Wydaje mi się, ze założenie działania całego programu jest nie do końca poprawne. Czy nie lepszym rozwiązaniem byłoby robienie wszystkiego w głównej pętli, a w przerwaniach ustawianie jedynie flag, zlecanie aktualizacji danych czy zmianę wyświetlanych danych?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 13:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

w peli glownej mam tylko sprawszanie przyciskow i wyswietlanie zegarka i temp. Samo wyswietlanie. Panowie pisze ze program dziala jak zakladalem. Zostalo mi podtrzymanie przyciskow ale spokojnie mam juz koncepcje. Wroce to potestuje.

Robienie wszystkiego w petli glownej? Ze jak definiowanie wejsc wyjsc timerow tez? To to by nie dzialalo

Wysłane z Tapatalk2

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 14:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

Zamiast for użyj while(czas<10). I może wykorzystaj twój zegar - chyba zlicza sekundy?

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 14:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Tak sekundy zlicza myslalem o tym wczoraj ale guzik by dzialal gdyby byl wcosniety miedzy 00 a 10 sekunda czy sie myle ?

Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 14:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Juz juz nie daleko 1h30m drogi i w domku to potestuje moje zamysly.

Wysłane z Tapatalk2 [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 16:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

No i jestem w domku pierwsze co zrobiłem swoją pierwszą myśl i działa nie blokuje zegarka.
Blokuje pozostałe przyciski ale to mi nie przeszkadza bo podtrzymanie jest 3 sekundowe.


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 timerze:

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: 21 minutach ]

No i zrobiłem tak że przyciski się nie blokują .... wczoraj widać już było za późno

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 18:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 sie 2013
Posty: 230
Lokalizacja: Zabrze
Pomógł: 17

Te przypisania przed for:

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


są chyba niepotrzebne, skoro w for inicjalizujesz.

_________________
40-32:2=4!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 19:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Cytuj:
No i jestem w domku pierwsze co zrobiłem swoją pierwszą myśl i działa nie blokuje zegarka.
Blokuje pozostałe przyciski ale to mi nie przeszkadza bo podtrzymanie jest 3 sekundowe.


Czyli osiągnąłeś dokładnie ten sam rezultat co w przypadku zastosowania _delay_ms w pętli for, zegarek dalej chodzi bo jest wykonywany w przerwaniu, a pozostała część programu jest ZAWIESZONA.

Cytuj:
Savian86 proponuje mi wstawienie delay co mi w tomencie zawiesi procka i zegar nie bedzie liczyl. Dlatego nie chce delay. Chce petle for obsluzyc bez delay wiec zegar dalej bedzie cykal.


Proponowałem Tobie abyś zaskoczył jaki efekt osiągniesz upierając się na tego fora. Natomiast nie proponowałem jako rozwiązania docelowego. Bardzo dobrze, że nie chcesz używać delayów, ale inne mechanizmy również trzeba wykorzystywać prawidłowo

Cytuj:
Robienie wszystkiego w petli glownej? Ze jak definiowanie wejsc wyjsc timerow tez? To to by nie dzialalo


I właśnie dlatego odesłałem Ciebie do niebieskiej książki, gdybyś wykonał tamten przykład, to nie napisałbyś takiego stwierdzenia. A uproszczonym szablonem na to jest mój drugi post.

Cytuj:
savian86 mieszasz mieszasz nic nowego nie wnosisz. Czytales mojego podprzedniego posta ?

A warunek wyjscia z petli zostanie osiagniety bo inkrementacja zwielszac bedzie sie w przerwaniu.

Jak nie chcesz podac wedki do petli for to nie mieszaj bardzo cie prosze.


Jeśli nie potrafiłeś wyciągnąć wniosków z powyższych, to sorry faktycznie nie będę Ci już mieszał. Pisząc program nie jest ważne tylko wykonanie tego czego się chce, ale też panowanie nad nim i wiedza co się w nim dzieje. Twój program nie jest skomplikowany, jeśli go mocniej rozbudujesz to pogubisz się w nim.

Nie obraź się ale wykonanie tego zadania w tym temacie przypomina mi trochę naprawę auta u "mechanika": na początek wymienimy to... nie pomogło? to teraz wymienimy to... znowu nie pomogło? no to wymieniamy tamto... o teraz już działa, dziękuję zapraszam ponownie.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2013, o 07:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Nie zgodze sie z toba ale kazdy ma swoje zdanie. Mimo petli for aktualnie program nie blokuje innych procesow.

Wysłane z teflonu [url='http://tapatalk.com/m?id=10']now Free[/url]

_________________
Usługi druku przestrzennego - www.drumik.pl



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

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