Ads_700x200

środa, 25 grudnia 2013

Przerwania dla początkujących - część 02

Tym razem od razu kolejny odcinek ... jeszcze troszkę teorii i zabieramy się w kolejnym do pisania kodu:


;)

21 komentarzy:

  1. Dostał Pan bana na święta z najbliższymi? ;-)

    Już nie mogę się doczekać kolejnego odcinka.

    Świątecznie pozdrawiam.

    OdpowiedzUsuń
  2. Super poradnik, już nie mogę się doczekać tej gry jak i konsoli nowej generacji AVRstation328.
    Pozdrawiam i Życzę wesołych świąt.

    OdpowiedzUsuń
  3. Jezu, święta świętami a ja normalnie czaje się na te poradniki jak opentany :) aż dziw bierze, że jest ktoś kto ma takie zawzięcie w ich tworzeniu jak Pan :)

    OdpowiedzUsuń
  4. 1) Czy na tablicy nie da się wstawić jakiegoś odpowiednika pola tekstowego? Nie żebym był malkontentem i narzekał, chodzi mi żeby Tobie było łatwiej :)
    2) Może wyprzedzam to co powiesz w następnym poradniku, ale czy trzymając wciśnięty jeden przycisk będziemy w stanie wykryć wciśnięcie drugiego na tym samym porcie za pomocą PCINT (czyżby to był skrót od Port Common INTerrupt ).

    Pozdrawiam świątecznie.

    OdpowiedzUsuń
    Odpowiedzi
    1. ad.1 da radę ale na razie tak mi było szybciej - ale hmm no spróbuję ;)

      ad.2 tak teoretycznie jest taka możliwość aby wykryć wciśniętych kilka przycisków

      Usuń
  5. Mirku super poradnik. Ty to jestes nasz Mikołaj z tą różnicą , że rozdajesz prezenty codziennie.
    pozdrawiam.
    ps. Co na to żona , że Ty nawet dziś pracujesz?:)

    OdpowiedzUsuń
  6. A czy da się skonfigurować PCINT-y tak, żeby jeden reagował na np. zbocze opadające, inny na rosnące, a jeszcze inny na konkretny stan? Czy nie i wszystkie reagują na to samo?

    OdpowiedzUsuń
    Odpowiedzi
    1. No już z noty PDF i z tego co pokazywałem dotychczas w tych poradnikach, widać że jest TYLKO jedna jedyna możliwość - asynchorniczne sprawdzanie reakcji na każdą zmianę stanu. Nie ma przecież w tych opisach rejestrów, które pokazywałem żadnych takich jakichś tam możliwości żeby sobie każde takie przerwanie reagowało inaczej - skąd taki pomysł ?:(

      Usuń
    2. Pomysł z Bascoma :)
      Ale coś dziwne, nie da rady z PCINTx w C zrobić tego co w Bascomie z INTx instrukcją:?
      Config Int0 = Falling
      On Int0 Akcja1
      Config Int1 = Rising
      On Int1 Akcja2
      Enable Interrupts
      Czyli INT0 reaguje na zbocze opadające i idzie do podprogramu Akcja1, a INT1 reaguje na rosnące i idzie do Akcji2.
      W C wszystkie zbocza muszą byc takie same?

      Usuń
    3. Ale zobacz panie kolego sam - co ty tu piszesz ?

      Co ma wspólnego Bascom albo C z tym jakie są możliwości wyzwalania przerwań, to po pierwsze.

      Po drugie pytałeś o PCINT , a teraz piszesz o INTx - a to CAAAAAŁKIEM co innego

      No ale twój problem wynika wiesz z czego? ... z tego, że Bascom cię dość mocno rozleniwił i W OGÓLE nie zaglądasz do noty PDF procka :(

      Tymczasem to że przerwania INTx czyli INT0, INT1 można wyzwalać i poziomem i dowolnym zboczem i każde z nich konfigurować indywidualnie. Ale to panie kochany cecha sprzętowa procka a nie jakiegoś tam języka programowania - musisz to zrozumieć :(

      Reasumują nie ważne czy w Bascomie czy w C przerwania INTx konfiguruje się tak samo .... na podstawie noty oczywiście. Naturalne jest też to że zapis takiej konfiguracji jest inny w C i w Bascomie .... ale czy to trzeba wyjaśniać ?

      Natomiast wracając do twojego pierwotnego pytania o PCINT - to jeszcze raz polecam zajrzyj do noty PDF albo poczekaj na kolejny odcinek i zobaczysz jak się je w kodzie konfiguruje ... oczywiście w C .....

      Usuń
  7. Czekamy na dalsze odcinki.
    Jedno pytanie da się wykrzystać przerwanie Int i PcInt na jednym pinie w tym samym programie - np. int na zbocze narastające a pcint na opadające?

    OdpowiedzUsuń
    Odpowiedzi
    1. Już wyżej pisałem że przerwania PCINT nie dają się dowolnie konfigurować na różne zbocza itp .... zawsze będą wyzwalane asynchronicznie dowolną zmianą stanu na przeciwny - to po pierwsze.

      Po drugie - czy można na jednym pinie skorzystać z dwóch przerwań czyli np INTx i PCINTx ? ... myślę, że chyba tak - tzn nie pamiętam - ale jak nie zapomnę to sprawdzimy to razem w kolejnym odcinku ;)

      Usuń
  8. Super - dziękujemy!.
    Mirku w swoich poradnikach zachęcasz na przesiadanie sie na lepsze procki - z atmega8 na atmega88 itd..czy w związku z tym planujesz może dodać nowsze procki Xmega do MKAvrkalkulatora? (właściwie to nie wiem czy jest jakaś różnica w ich programowaniu)...Jeszcze raz dzięki.

    OdpowiedzUsuń
  9. Mam takie pytanie bo powiedział pan gdzieś ok. 21.30, że czegoś takiego pan by nie zalecał i narysował klawisz z jednej strony pod pięty do vcc z drugiej do INT0 i przez rezystor 10k do GND. A następnie powiedział o możliwości użycia wewnętrznego podciągnięcia do VCC, jednak nie można chyba dać wewnętrznego podciągnięcia go GND.

    OdpowiedzUsuń
    Odpowiedzi
    1. No DOKŁADNIE akurat w prockach AVR nie można dać wewnętrznego podciągania do GND i dlatego powiedziałem że nie zalecane jest takie podłączanie ... bo jest tylko podciąganie do VCC. I można zacząć bez zewn. rezystora z samym podciąganiem programowym. A gdyby były problemy to dołożyć rezystor np ....

      a odwrotnie jak ? ;)

      Za to w innych prockach są takie możliwości i bywają podciągania programowe i do VCC i do GND więc tam nie jest ważne jak użyjemy klawisza

      Usuń
    2. Jednak jeśli będę chciał sterować tzw. + to chyba jedyną różnicą między sterowaniem + a - jest to, że przy sterowaniu - mogę użyć wewnętrznego podciągnięcia do Vcc a przy sterowaniu + muszę zastosować zewnętrzne podciągnięcie do GND, prawda?

      Usuń
    3. DOKŁADNIE tak jak piszesz.

      Usuń
  10. Pan spędzał pierwszy dzień Świąt z nami ?:-) Dziękujemy!

    OdpowiedzUsuń
    Odpowiedzi
    1. Mi też jest przyjemnie z Wami spędzać czas ;)

      Usuń
  11. Pan jest niesamowity, wielkie dzięki za ten poświęcony czas!

    OdpowiedzUsuń