Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega16 - Obsługa microswitchów

pawel_konin 10 Lut 2013 21:52 3888 35
  • #1 10 Lut 2013 21:52
    pawel_konin
    Poziom 20  

    Witam dopiero zacząłem przygodę praktyczną z mikrokontrolerami padł wybór na programowanie w C oraz na rodzinę Atmela(najwięcej przykładów oraz opisów). Mam pewien problem z ich obsługą chciałbym zrobić przycisk za pomocą którego bym wyłączał(reset) lub załączał(set bez trzymania przycisku) jakieś wyjście. Napotkałem na pewne utrudnienia pomimo tak mi się wydaję poprawnego oprogramowania które zamieszczam pod spodem.
    Gdy wciskam pierwszy raz przycisk to wszystko wykonuję się tak jak powinno czyli zapala się dioda a gdy wciskam drugi raz powinna zgasnąć lecz to się nie wykonuję. Z racji że, dopiero zaczynam chciałbym się dowiedzieć czym to jest spowodowane gdyż brakuje mi już sił czy jest jakiś błąd programistyczny czy sprzętowy.
    Opis jak są połączone porty
    Porty wejściowe mają włączone pull up w konfiguracji
    Port wej.---> switch(pin przełączny)--> druga para nóżek switcha zwarta zworka przez kondensator do masy GND.
    Port wyj---> rezystor--->dioda--->VCC
    Jak sprawdzam miernikiem switch to zwiera się do masy atmega wymieniona gdyż myślalem że jest uszkodzona gdyż wpisuje np PINC4 a procesor reaguje na PINC2 to jest kolejny mój problem, wymieniłem na nówkę z pudelka i jest to samo.

    Zamieszczam kod

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 29
  • Arrow Multisolution Day
  • Pomocny post
    #2 10 Lut 2013 22:22
    BlueDraco
    Specjalista - Mikrokontrolery

    Kod nieczytelny - użyj tagów Syntax C. O eliminacji drgań styków słyszałeś? Ogólnie nie jest dobrym pomysłem włączanie przerwań przy braku procedur ich obsługi.

    0
  • #3 10 Lut 2013 22:40
    pawel_konin
    Poziom 20  

    BlueDraco napisał:
    Kod nieczytelny - użyj tagów Syntax C. O eliminacji drgań styków słyszałeś? Ogólnie nie jest dobrym pomysłem włączanie przerwań przy braku procedur ich obsługi.

    Mam obsługę przerwań lecz to nie one sprawiają mi kłopot( bo jeszcze ich nie sprawdzałem) mogę dołożyć jak ma to jakieś znaczenie. Słyszałem o drganiach styków mam jedynie kondensator 100nF do masy chciałem dołożyć jeszcze rezystor lecz na stykówce to kłopotliwe to jedno lecz nawet jak udało mi się dołożyć to już nie miałem żadnej reakcji na przycisk tylko cały czas jeden stan 1.

    0
  • #4 11 Lut 2013 09:32
    BlueDraco
    Specjalista - Mikrokontrolery

    Drgania styków załatwia się programowo, a nie przez dokładanie pająków. Dobry sposób - to np. próbkowanie stanu przycisku w przerwaniu 100 Hz, trzymanie kilku kolejnych stanów w zmiennej - rejstrze przesuwającym i reakcja na sekwencję np. "otwarty, zamknięty, zamknięty, zamknięty".

    0
  • #5 11 Lut 2013 10:30
    pawel_konin
    Poziom 20  

    BlueDraco napisał:
    Drgania styków załatwia się programowo, a nie przez dokładanie pająków. Dobry sposób - to np. próbkowanie stanu przycisku w przerwaniu 100 Hz, trzymanie kilku kolejnych stanów w zmiennej - rejstrze przesuwającym i reakcja na sekwencję np. "otwarty, zamknięty, zamknięty, zamknięty".


    Można by poprosić o jakiś przykładowy kod jak to by musiało wyglądać??
    Gdyż na popularnym blogu propagowane jest takie rozwiązanie zawsze wydawało mi się że, rozwiązania sprzętowe są najlepsze.

    0
  • #6 11 Lut 2013 10:55
    BlueDraco
    Specjalista - Mikrokontrolery

    Dla sprzedawców elementów zawsze rozwiązanie sprzętowe jest najlepsze. Ma co prawda jedną mało istotną wadę (nie eliminuje drgań), ale za to jaki ładny układ i ile można zarobić na elementach!
    To na obrazku - to jest układ RESET, jakiego używało się 20 lat temu, kiedy jeszcze mikrokontrolery nie miały w środku odpowiedniej elektroniki (niektóre PIC do dzisiaj jej nie mają).

    W przerwaniu timera ok. 100 Hz robisz np. coś takiego

    keystate = (keystate << 1 | KEY) & 0xf;

    KEY - to wyrażenie na bieżącą wartość przycisku, np. (PORTC >> 3 & 1)

    Zmienna keystate w tym przykładzie zawiera 4 ostatnie stany. Jeśli chcesz np. zareagować na naciśnięcie, to dalej w tym samym przerwaniu piszesz:

    if (keystate == 8)
    {
    // wlasnie nacisnieto
    }
    else if (keystate == 7)
    {
    // zwolniono
    }

    0
  • #7 11 Lut 2013 11:12
    pawel_konin
    Poziom 20  

    BlueDraco napisał:
    Dla sprzedawców elementów zawsze rozwiązanie sprzętowe jest najlepsze. Ma co prawda jedną mało istotną wadę (nie eliminuje drgań), ale za to jaki ładny układ i ile można zarobić na elementach!
    To na obrazku - to jest układ RESET, jakiego używało się 20 lat temu, kiedy jeszcze mikrokontrolery nie miały w środku odpowiedniej elektroniki (niektóre PIC do dzisiaj jej nie mają).

    W przerwaniu timera ok. 100 Hz robisz np. coś takiego

    keystate = (keystate << 1 | KEY) & 0xf;

    KEY - to wyrażenie na bieżącą wartość przycisku, np. (PORTC >> 3 & 1)

    Zmienna keystate w tym przykładzie zawiera 4 ostatnie stany. Jeśli chcesz np. zareagować na naciśnięcie, to dalej w tym samym przerwaniu piszesz:

    if (keystate == 8)
    {
    // wlasnie nacisnieto
    }
    else if (keystate == 7)
    {
    // zwolniono
    }


    Dziękuję sprawdzę to lecz najprawdopodobniej wieczorem, i drugi sęk w tym że, w swoim projekcie będę angażował timer 1 i 0 do innych celów np pwm gdzie jak widać już jeden jest już skonfigurowany.
    Zamieszczę jeszcze fotki z płyty stykowej może faktycznie tam siedzi błąd bo małe switche ciężko jest tam wcisnąć.

    0
  • Arrow Multisolution Day
  • #8 12 Lut 2013 03:58
    dondu
    Moderator Mikrokontrolery Projektowanie

    pawel_konin napisał:
    Gdyż na popularnym blogu propagowane jest takie rozwiązanie ...

    Ale to bardzo specyficzny przypadek pinu mikrokontrolerów AVR opisany w notach Atmela.

    BlueDraco napisał:
    To na obrazku - to jest układ RESET, jakiego używało się 20 lat temu, kiedy jeszcze mikrokontrolery nie miały w środku odpowiedniej elektroniki (niektóre PIC do dzisiaj jej nie mają).

    Nie. To nota Atmela AVR042 z marca 2011 roku :-)

    W artykule wytłumaczyłem dokładnie, skąd to się bierze: http://mikrokontrolery.blogspot.com/2011/04/przycisk-drgania-stykow-debouncing.html

    0
  • Pomocny post
    #9 12 Lut 2013 10:57
    mirekk36
    Poziom 42  

    pawel_konin --> obsługę pojedynczych klawiszy możesz z pełnym powodzeniem robić bez używania i wręcz marnowania przerwań, po co na tak banalną obsługę tracić czy wykorzystywać cenne zasoby sprzętowe, skoro obsługa tego w dowolnej pętli programu to po prostu bajka, poezja i to można to robić w 100% w sposób nieblokujący. Poczytaj sobie tutaj:

    http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html

    masz tu od razu gotowe przykłady, które możesz WPROST użyć w swoim dowolnym kodzie, a najlepiej przeczytaj cały ten cykl 3 artykułów.

    0
  • #10 12 Lut 2013 11:17
    BlueDraco
    Specjalista - Mikrokontrolery

    Mirekk36: czy masz świadomość, że Twój kod nie działa i wpuszczasz ludzi w maliny celowo, czy robisz to z niewiedzy? To, że Ty masz na stole dobre przyciski, nie oznacza, że wszystkie przyciski zachowują się równie dobrze. Algorytm, który proponujesz, nie dość, że nie ma deterministycznych parametrów czasowych, to jeszcze nie ma szans zabezpieczenia programu przed skutkami drgań styków w okresie 5..15 ms, czyli typowym dla większości guziczków średniej klasy.
    Ciekawe, że błędny kod, który tak reklamujesz, nie jest ani odrobinę krótszy ani prostszy od mojego - działającego.

    0
  • #11 12 Lut 2013 11:40
    drzasiek
    Specjalista - Mikrokontrolery

    BlueDraco napisał:
    Algorytm, który proponujesz, nie dość, że nie ma deterministycznych parametrów czasowych

    Dokładnie!!!
    Jak można promować kod, którego działanie jest zależne od szybkości obiegów pętli głównej? Czy Ty człowieku naprawdę nie widzisz w jakie maliny ludzi wprowadzasz?
    Krytykujesz innych, że drgania styków to bajka itd a proponujesz wzamian za niezawodne procedury jakąś protezę, która działa tylko w przypadku przykładów dydaktycznych.. W żaden sposób w profesjonalnym projekcie takie dyrdymały się nie sprawdzą.
    Na swoim podwórkowym forum krytykuje elektrodę, a potem tu wraca reklamować swoje dyrdymały.

    0
  • #12 12 Lut 2013 12:30
    mirekk36
    Poziom 42  

    BlueDraco napisał:
    Mirekk36: czy masz świadomość, że Twój kod nie działa i wpuszczasz ludzi w maliny celowo, czy robisz to z niewiedzy? To, że Ty masz na stole dobre przyciski, nie oznacza, że wszystkie przyciski zachowują się równie dobrze. Algorytm, który proponujesz, nie dość, że nie ma deterministycznych parametrów czasowych, to jeszcze nie ma szans zabezpieczenia programu przed skutkami drgań styków w okresie 5..15 ms, czyli typowym dla większości guziczków średniej klasy.
    Ciekawe, że błędny kod, który tak reklamujesz, nie jest ani odrobinę krótszy ani prostszy od mojego - działającego.


    Żeby korzystać z kodu trzeba jeszcze umieć troszkę myśleć. Kod działa dobrze i spokojnie można go zmienić aby obsługiwał DOWOLNE opóźnienia na wypadek ew drgań przy zwalnianiu przycisku. To że nie za bardzo sobie radzisz z tak prostym kodem to już nie mój problem. Zamiast więc pisać bajki raz że go reklamuję a dwa że nie działa - to najpierw dopytaj, chętnie pomogę ze zrozumieniem. Poza tym to jest tylko wprowadzenie dla tych, którzy chcą myśleć i rozwijać się dalej a nie kod do reklamowania ..... chyba coś ci się pomieszało w algorytmach i dla tego nie masz szans pewnie na modyfikację czy zrozumienie tego kodu.

    Dodano po 3 [minuty]:

    drzasiek napisał:

    Na swoim podwórkowym forum krytykuje elektrodę, a potem tu wraca reklamować swoje dyrdymały.


    Na swoim podwórkowym forum, piszę że elektroda to świetne forum, sam od niego zaczynałem i poznałem tu sporo fajnych ludzi - zanim jeszcze wparowało kilku takich .... co to do googla odsyłają i wątki w koszu lądują. Co do reszty twojej wypowiedzi nawet nie skomentuję - jak zwykle dziecinada. Ty coś sam potrafisz napisać poza odsyłaniem do gogla na TYM forum ?

    Dodano po 2 [minuty]:

    BlueDraco napisał:

    Ciekawe, że błędny kod, który tak reklamujesz, nie jest ani odrobinę krótszy ani prostszy od mojego - działającego.


    aha nie staję z nikim w zawody w tym z tobą i twoimi kodami. Chcesz pisać krótszy i lepszy kod ? to pisz ... czy ja ci bronię ?

    1
  • #13 12 Lut 2013 12:37
    BlueDraco
    Specjalista - Mikrokontrolery

    Chętnie posłucham Twojego wykładu z myślenia, mirekk. Tak na początek: Załóżmy, że przycisk podczas naciskania generuje sekwencję: zwarcie przez 6 ms, rozwarcie przez 6 ms, potem stałe zwarcie. Jak zachowa się Twój kod z przykładu pierwszego? Wejdzie w pierwszy if, ustawi key_lock na 1, zmieni stan portu i przez kolejne 6 ms nic nie zrobi. Po zmianie stanu przycisku wynikającej z drgań, wejdzie w else if, przestawi key_lock na 0. Po kolejnych 6 ms, czyli wykryciu trwałego zwarcia, wejdzie w pierszy if i zmieni stan portu, czyli pojedyncze naciśnięcie przycisku spowoduje kilkumilisekundową zmianę (nie zauważalną). Jeśli przed wciśnięciem dioda nie świeciła, po naciśnięciu też nie będzie świecić. Czy o to chodzi w tym programie?

    0
  • #14 12 Lut 2013 12:40
    dondu
    Moderator Mikrokontrolery Projektowanie

    BlueDraco napisał:
    Mirekk36: czy masz świadomość, że Twój kod nie działa i wpuszczasz ludzi w maliny celowo, czy robisz to z niewiedzy? To, że Ty masz na stole dobre przyciski, nie oznacza, że wszystkie przyciski zachowują się równie dobrze. Algorytm, który proponujesz, nie dość, że nie ma deterministycznych parametrów czasowych, to jeszcze nie ma szans zabezpieczenia programu przed skutkami drgań styków w okresie 5..15 ms, czyli typowym dla większości guziczków średniej klasy.

    Gdy zapytałem dokładnie o to w komentarzu do Mirka artykułu, komentarz został wykasowany, bez udzielenia odpowiedzi :)
    Może więc tutaj odpowie?


    Link

    0
  • #15 12 Lut 2013 12:45
    pawel_konin
    Poziom 20  

    BlueDraco napisał:
    Mirekk36: czy masz świadomość, że Twój kod nie działa i wpuszczasz ludzi w maliny celowo, czy robisz to z niewiedzy? To, że Ty masz na stole dobre przyciski, nie oznacza, że wszystkie przyciski zachowują się równie dobrze. Algorytm, który proponujesz, nie dość, że nie ma deterministycznych parametrów czasowych, to jeszcze nie ma szans zabezpieczenia programu przed skutkami drgań styków w okresie 5..15 ms, czyli typowym dla większości guziczków średniej klasy.
    Ciekawe, że błędny kod, który tak reklamujesz, nie jest ani odrobinę krótszy ani prostszy od mojego - działającego.


    Widzę że, koledzy się rozwodzą nad wyższością Świąt Wielkanocnych nad Bożonarodzeniowymi (proszę nie odbierać tego jako podważanie waszej wiedzy). A ja zauważyłem podstawowy problem pewnie nawet i powód, jak zadeklaruje port jako wejście obojętnie jaki czy PORTC czy PORTB3(akurat mam taki wolny) to widzę pewną zależność że, pomimo zwarcia przyciskiem do masy (sprawdzone miernikiem beznapięciowo) port nie reaguję albo jak docisnę w okolicy portu to nieraz załapie a nieraz nie (pomińmy już te drgania styku) przeważnie jest jeden stan. Jak zadeklaruję więcej portów jako wejście z pull up to przeważnie zareaguję inny port niż wpisze np PINC3 a zareaguję PINC2,albo PINC4. Zrobiłem nawet prosty test zadeklarowałem tylko jeden port np PINC2 to działało a za jakiś czas już nie, zadeklarowałem inny PORT np PINC3 to albo żadnej reakcji albo migotanie diody. Takie coś stało się już na poprzedniej atmedze więc ją wymieniłem na inna z pudełka i po włożeniu jest to samo. Poradźcie mi co może być powodem takiego stanu bo zaraz wyrzucę przez okno tą stykówkę razem z tą Atmegą bo po prostu ręce opadają :x coś musi być na rzeczy albo procesor jest fabrycznie uszkodzony albo stykówka ewentualnie to i to.
    Dodam że, przestawiałem fusebity dla testu od JTAG i tak i tak i jest to samo ręce mi opadły :cry:

    0
  • #16 12 Lut 2013 12:46
    drzasiek
    Specjalista - Mikrokontrolery

    No więc przykład z użyciem tego genialnego odkrycia jakim jest Twój kod z opóźnieniem w pętli głównej programu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Co jeśli "jakies_zdarzenie_zewnetrzne" będzie występować przez jakiś czas cyklicznie?
    W momencie wystąpienia zdarzenia po naciśnięciu przycisku, zostanie on zblokowany na ponad 2,5 s w przypadku powyżej. Co to za klawisz, który raz mogę wciskać kilka razy w ciągu sekundy a za chwile, nie wiadomo kiedy i jak długo mogę go wciskać tylko co kilka sekund..

    0
  • #17 12 Lut 2013 12:48
    mirekk36
    Poziom 42  

    BlueDraco napisał:
    Chętnie posłucham Twojego wykładu z myślenia, mirekk. Tak na początek: Załóżmy, że przycisk podczas naciskania generuje sekwencję: zwarcie przez 6 ms, rozwarcie przez 6 ms, potem stałe zwarcie.


    Idąc tokiem twojego rozumowania mogę odpowiedzieć pytaniem na pytanie i chętnie posłucham Twojego wykładu z myślenia:

    Tak na początek: Załóżmy, że przycisk podczas naciskania generuje sekwencję: zwarcie przez 15 s, rozwarcie przez 30 s, potem stałe zwarcie..... i co na to twój kod ?

    ale nie odpowiadaj, daruj sobie bo mnie twój tok myślenia nie interesuje. A dyskutować to mogę ale nie z takim podejściem jakie ty tu prezentujesz.

    Ja z tobą dyskusji nie zaczynałem i powiem więcej na pewno nie będę jej kontynuował. Już nie raz pokazałeś na TYM forum jak potrafisz dyskutować.

    Dodano po 1 [minuty]:

    drzasiek napisał:

    Co jeśli "jakies_zdarzenie_zewnetrzne" będzie występować przez jakiś czas cyklicznie?.


    poza analizą kodu trzeba jeszcze umieć czytać - a u ciebie widzę idzie to ciężko stąd twoje problemy, rozterki i niezrozumienie. Przykro mi więc - tu ci nie pomogę.

    0
  • #18 12 Lut 2013 12:51
    drzasiek
    Specjalista - Mikrokontrolery

    mirekk36 napisał:

    poza analizą kodu trzeba jeszcze umieć czytać - a u ciebie widzę idzie to ciężko stąd twoje problemy, rozterki i niezrozumienie. Przykro mi więc - tu ci nie pomogę.

    O przepraszam szanowny Panie, ale proponujesz ten kod ZAMIAST uniwersalnej i niezawodnej metody z przerwaniami. Więc skoro ma to być alternatywa, powinna być co najmniej tak dobra a nie tylko dla szczególnych przypadków, które w praktyce występują tylko w przykładowych kodach obsługi przycisku.

    0
  • #19 12 Lut 2013 13:02
    mirekk36
    Poziom 42  

    drzasiek napisał:
    mirekk36 napisał:

    poza analizą kodu trzeba jeszcze umieć czytać - a u ciebie widzę idzie to ciężko stąd twoje problemy, rozterki i niezrozumienie. Przykro mi więc - tu ci nie pomogę.

    O przepraszam szanowny Panie, ale proponujesz ten kod ZAMIAST uniwersalnej i niezawodnej metody z przerwaniami. Więc skoro ma to być alternatywa, powinna być co najmniej tak dobra a nie tylko dla szczególnych przypadków, które w praktyce występują tylko w przykładowych kodach obsługi przycisku.


    Szanowny Panie - trzeba czytać dokładniej to co jest napisane w artykule a nie opowiadać bajki. Ja nie będę jeszcze raz tłumaczył tego co napisałem. Masz problemy to twoja sprawa.

    I zrozum, że jeśli chodzi o programowanie to nie ma ŻADNYCH UNIWERSALNYCH metod. Rozwiązań może jednego zagadnienia może być tyle ilu jest programistów na świecie. A szanowny Pan się chyba zachłysnął programowaniem że widzi TYLKO jedno rozwiązanie. Troszkę pokory, pokory trzeba.

    0
  • #20 12 Lut 2013 13:06
    pawel_konin
    Poziom 20  

    drzasiek napisał:
    mirekk36 napisał:

    poza analizą kodu trzeba jeszcze umieć czytać - a u ciebie widzę idzie to ciężko stąd twoje problemy, rozterki i niezrozumienie. Przykro mi więc - tu ci nie pomogę.

    O przepraszam szanowny Panie, ale proponujesz ten kod ZAMIAST uniwersalnej i niezawodnej metody z przerwaniami. Więc skoro ma to być alternatywa, powinna być co najmniej tak dobra a nie tylko dla szczególnych przypadków, które w praktyce występują tylko w przykładowych kodach obsługi przycisku.


    Ponawiam prośbę ktoś potrafi mi pomóc ?? czy zwyczajnie mam zamknąć temat z uwagi że, się kłócicie i zaraz skoczycie sobie do gardeł nie trzymam nikogo strony za słabo znam mikroprocesory by się wypowiadać czy mirekk36 ma racje czy dondu itp. Chciałbym tylko uzyskać odpowiedz na trapiący mnie problem...
    Widzę że, koledzy się rozwodzą nad wyższością Świąt Wielkanocnych nad Bożonarodzeniowymi (proszę nie odbierać tego jako podważanie waszej wiedzy). A ja zauważyłem podstawowy problem pewnie nawet i powód, jak zadeklaruje port jako wejście obojętnie jaki czy PORTC czy PORTB3(akurat mam taki wolny) to widzę pewną zależność że, pomimo zwarcia przyciskiem do masy (sprawdzone miernikiem beznapięciowo) port nie reaguję albo jak docisnę w okolicy portu to nieraz załapie a nieraz nie (pomińmy już te drgania styku) przeważnie jest jeden stan. Jak zadeklaruję więcej portów jako wejście z pull up to przeważnie zareaguję inny port niż wpisze np PINC3 a zareaguję PINC2,albo PINC4. Zrobiłem nawet prosty test zadeklarowałem tylko jeden port np PINC2 to działało a za jakiś czas już nie, zadeklarowałem inny PORT np PINC3 to albo żadnej reakcji albo migotanie diody. Takie coś stało się już na poprzedniej atmedze więc ją wymieniłem na inna z pudełka i po włożeniu jest to samo. Poradźcie mi co może być powodem takiego stanu bo zaraz wyrzucę przez okno tą stykówkę razem z tą Atmegą bo po prostu ręce opadają Mad coś musi być na rzeczy albo procesor jest fabrycznie uszkodzony albo stykówka ewentualnie to i to.
    Dodam że, przestawiałem fusebity dla testu od JTAG i tak i tak i jest to samo ręce mi opadły Crying or Very sad

    0
  • #21 12 Lut 2013 13:07
    dondu
    Moderator Mikrokontrolery Projektowanie

    mirekk36 napisał:
    Szanowny Panie - trzeba czytać dokładniej to co jest napisane w artykule a nie opowiadać bajki.

    Skoro tak, to może warto by Pan zrobił dokładnie to samo z artykułem, który Pan podważa? :)

    @pawel_konin
    Pokaż aktualny kod i schemat (a nie jego opis).

    0
  • #22 12 Lut 2013 13:10
    drzasiek
    Specjalista - Mikrokontrolery
  • #23 12 Lut 2013 13:14
    pawel_konin
    Poziom 20  

    drzasiek napisał:
    pawel_konin -> podaj dokładny schemat (lub zdjęcie HD) i program którym to testujesz.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #25 12 Lut 2013 13:19
    pawel_konin
    Poziom 20  

    dondu napisał:
    Czy masz jakieś warningi w czasie kompilacji?

    Wytłumacz mi proszę, jak to ma działać:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    No i czekamy na schemat.


    Brak warningów, ani jednego, 1 poziom optymalizacji kodu.
    Komentarzami proszę się nie sugerować, bo są błędne już na tą chwilę.

    0
  • #26 12 Lut 2013 13:22
    dondu
    Moderator Mikrokontrolery Projektowanie

    pawel_konin napisał:
    1 poziom optymalizacji kodu

    Ustaw: -0s

    pawel_konin napisał:
    komentarzami prosze się nie sugerowac bo sa bledne juz na ta chwile

    Sprawdzanie kodu polega na tym, że musimy wiedzieć co chcesz danym jego fragmentem osiągnąć. Dlatego komentarze są bardzo istotne.

    0
  • #27 12 Lut 2013 13:24
    pawel_konin
    Poziom 20  

    dondu napisał:
    pawel_konin napisał:
    1 poziom optymalizacji kodu

    Ustaw: -0s

    pawel_konin napisał:
    komentarzami prosze się nie sugerowac bo sa bledne juz na ta chwile

    Sprawdzanie kodu polega na tym, że musimy wiedzieć co chcesz danym jego fragmentem osiągnąć. Dlatego komentarze są bardzo istotne.

    Komentarze są z programu który jest na samej górze po prostu zacząłem wycinać wszystko żeby sprawdzić czy po pojedynczym zwarciu zmieni się stan diody na przeciwny

    0
  • #28 12 Lut 2013 13:27
    94075
    Użytkownik usunął konto  
  • #29 12 Lut 2013 13:30
    pawel_konin
    Poziom 20  

    albertb napisał:
    pawel_konin napisał:
    Ponawiam prośbę ktoś potrafi mi pomóc


    Najbardziej pomożesz sobie sam. Dowiedziałeś się, że są drgania styków i otrzymałeś kilka przykadów eliminacji.
    Przemyśl wszystkie (także te które niektórzy piszą, że nie działają) ii wybierz Twoim zdaniem najlepszą.
    Objawy, które opisujesz ze stykówką - zmierz napięcia na pinach procesora, przemyśl wyniki i w zależności od wyniku przemyśleń wywal stykówkę, lub się od niej od... .

    Przemyśl także swój kod, czy działa tak jak opisujesz. Przykładowo:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    i jak się to ma do praw de Morgana.

    Reasumując: myśl i analizuj co pokazują Ci Twoje zmysły, przyrządy pomiarowe, podręczniki, fora internetowe ( ;-) )
    I oddzielaj ziarno od plew.

    Będziesz wielki.

    Albert


    Oczywiście że, nie działa dlatego go obciąłem do minimów przyrząd pomiarowy mam na pinie 3.3V(pull up) mierząc do masy po zwarciu przyciskiem 0V więc wszystko chyba ok nie prawda??
    Mam książkę Pana Tomasza Francuza ale ona nie daje odpowiedzi na to pytanie dlatego trafiłem tutaj

    0