logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wykrywanie zbocza narastającego bez przerwania

Przemo_2014 05 Cze 2010 19:56 9067 30
REKLAMA
  • REKLAMA
  • #2 8158897
    Konto nie istnieje
    Poziom 1  
  • #3 8158927
    _Robak_
    Poziom 33  
    Musisz próbkować stan pinu, najlepiej w przerwaniu z timera. Jeśli z 0 zmieni się na 1 to ustawiasz flagę i w głównej pętli wywołujesz funkcję;)
  • #5 8159103
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #7 8159146
    Dexter77
    Poziom 28  
    A czemu nie chcesz wykonywac przerwan? To jedyny sensowny sposob zatrudnic do tego przerwanie. W przeciwnym razi procesor nic innego nie bedzie robil tylko sprawdzal czy sie zbocze zmienilo... I cala para w gwizdek...
  • #8 8159153
    _Robak_
    Poziom 33  
    To tak jak pisze atom, musisz w mainie sprawdzać stan pinu, tyle że nazwanie tego reakcją na zbocze to byłoby mocno przesadzone;)
  • #9 8159186
    sulfur
    Poziom 24  
    Nie napisałeś nic o tym, ile będzie trwał stan wysoki (czas minimalny jeśli dany pin jest podciągany pod VCC), czy są jakieś czasy krytyczne. Co ile może pojawić się zbocze ?

    Generalnie ja to widzę tak: potrzebujesz zmienną. Jej wartość odpowiada wartości danego pinu, na którym masz wykrywać zbocze. Załóżmy wartość początkową 0. Gdy zmienna=0 i odczytany stan portu = 1, to znaczy, że wystąpiło zbocze narastające. wykonujesz co chcesz i zapisujesz do zmiennej jedynkę. jak znów sprawdzasz pin i jest jedynka, ale zmienna też jedynka to nic nie robisz. zmiana stanu pinu na zero to do zmiennej też zero. Naturalnie nic nie robisz bo zbocze opadające Cię nie interesuje. Tak z grubsza można to rozwiązać. Od ciebie zależy, gdzie to będziesz sprawdzał.

    Pytanie tylko, dlaczego masz takie ograniczenie i czy jest sens coś takiego robić.
  • #11 8159308
    Konto nie istnieje
    Poziom 1  
  • #12 8159828
    PO.
    Poziom 20  
    Tak się podepnę pod temat: jak strome musi być zbocze, żeby było wykryte? Dowolna zmiana 0/1 w sumie chyba wystarczy w avr? I wtedy zmiana przy minimalnym poziomie dla 1? Bo "zbocze" to dumnie brzmi ;) ...

    Jak nie masz przerwania na pinie to jakiś kablek górą pociągnij, skoro musisz ;) . Albo zmień kontroler na mający pcint - na pewno nie masz?

    Albo jeszcze inaczej, do czego Ci to zbocze? Co robisz i jak krytyczne czasowo to jest?
  • #13 8160045
    sulfur
    Poziom 24  
    Przecież kolega @_Robak_ wypowiedział się już, że nazywanie tego reakcją na zbocze jest mocno przesadzone. Realnie więc jest to reakcja na zmianę stanu pinu.

    Teraz wypadałoby, aby autor tematu odpowiedział na zadane już pytania:
    Z jaką częstotliwością jest sygnał, na którego zbocze ma reagować ?
    Czy czasy trwania stanu wysokiego i niskiego są identyczne ?
  • #14 8160931
    PO.
    Poziom 20  
    Ja pytam ogólnie jak się zachowuje avr ;) .

    A do autora było, jak ważne jest wykrycie zmiany czasowo (co wykrywa i po co) - znaczy jak nie w przerwaniu to jaki może być poślizg.
  • #15 8160972
    gaskoin
    Poziom 38  
    dokładne dane, progi przełączeń, szybkość narastania itd sa w dataszicie
  • #16 8161262
    tmf
    VIP Zasłużony dla elektroda
    PO. napisał:
    Tak się podepnę pod temat: jak strome musi być zbocze, żeby było wykryte? Dowolna zmiana 0/1 w sumie chyba wystarczy w avr? I wtedy zmiana przy minimalnym poziomie dla 1? Bo "zbocze" to dumnie brzmi ;) ...


    Jak przedmówca napisał maksymalne czasy narastania/opadania na pinach są podane w nocie procesora. Nie mogą być dowolnie duże, bo poziomy 0 i 1 logiczne są ściśle zdefiniowane. Pomiędzy nimi jest obszar zabroniony, w którym sygnał cyfrowy nie może być. Rodzi to różne problemy, od nadmiernego poboru prądu (przewodzą dwa tranzystory a nie jeden) do problemów niezdefiniowanych - nie wiadomo jak się zachowają wewnętrzne układy detekcji po pojawieniu się stanu nieustalonego na wejściu. Dlatego jeśli sygnał zmienia się wolno trzeba dodać bramkę Schmitta, wykorzystać wbudowany komparator, ADC itd.
  • #17 8161485
    sulfur
    Poziom 24  
    Przepraszam, że nieśmiało zapytam, ale na co tu komu progi narastania z noty procesora ?
  • #18 8161611
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #19 8162016
    tmf
    VIP Zasłużony dla elektroda
    Możesz podać źródło do tej informacji? Ze schematu portu IO w DS bynajmniej to nie wynika, a biorąc pod uwagę, że dla innych interfejsów na pinach maksymalne czasy narastania/opadania są podane to nie spodziewał bym się poprawnej pracy dla stanów przejściowych.
  • REKLAMA
  • #20 8162325
    Konto nie istnieje
    Poziom 1  
  • #21 8162515
    sulfur
    Poziom 24  
    Koledzy rozmawiają o niczym. Nie ważne jest ile V będzie na porcie. Istotne jest jedynie, czy wartość ta zostanie potraktowana jako logiczne zero, czy jako logiczna jedynka przez mikrokontroler.
  • #22 8162581
    gaskoin
    Poziom 38  
    sulfur napisał:
    Nie ważne jest ile V będzie na porcie. Istotne jest jedynie, czy wartość ta zostanie potraktowana jako logiczne zero, czy jako logiczna jedynka przez mikrokontroler.


    zeby bylo wiadomo czy zostanie to potraktowane jako 0 czy 1, należy zerknąć do datasheet'a i sprawdzić czy podana ilość woltów - zalicza się do 0 czy 1. Sam sobie zaprzeczyłeś, nie wiadomo czy dla zadeklarowanych poziomów logicznych 0 - GND, 1 - 5V po przyłożeniu 2,5V będzie 0 czy 1? :)
  • #23 8162861
    Nawigator
    Poziom 33  
    Przemo_2014 napisał:
    Mam gotowe urządzenie i pin na którym miało by zachodzić sprawdzanie nie jest pinem od przerwania

    Bicie piany przez 2 dni.
    Może podasz jaki pin w jakim procesorze i co przy nim pisze w opisie.
    Szklana kula dziś ma wolne.
    Wstępnie powiem ze nie zrobisz nic na pinach masy i zasilania.

    N.
  • #24 8162959
    sulfur
    Poziom 24  
    gaskoin napisał:
    zeby bylo wiadomo czy zostanie to potraktowane jako 0 czy 1, należy zerknąć do datasheet'a i sprawdzić czy podana ilość woltów - zalicza się do 0 czy 1. Sam sobie zaprzeczyłeś, nie wiadomo czy dla zadeklarowanych poziomów logicznych 0 - GND, 1 - 5V po przyłożeniu 2,5V będzie 0 czy 1? :)


    Tzn gdzie konkretnie sam sobie zaprzeczyłem? I co to kogo obchodzi, czy 2,5V to jest "0" czy "1" ? Istotą tematu jest jak zaprogramować wykrywanie zmiany STANU LOGICZNEGO na nóżce mikrokontrolera, co już zresztą z grubsza opisałem.
  • #25 8163036
    gaskoin
    Poziom 38  
    dobra zakonczmy ta bezsensowna dyskusje, nie chce sie klocic o glupoty. Tym bardziej, że podejrzewam, iż w tym projekcie zastanawianie się nad rzeczami typu szybkość przełączenia nie ma w ogóle znaczenia

    Jeżeli wyeliminowane są drgania ze styków (o ile na styku się to opiera) i nie będa występowały żadne przeszkadzające stany nieustalone to wystarczy pamiętać dwa stany - bieżący i poprzedni i je ze soba porównywać, z resztą to gdzies wyzej juz zostalo napisane
  • #26 8163075
    sulfur
    Poziom 24  
    No właśnie i to jest konkretna odpowiedź na zadane pytanie. Nad drganiami zestyków, czasami trwania stanów logicznych (a co za tym idzie częstotliwością) i tym podobnymi rzeczami póki co nie ma sensu się zajmować, jako że Autor tematu podał za mało danych, żeby takie rzeczy rozpatrywać, a jak słusznie zauważył kolega @Nawigator szklana kula ma dziś wolne.
  • #27 8163738
    PO.
    Poziom 20  
    I jak ciekawie się wątek rozwinął :) ...
    A pytanie zadawałem bo mi tak luźno przyszło do głowy robienie klawiatury na PCINT albo fototranzystora podłączenie i wykrywanie 0/1.
    Dopóki autor nie wróci to możemy offtopować :P .
  • #28 8164335
    tmf
    VIP Zasłużony dla elektroda
    atom1477 napisał:
    A jak myślisz, co jest źródłem tej informacji? No wiadomo że datasheet.
    No choćby z dopuszczalnego napięcia na pinie (-0.3...VCC+0.3V).
    Albo z tego że na pinach są też wejścia ADC i działa to.
    Tu mam na myśli ogólne działanie.
    A teraz działanie "cyfrowe" mimo niespecjalnie cyfrowego sygnału na wejściu: też zadziała bo na wejściach jest histereza.
    A tak po za tym: ze schematu w datasheecie owszem, wynika to (to że to zadziała).
    A po za tym to nie rozumiem jaki to ma związek z tematem. Co za różnica jaki jest przebieg? Tak samo by to działało/niedziałało niezależnie od tego czy wykorzysta się sprzętowe INTx czy programowe wykrywanie zbocza.


    No właśnie pytam bo nigdzie w DS nie natrafiłem na info, że AVRy mają wejście Schmitta. Dlatego proszę o ukierunkowanie.
    A z tematem ma dużo wspólnego - jeśli chcesz wykorzystać przerwanie od pin change wyzwalane zboczem a nie poziomem to może być problem. Jeśli napięcie utrzymuje się w stanie pomiędzy 0 i 1 to jak zareaguje procesor i przerzutnik odpowiedzialny za detekcję zbocza? Zauważ, że dla np. interfejsu XMem, SPI, TWI itd. te czasy są podane. Gdyby to było bez znaczenia to przecież by ich nie podawali.
  • #29 8164447
    PO.
    Poziom 20  
    Jest bardzo niejasno wspomniane że coś jest gdzieś do schmitta podłączone - właśnie przetrzepałem pdfa szukajką i wyskoczyło całe trzy razy (w tym raz od i2c).
  • #30 8164573
    Nawigator
    Poziom 33  
    Zobacz na obrazek p.t. General Digital I/O i znajdziesz trójkącik przed Synchronizerem. Są też obrazki na końcu pdf-a Pin Treshold and Histeresis.

    N.
REKLAMA