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



Teraz jest 1 gru 2024, o 19:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 81 ]  Przejdź na stronę 1, 2, 3  Następna strona
Autor Wiadomość
PostNapisane: 17 sie 2013, o 10:55 
Offline
Użytkownik
Avatar użytkownika

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

Na początku się przywitam gdyż jest to mój 1 post na forum atnel.
Trzy dni temu zacząłem zabawę z mikrokontrolerami :)
Przeczytałem książkę p. Mirosław Kardaś MIKROKONTROLERY AVR JĘZYK C - PODSTAWY PROGRAMOWANIA

posiadam również zestaw startowy z płytą AVT-35-05/2 lecz nie mogę znaleźć na płycie żadnych przykładów do niego ... ale nie o tym ten post.
więc wracamy do tematu.

W książce pierwszymi zadaniami jakie możemy wykonać jest sterowanie diodą led... później obsługa przycisku, wszystko ładnie się zachowuje natomiast
postanowiłem iż pójdę od razu przy tym zagadnieniu na głębszą wodę.

Mianowicie dołożyłem 6 przycisków i 6 ledów.

Zasada działania miała być taka.

SW1 -> SW5 - Program 1 do 5
SW6 -> kończenie programu

miała następować płynna zmiana programów czyli jak wykonuje się program 1 i wcisne SW4 to przejdzie odrazu do programu 4
u mnie niestety działa to w ten sposób że jak dam długi program z pętlą for (20) razy wykonanie tego samego i powrót do while ...
to jak trzymam SW2 do SW6 to muszę czekać aż program się zakończy.

Przy krótkich programach SW2 do SW5 takie opóźnienie nie jest widoczne gdyż programy są krótkie.

Czy może mi ktoś wytłumaczyć jak zrobić że po wciśnięciu obojętnie jakiego programu z automatu przechodzi do niego,
bądź pamięta że przycisk z innym programem był wciśnięty i po zakończeniu aktualnego programu przejdzie do tego co zapodałem wciskając switch ?

Poniżej zamieszczam kod źródłowy i prosiłbym o poprawienie ewentualne wytłumaczenie co robie nie tak a co powinienem robic ?

podłączenie
PC5 - PC0 = diody led
PD0 - PD5 = microswitch

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


[ używamy [ syntax = c ] - to tak na przyszłość ok ? - mirekk36 ]

[ok :) - majster ]

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



Ostatnio edytowano 21 sie 2013, o 18:27 przez majster, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 11:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

To zagadnienie dotyczy pisania funkcji nieblokujących.
Raczej nie da się tego ujechać w inny sposób jak tylko stosować timery programowe napędzane przez timer sprzętowy w obsłudze przerwania, Np przerwanie na Compare_match dla jakiejś ustalonej wartości. Każdy nieblokujący proces może być napędzany oddzielnym timerem programowym i uruchamiany przez sprawdzanie warunku w IF.

------------------------ [ Dodano po: 3 minutach ]

Wczoraj napisałem dla testu i celów szkoleniowych takie coś:
Może nic wielkiego bo nie robi nic sensownego, ale jest to tylko model.

Jednocześnie, w sposób nieblokujący, wykonują się następujące procesy:
1. Miganie diodą LED1 z f 1 (Reprezentuje proces który działa w tle cały czas na stałych parametrach)
2. Miganie diodą LED2 z f 2 (Proces 1)
3. Miganie diodą LED3 z f 3 (Proces 2)
4. Wykonanie zadanej ilosci mignięc diodą LED4 (Proces wykonywany na żądanie użytkownika)
5. Obsługa wyświetlacza LCD
6. Obsługa klawiszy (z eliminacją efektu drgania styków i obsługą repetycji)
7. Obsługa prostego menu
a. widok ustawień i odliczanie pozostałych mignięć LED4
b. ustawienia f 2
c. ustawienia f 3
d. ustawienia ilości mignięć diodą LED4

W programie nie użyłem ani jeden raz funkcji _delay_ms, więc program nigdy nie czeka (pomijając oczekiwanie na wyzerowanie flagi zajętości LCD ale to są mikrosekundy, normalne oczekiwanie na sprzęt.).
W programie wykorzystana jest funkcja SuperDebounce autorstwa kolegi Mirka oczywiście, która znajduje się w książce niebieskiej.

W opracowaniu zapis i odczyt ustawień z pamięci EEPROM.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 11:15 
Online
Moderator
Avatar użytkownika

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

majster napisał(a):
wszystko ładnie się zachowuje natomiast
postanowiłem iż pójdę od razu przy tym zagadnieniu na głębszą wodę.


Kłopot polega na tym panie kolego, że to są PODSTAWY - tak aby poczuć w ogóle co to znaczy programować mikrokontroler, jak się zapala i gasi diodę LED, jak wygląda w ogóle obsługa przycisku w jakiś mega uproszczony sposób. Ale tak nie da rady napisać większego programu i stąd dalsza część książki - która właśnie prowadzi cię do takich mechanizmów jak np "timery programowe", dzięki którym będą możliwe rzeczy o które pytasz a twój kod programu skurczy się do kilkunastu linijek - nie dość tego wszystko będzie działać w jednym czasie.

zatem proponuję - nie popełniać błędu i na początek chociaż raz, przeczytać całość książki od deski do deski - żeby zobaczyć i zrozumieć jak ona jest napisana i jak prowadzi czytelnika .... tu nie warto się zatrzymywać na podstawowym miganiu i klawiszu z użyciem poglądowych kodów i to jeszcze z _delay_ms() :( ....

zdecydowanie pójdź dalej .... a jeśli coś będzie niezrozumiałe to pytaj śmiało na forum ;)

poza tym czytaj także i oglądaj poradniki do książek z mojego bloga

www.mirekk36.blogspot.com

a szczególnie z tymi klawiszami może przydać ci się np ten artykuł - zobaczysz:

http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

_________________
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: 17 sie 2013, o 11:37 
Offline
Użytkownik
Avatar użytkownika

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

pytanie do mirekk46 odnośnie zestawu startowego

w 1 poście napisałem iż posiadam również zestaw startowy z płytą AVT-35-05/2 lecz nie mogę znaleźć na płycie żadnych przykładów do niego ...

może jakaś podpowiedź.

odnośnie linku o drganiach zagłębiłem się w ten post w trakcie pisania programu.

Jak już pisałem dopiero raczkuję nic potrenuje jeszcze ...

Książkę przeczytałem całą ale część rzeczy jest dla mnie mało zrozumiała jak dla laika AVT .. chyba przeczytam ją jeszcze raz ... jakąś większą wiedzę już posiadam.


Ponadto jestem osobą która uczy się na gotowych przykładach i gryzie kod źródłowy dlaczego tak a nie inaczej ... w związku z tym czy możesz P. Mirku udostępnić mi kod do tego mojego zadania (te kilka linii) abym mógł je ugryźć ? i popatrzeć jak to działa?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 12:08 
Online
Moderator
Avatar użytkownika

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

majster napisał(a):
w 1 poście napisałem iż posiadam również zestaw startowy z płytą AVT-35-05/2 lecz nie mogę znaleźć na płycie żadnych przykładów do niego ...

może jakaś podpowiedź


No ale ja nie za bardzo rozumiem o jaką podpowiedź chodzi :( ... co masz na myśli ?

majster napisał(a):
w związku z tym czy możesz P. Mirku udostępnić mi kod do tego mojego zadania (te kilka linii) abym mógł je ugryźć ? i popatrzeć jak to działa?


Ale ja ani nie mam schematu twojego zestawu żeby coś myśleć ale też nie mam za bardzo czasu na pisanie kodów źródłowych (tym bardziej, że na blogu przecież masz takie gotowe przykłady więc w czym problem?) :( .... za to na naszym forum masz taki fajny dział: "DZIAŁ RYBNY" zapoznaj się z nim, zobacz do czego jest ... ba! poprzeglądaj w nim tematy - bo już nie jedna osoba prosiła o gotowe przykłady na takie tam miganie LED'ami i można już znaleźć sporo dla siebie przykładów ;) mówię ci , fajnie działa ten dział

_________________
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: 17 sie 2013, o 12:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Każdy przykład trzeba będzie dostosować do konkretnego układu. (Różnice w użyciu pinów). Jak chcesz to mogę wkleić kod tego co opisałem. Tyle, że ja piszę w zasadzie tylko na Atmegę32.
Teraz będę chciał spróbować Atmega88 ze względu na U_ref 1,1 V które ona posiada wbudowane do ADC.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 12:22 

Pomógł: 0

majster napisał(a):
w 1 poście napisałem iż posiadam również zestaw startowy z płytą AVT-35-05/2 lecz nie mogę znaleźć na płycie żadnych przykładów do niego ...

Rozumiem że masz taki zestaw http://sklep.avt.pl/p/pl/4013/plytka+te ... ntazu.html To nie jest zestaw do jakiego odnosi się książka Mirka wiec płyta zamieszczona w książce nie jest bezpośrednio dedykowana temu zestawowi, co nie przeszkadza wykorzystywać je na twoim zestawie.
Czy kupowałeś ten zestaw razem z płytą z kursem C? Jeśli tak to tam są przykłady pod ten zestaw. Jeśli nie masz tych przykładów to chyba na elportal.pl powinny być. Jak nie znajdziesz to napisz na pw.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 13:17 
Offline
Użytkownik
Avatar użytkownika

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

dokladnie o ten zestaw chodzi plyte mam lecz nie moge tam znalezc testow do plytki ...

jezeli chodzi o schemat ...

Atmega 8

pin 2-6 i 11 to przyciski

pin 23 do 28 to ledy

wiec po co tu malowac schemat ??

rezystory podciagam na wejscia programowo

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 13:21 
Online
Moderator
Avatar użytkownika

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

a co za różnica jaki zestaw? przecież ćwiczenia z książki można nawet na płytce stykowej wykonywać, albo nawet na pająku ;) Ja w ogóle nie rozumiem co znaczy "przykłady w C dla jakiegoś tam zestawu" .... to znaczy, że co ? każdy zestaw może działać tylko z jednym rodzajem przykładów ? ;) ... to co z płytką stykową ....

ZDECYDOWANIE lepiej uczyć się programowania od podstaw i radzić sobie z dowolnie wpiętym prockiem, niezależnie w jaki zestaw czy w jaką płytkę.

Więc jeszcze raz podpowiadam, przykłady obsługi klawiszy z mojego bloga można na KAŻDYM, podkreślam każdym procku czy zestawie testować, o ile oczywiście zestaw ma klawisze ? ;)

_________________
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: 17 sie 2013, o 13:25 

Pomógł: 0

majster napisał(a):
jezeli chodzi o schemat ...

Atmega 8

pin 2-6 i 11 to przyciski

pin 23 do 28 to ledy

wiec po co tu malowac schemat ??

Hmm no to jak wszystko wiesz to po co pytasz? A jeśli masz płytę z kursem to tam jest folder "Listingi" - mam taką płytę więc wiem co piszę ;)
Mając schemat swojego zestawu przerobisz każdy program opisywany w książce Mirka na swoje potrzeby.
-----------------
o już Ci Mirek wyżej to jasno wyłożył.
Pytaj więc o konkrety.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 13:32 
Offline
Użytkownik
Avatar użytkownika

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

dalem swoj plik zrodlowy ... i pytam sie co jest nie tak ... ze kolejny program wlacza sie gdy tyrzmam przycisk w momencie zakonczenia programu pierwszego ...

prosze o lopatologiczne opisanie .... i podpowiedz jakich funcji uzyc

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 14:12 
Online
Moderator
Avatar użytkownika

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

majster napisał(a):
dalem swoj plik zrodlowy ... i pytam sie co jest nie tak ... ze kolejny program wlacza sie gdy tyrzmam przycisk w momencie zakonczenia programu pierwszego ...

prosze o lopatologiczne opisanie .... i podpowiedz jakich funcji uzyc


No widzisz - ty wolisz zamiast uczyć się po kolei - to nie - troszkę tak na opak, czyli - napisałeś CAŁKOWICIE źle hmm liniowo program i teraz chcesz żeby ktoś go z tobą powoli naprawiał - po co ? Po co analizować i łatać coś co jest napisane że tak powiem "do góry nogami" (nie obrażaj się tylko bo to nie ironia czy nabijanie a podpowiedź) ....

Dlatego weź sobie najpierw na jednym klawiszu wypróbuj to co podane masz na blogu - no gotowy kod do obsługi jednego klawisza w sposób nieblokujący. I dopiero jak to będzie ci działać i zrozumiesz zasadę to zacznij dodawać kolejne....

bo teraz to tak wygląda jakbyś chciał żeby ci ktoś podpowiedział jak zrealizować twój cel za pomocą metody, której no nie da rady użyć albo w najlepszym wypadku trzeba byłoby budować "potworka" .... na przykładzie którego i tak byś się nic nie nauczył

------------------------ [ Dodano po: 6 minutach ]

poza tym widać że w ogóle pominąłeś może rozdział o pętlach .... :(

no bo jak można pisać 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.


podczas gdy można to zrobić tak:

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


no ale to tylko taki mały przykład - bo wszystko trzeba zmienić - żebyś nie pomyślał że wystarczy tylko dodać teraz takich 100 pętelek gdzie masz wciąż powtarzające się fragmenty kodu i zaraz coś zacznie ci działać inaczej.

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

do tego można użyć tablice itp itd itp

ale to trzeba najpierw poczytać i starać się zrozumieć jak działa - żeby wiedzieć jakimi narzędziami będziesz się mógł posługiwać później. A nie - że zobaczyć jakiś przykład .... z którego co zrozumiesz ? skoro nie kojarzysz ani działania np tablic ani pętli itp

_________________
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: 17 sie 2013, o 14:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Kolego koniecznie przeczytaj poradnik o drganiach styków, bo tam są pokazane proste rzeczy dotyczące wielozadaniowości i pisania programu w sposób NIEBLOKUJĄCY. A to jest klucz do poważniejszych programów.
W ogóle polecam poradniki Mirka. Ich siłą jest wielość dygresji Mirka :) Dzięki którym można się dowiedzieć mnóstwa rzeczy, otwierają się oczy różne zagadnienia i pracuje też wyobraźnia odnośnie tego co przed czym, co po czym, co od czego zależy i jak połączyć razem różne klocki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 17:58 
Offline
Użytkownik
Avatar użytkownika

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

mirek wszystko fajnie pieknie ale w tym momencie jedziesz po sobie bo to wszystko to jest wg twoich przykladow ...

wiem ze mozna to w petle ale nie zapominaj o tym ze ja sie ucze od 3 dni ... pierwszy raz mam takie cacko w dloni ...
wiem ze mozna w petle ale jak to najakims filmie powiedziales ... DO TESTOW WSZYSTKO JEST DOZWOLONE KTO MI ZABRONI ?

a i wiec po co mi petle ... na poczatek robilem tak ... pozniej chcialem to zamknac w petle jak widzisz juz jeden program jest zamkniety w petle for

ale po co robic dalej ? skoro po wcisnieciu przycisku musze czekac az zakonczy sekwencje while aby przeskoczylo na inny program ... tj atmel sie nie blokuje wszystko dziala jak nalezy ... za wyjatkiem tego ze nie przelacza odrazu na program a musze trzymac tak dlugo az zakonczy sewencje i dopiero przelaczy

po co mi wyjezdzacie z drganiami ? zwroccie uwage ze na dole ... drgania stykow sa wyeliminowane ... za pomoca przykladu mirka....

NIE ZAPOMINAJCIE ZE SIE UCZE

oczywiscie jak bym juz umial wszystko cacy to bym napisal to norlanie ale

NIE ZAPOMINAJCIE ZE SIE UCZE

mirek ... mowiles na filmie ze tutaj jest mila atmosfera ?

hahah smiech na sali tu jest jak na kazdym innym forum ...

mowiles ze tutaj kazdy pomoze ? hahah sam mieszasz ludzi z blotem bo uwazasz sie za wielkiego znawce ... ale i tak wolisz ludzi mieszac z blotem niz cos wytlumaczyc

to na tyle temat prosze zamknac usunac co kolwiek...

sam sobie dam rede i poradze z moim problemem

na razie dla mnie nie wazne jest to ze mozna to ujac w 100 liniach a ja ujmuje to w 500 liniach wiecej.... kto mi zabroni ? skoro to testy ?

UCZE SIE NIE ZAPOMINAJ TEGO

zal mi wydanej kasy na twoja ksiazke bo przeczytalem ja cale i i tak nie wszystko rozumie dlatego pytam tutaj

NAJLEPSZE JEST TO ZE TEN MOJ KOD TO ROZSZERZENIE TWOJEGO KODY W SIAZCE

wiec i ty zle go piszesz

tez uzywasz tam _delay_ms(czas);

a ot kto mi zabroni ? i kaze do tego pracowac na timerach skoro nie rozumie tego ....

NIE ZAPOMINAJCIE ZE SIE UCZE

wiec moze kiedys to pojme


wystarczy napisac ... TAK SIE NIE DA

sprobuj tak tak i tak ... wtedy usune kod i zaczne od nowa ... ale nie lepiej jezdzic po kims kto sie uczy i go zniechecac

ps program ani atmel sie nie blokuje ... tylko trzeba trzymac przycisk do momentu zakonczenia poprzedniej sekwencji ( programu ) aby wlaczyl sie inny

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



Ostatnio edytowano 17 sie 2013, o 18:51 przez majster, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 18:36 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Boże, następny się obraził. Co wy ludzie macie z tym?

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 18:38 
Offline
Użytkownik
Avatar użytkownika

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

nie obrazilem sie ale wystarczy pomoc a nie bluzgac prawda?


tym bardziej ze ucze sie od 3 dni mam to w lapie czytam te ksiazke robie sobie test na podstawie ksiazki mirka a on mnie blizga ?

troche dziwne bo w tym momencie bluzga i siebie


przeciez 3 dniowy poczatkujacy nie napisze kodu jak zloto co nie ?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 18:53 
Offline
Użytkownik
Avatar użytkownika

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

ok wiec problem tkwi w tym ... ze wykonuje sie program nr 1 ktory leci ledami od lewej do prawej i spowrotem po czym od srodka na boki 10x

i jak ten program leci a cisne guzik nr 2 od 2giego programu to musze go tak dlugo trzymac az przeleci petla ... czy to normalne czy da sie robic tak

aby w czasie wykonywania programu 1 ktory jest dlugi po wcisnieciu innego programu odrazu zakonczylo program 1 i zaczelo wykonywac program 2 ?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:02 
Offline
Użytkownik
Avatar użytkownika

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

wszystko ladnie pieknie ale dalej nie otrzymalem odpowiedzi nt tego,o co caly czas pytam co do kodu to wiem ale sie ucze

chodzi mi o wcisniecie przycisku w trakcie wykonywania programu aby nie czekal do konca a zaczal kolejny

Może skończ z tym kolorem, co? - Różowy J.

------------------------ [ Dodano po: 4 minutach ]

Antystatyczny napisał(a):

------------------------ [ Dodano po: 2 minutach ]

W liniowo napisanym programie niestety tak jest, że procek robi cos krok po kroku, a sprawdzi klawisz dopiero po tym, gdy np. zamiga 64 ledami. To jest główna wada programowania liniowego. Nie ma tej "wielowątkowości"



to jak zaprogramowac nie liniowo ?

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:13 

Pomógł: 0

No przecież dostałeś już odpowiedź na twoje pytanie......jeżeli chcesz uzyskać wykrywanie przycisku niezależnie w którym miejscu się znajduje program, masz dwa wyjścia.
1. Robisz obsługę klawiatury za pomocą przerwań
2. Robisz co już zresztą kolega Anty przekazał, coś na zasadzie wielowątkowości (opisana dokładnie w niebieskiej książce Mirka).
Czyli tworzysz coś na zasadzie tików, używając do tego jednego timera programowego tworzysz kilka softwerowych dzięki temu swój program jak by dzielisz na wątki.
Zapalasz diody w danym "wątku" a w pętli głównej sprawdzasz cały czas czy nie został naciśnięty klawisz

np. coś w ten deseń
gdzie SuperDebounce to funkcje obsługujące klawiaturę
a if( !Timer2 ) itd. to poszczególne "tiknięcia" gdzie wykonywany jest pomiar, wyświetlanie itd.

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


PS. CO ty z tymi kolorami? jakiś sposób ekspresji czy jak?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:23 
Offline
Użytkownik
Avatar użytkownika

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

nie rozumie za glupi jestem nie dam rady ... nie kumam co ty do mnie piszesz mimo przeczytania ksiazki

ja podziekuje ... mam dosc wiecznie nie udanego kodu

tez zamknales to w petli gownej ktore wg mnie wykonuje sie od gory do dolu wiec gdzie tu jest ze odrazu skacze do innego ?

nie kumam i dziekuje za checi pomocy ale moj zestaw i ksiazka raczej leci do kosza ... za glupi jestem na to pozdrawiam

PS twoja stopka idealnie pasuje do mnie

Oj chyba potrzebne ostrzeżenie skoro nie rozumiesz próśb o nie stosowanie koloru - Rózowy J.

nie mialem stosowac czewrwonego ... wiec go nie stosuje

cytuje antystatycznego: PS. Mam taką małą prośbę, bys tego czerwonego kolorku nie używał. Zwyczajowo używany jest przez moderatorów w celu przekazywania sugestii dotyczących kształtu postu. Zmień na jakikolwiek inny, nawet różowy (Jaglasty się ucieszy) ;)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:47 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Pierwszy raz jesteś na forum?? Normalnym kolorem do pisania jest czarny.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

majster napisał(a):
PS twoja stopka idealnie pasuje do mnie


Majster, nie załamuj się. Ja zaczynałem bez zestawu, na jakimś module który posiadał na pokładzie AT90S2313 czyli straszny staroć. Dolutowywałem się kabelkami do niego. Byłem szczęśliwy jak zaczęła mi migac pierwsza dioda. A odpalenie LCD to był szok i coś na co poświęciłem dwa dni.

Wszyscy chyba zaczynają od programowania liniowego... Nie ma w tym nic dziwnego. Programując liniowo można robić tylko bardzo proste rzeczy. Pamiętaj, że nie ma tu systemu operacyjnego którego jądro przełącza wykonywane wątki.
Gdy procesor wykonuje funkcję _delay_ms pozornie tylko nic nie robi, czeka, bo taka jest istota tej funkcji. Nie może więc w tym czasie obsłużyć przycisku bo jest w tym czasie kompletnie zajęty czym innym.
Proponuję Ci napisanie prostego programu migającego dwoma ledami, bez użycia _delay_ms, w oparciu o timer i przerwanie. Wrzucę Ci później kod programu z komentami.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:50 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Anty bo jak dostaniesz różowym paskiem...

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 208
Lokalizacja: Kraków
Pomógł: 16

Podchodzisz do programowania zbyt emocjonalnie. Wrzuć sobie na luz :).
Wiadomo, że SuperDebounce odrazu nie zrozumiesz. Ja kminiłem to rok i się udało.
Według mnie powinieneś bardziej poćwiczyć podstawy, a dopiero potem brać się za trudniejsze rzeczy.
Powodzenia i życzę wytrwałości w nauce ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:58 
Offline
Użytkownik
Avatar użytkownika

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

sq8dsr napisał(a):
majster napisał(a):
PS twoja stopka idealnie pasuje do mnie


Majster, nie załamuj się. Ja zaczynałem bez zestawu, na jakimś module który posiadał na pokładzie AT90S2313 czyli straszny staroć. Dolutowywałem się kabelkami do niego. Byłem szczęśliwy jak zaczęła mi migac pierwsza dioda. A odpalenie LCD to był szok i coś na co poświęciłem dwa dni.

Wszyscy chyba zaczynają od programowania liniowego... Nie ma w tym nic dziwnego. Programując liniowo można robić tylko bardzo proste rzeczy. Pamiętaj, że nie ma tu systemu operacyjnego którego jądro przełącza wykonywane wątki.
Gdy procesor wykonuje funkcję _delay_ms pozornie tylko nic nie robi, czeka, bo taka jest istota tej funkcji. Nie może więc w tym czasie obsłużyć przycisku bo jest w tym czasie kompletnie zajęty czym innym.
Proponuję Ci napisanie prostego programu migającego dwoma ledami, bez użycia _delay_ms, w oparciu o timer i przerwanie. Wrzucę Ci później kod programu z komentami.




ja w zasadzie tez zaczynam bez zestawu bo nie wiem jeszcze jak ugryzc tego kita co mam .... :/
bardzo bym prosil o kod programu co go ugryze ... bo timery opisane w ksiazce sa dla mnie za trudne na poczatek

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



Ostatnio edytowano 17 sie 2013, o 20:09 przez majster, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 19:59 
Online
Moderator
Avatar użytkownika

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

Cytuj:
Podchodzisz do programowania zbyt emocjonalnie. Wrzuć sobie na luz


To jest dobre podsumowanie - bo widzę, że mi się nawet oberwało że ponoć kolegę majstra "zbluzgałem" jak się wyraził. A potem za chwilę - odgraża się że zestaw i książkę do kosza wyrzuci ....

czyli zdaje się kolega sobie pomyślał, że wystarczy hmm no nie wiem kilka dni i będzie od razu wszystko jasne ? :(

ja też się uczę i uczę - i wciąż czuję się początkującym pomimo że minęło już 7 lat

po co te nerwy ... i to jak widać nie tylko na mnie ale i na samego siebie - że nic nie rozumiesz ... po co ?

troszkę cierpliwości i jak zawsze mówię mniejszymi kroczkami .... przede wszystkim opanowanie chociaż kolejnej lekcji o multipleksowaniu LED czyli także o timerach sprzętowych ... to już by ci dużo dało do myślenia

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

majster napisał(a):
bo timery opisane w ksiazce sa dla mnie za trudne na poczatek


Ja oczywiście to rozumiem, że może to być za trudne - ale powiedz mi tylko czy właśnie czytałeś rozdział o multipleksowaniu wyświetlaczy LED ?

_________________
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: 17 sie 2013, o 20:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

majster napisał(a):
bardzo bym prosil o kod programu co go ugryze ... bo timery opisane w ksiazce sa dla mnie za trudne na poczatek


Spróbuj tego kodu. Mam nadzieję, że opisałem w nim wszystko co do czego.
Jak coś to pytaj.

Jedna ważna sprawa: Diody są zapalane u mnie STANEM NISKIM czyli podłączone są miedzy pin proca a (plus) zasilania, oczywiście przez rezystor. Jeśli u Ciebie są odwrotnie to trzeba będzie zmienić w makrach #define to co jest dla ON dać na OFF i vice versa.

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: 17 sie 2013, o 20:16 
Offline
Użytkownik
Avatar użytkownika

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

mirekk36 napisał(a):

Ja oczywiście to rozumiem, że może to być za trudne - ale powiedz mi tylko czy właśnie czytałeś rozdział o multipleksowaniu wyświetlaczy LED ?



czytalem cala ksiazke w 1,5 dnia ... moze za szybko czytalem

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

sq8dsr napisał(a):
majster napisał(a):
bardzo bym prosil o kod programu co go ugryze ... bo timery opisane w ksiazce sa dla mnie za trudne na poczatek


Spróbuj tego kodu. Mam nadzieję, że opisałem w nim wszystko co do czego.
Jak coś to pytaj.

Jedna ważna sprawa: Diody są zapalane u mnie STANEM NISKIM czyli podłączone są miedzy pin proca a (plus) zasilania, oczywiście przez rezystor. Jeśli u Ciebie są odwrotnie to trzeba będzie zmienić w makrach #define to co jest dla ON dać na OFF i vice versa.

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



zaraz popatrze w kod ... diody mam tak samo wstawione

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 20:17 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

No i co? Po 1,5 dnia chcesz umieć programować? Do tego dochodzi się pomału.

Wypróbuj choćby podany wyżej kod.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 sie 2013, o 20:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Antystatyczny napisał(a):
Jeśli majster zechce i nie będziesz miał nic przeciwko, to pozwole sobie uzupełnić Twój soft o komentarze.


Soft hahahaha, no pewnie, że nie mam nic przeciwko. Sam bym więcej okomentował ale pisałem na szybko :P



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: 81 ]  Przejdź na stronę 1, 2, 3  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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