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

Bascom, komenda na narastające zbocze

HENRYKSIENKIEWICZ 29 Sty 2005 01:56 2897 8
  • #1 1178212
    HENRYKSIENKIEWICZ
    Poziom 10  
    witam mam jedno pytanko czy w bascomie są jakieś komendy żeby procesor reagował na narastające lub opadające zbocze danego pinu
  • #2 1214562
    HENRYKSIENKIEWICZ
    Poziom 10  
    witam i pytam ponownie czy w bascomie są jakieś komendy żeby procesor reagował na narastające lub opadające zbocze może ktoś wie
  • Pomocny post
    #3 1214976
    john_t
    Poziom 29  
    To jest tak:

    Config Int0 = P3.2 ' Ustawienie przerwania zewnętrznego na pin P3.2
    Reset Tcon.0 ' Przerwanie wywoła stan niski
    Set Tcon.0 ' Przerwanie wywola opadające zbocze (z H do L)

    To samo z Int1

    To tyle pozdrowienia.
  • #4 1217496
    HENRYKSIENKIEWICZ
    Poziom 10  
    dzięki i mam jeszcze jedno pytanko to co napisałeś to jest wywołanie przerwania a czy można tym sposobem wykożystując dowolny pin jako wejście(nie przerwanie) ustawić tak żeby procesor reagował tylko na zmiane stanu z 0 na 1 lub odwrotnie
  • #5 1217802
    john_t
    Poziom 29  
    HENRYKSIENKIEWICZ napisał:
    dzięki i mam jeszcze jedno pytanko to co napisałeś to jest wywołanie przerwania a czy można tym sposobem wykożystując dowolny pin jako wejście(nie przerwanie) ustawić tak żeby procesor reagował tylko na zmiane stanu z 0 na 1 lub odwrotnie


    Oczywiście.
    Musi to być w pętli, gdyż program musi cały czas sprawdzać stan zadanego pinu np:

    'Niech pinem kontrolnym będzie np: P3.1 (zdarzenie gdy P3.1=0)
    'Niech pinem kontrolnym będzie np: P3.2 (zdarzenie gdy P3.2=1)
    'Ustawienia początkowe:
    P3.1=1
    P3.2=0

    Do
    If P3.1=0 then Call coś1
    If P3.2=1 Then Call coś2
    Loop
    End

    Sub coś1
    'Tu zrób coś
    P3.1=1 'Przywróć ustawienie startowe
    End Sub

    Sub coś2
    'Tu zrób coś
    P3.2=0 'Przywróć ustawienie startowe
    End Sub
  • #6 1221136
    szymtro
    Poziom 30  
    Złe nawyki z programowania w PLC?

    Spokojnie wszystko da się zrobić. Sprawdź komendę debounce - służy ona do eliminowania drgań styków ale jej druga zaletą jest w skoczenie do zdefiniowanej pętli tylko raz i można określć czy narastające czy opadające. Minus jest taki że trzeba cyklicznie wywoływać te komendy aby zadziałało - podobnie jak w PLC. Napisz jeszcze jakiego bascoma używasz (avr czy 8051) bo tam nieco się polecania różnią składnią.

    np:
    
    Do
       Debounce P1.4 , 0 , Alarm_zamykanie , Sub                  'Alarm Zamykanie
       Debounce P3.7 , 0 , Alarm_otwieranie , Sub                 'Alarm Otwieranie
       Debounce P1.0 , 0 , Przycisk_zamykanie , Sub               'Przycisk Zamykanie
       Debounce P1.1 , 0 , Przycisk_otwieranie , Sub              'Przycisk Otwieranie
       Call Silowniki_przednie_zamykanie                          'Sprawdz czy zamknac drzwi przednie
       Call Silowniki_przednie_otwieranie                         'Sprawdz czy otworzyc drzwi przednie
       Call Silowniki_tylne_otwieranie                            'Sprawdz czy otwarte tylne drzwi
       Call Sprawdz_predkosc                                      'Sprawdz czy jedziemy
    Loop
    End
    '-------------------------------------------------------------------------------
    Alarm_zamykanie:
       Call Drzwi_przednie_zamykanie
       Call Drzwi_tylne_zamykanie
    Return
    
  • #7 1221285
    HENRYKSIENKIEWICZ
    Poziom 10  
    Witam robie elektronike do takiej maszynki rozrywkowej i wykorzystuje w nim 2051 jak i 8535 także potrzebuje komendy pod AVR i pod 2051. Jak narazie to mam tak rozwiązane:
    gdy procesor wykryje stan np. (if pinb.0=0 then..) wtedy wykonuje jakąś operacje i wchodzi do pętli (do...loop) i siedzi w niej dopuki np. pinb.0 nie powróci spowrotem do logicznej "1" ponieważ impulsy wejściowe są impulsami szpilkowymi więc takie rozwiązanie nie powoduje wstrzymania pracy procesora wszystko działa poprawnie ale chciałbym to przerobić troszeczke przez zastąpienie stanów na wykrywanie zboczy sygnały wejściowe mogły by być wtedy nie zależne od czasu
  • #8 1222281
    john_t
    Poziom 29  
    szymtro ma rację, ale...
    nie było tu mowy o stykach...
    Komenda Debounce (w wolnym tłumaczeniu "przeciw-odskakiwacz") właśnie ich dotyczy i rzeczywiście sprawdza się przy ultra szybkim powtarzaniu impulsów (drganie styku) i nie tylko.
    Ale nie należy się szufladkować, jest klika innych metod rozwiązujących przedmiotową kwestię, jedną z nich jest to co napisałem.
    A tak na marginesie jest jeszcze jeden sposób na dragnie styków przycisku. Mianowicie równolegle ze stykiem należy wlutować kondensator 10nF i po sprawie (stara metoda z okresu fascynacji elektroniki bramkami logicznymi).
  • #9 1226494
    szymtro
    Poziom 30  
    Masz rację ale tutaj wykorzystujemy tylko mechaniz działania debounce bez analizy dlaczego tak sie nazywa a nie inaczej. Otóż działa ona tak iż za pierwszym razem sprawdza czy stan jest różny niż zadeklarowaliśmy. Jeżeli tak to zapamieta ten wynik i zacznie liczyć czas. Jak odliczy czas to sprawdza jeszcze raz czy może stan aktualny jest stanem różnym od poprzedniego i czy ten stan jest taki jak zadeklarowaliśmy. Jeżeli tak to skacze do procedury i koniec. I oto łasnie chodzi aby wykryło zmianę stanu a to że nazywa sie inaczej niz powinna to inna sprawa. Na początku programowania proponuję uzywać gotowych funkcji a w miarę nabierania praktyki rozwiazywać problemy alternatywnymi metodami.
    Debounce to tylko jedna komenda a mozna to zrobić "na piechotę" zgodnie z mechanizmem zamieszczonym powyżej. Do niczego nie zmuszam a john_t też miał dobry pomysł.
REKLAMA