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

Filtrowanie drgań styków - wykrywanie zbocza

15 Wrz 2010 21:41 2587 6
  • Poziom 9  
    Witam. Otóż mam problem ze zrealizowaniem pewnego zadania. Jakiś czas temu miałem napisać program filtrujący drgania styków za pomocą maski. Niestety pamięć mam krótką i zapomniałem co i jak. Znalazłem skromne zapiski ale nie bardzo rozumiem jak ten program miał działać. Zacznę od rysunku.
    Filtrowanie drgań styków - wykrywanie zbocza
    M – maska
    W – wynik

    I dalej mam tylko kluczowe fragmenty programu:

    M=11110011
    W=00000011

    If(H_P1&&M = W) skok_w_lewo
    deley (100ms)
    H_P1= ((H_P1<<1)|| PIND)
    PORT = H_P1

    Szukałem po internecie czegoś na temat filtrowania drgań styków ale nie znalazłem niczego podobnego do tego. Może ktoś ma pojęcie jak taki program ma wyglądać?
    Ps. Program pisany w C dla avr ATMega16
    Za pomoc z góry dziękuję.
  • Poziom 42  
    jarix1983 napisał:

    If(H_P1&&M = W) skok_w_lewo
    deley (100ms)
    H_P1= ((H_P1<<1)|| PIND)
    PORT = H_P1


    To proste , wystarczy to przekształcić tak jak poniżej i od razu ci zadziała:

    Code:
    If(H_P1 && M != W) skok_w_bok
    
    delaleyeyey(100ps)
    H1_P27 == 18G23 << PORTD
    PIND = H1_P1 + W + M


    i po krzyku ;)

    .... a na poważnie to jakiś żart z twojej strony ???? już dawno się nie ubwaiłem czytając takiego kodu i to niby pisanego w C ;) dobre dobre
  • Poziom 30  
    jarix1983 napisał:
    Znalazłem skromne zapiski...

    Skromne to mało powiedziane... (;
    To ma być coś na zasadzie co się robi na rejestrze przesuwnym, taki debouncer (przerzutnik->SIPO->detektor)??
    Wersji programowej może wyglądać tak:
    -próbkować sygnał z pinu do zmiennej i przesunąć o bit w lewo.
    -Powtórzyć do zapełnienia zmiennej(znaczy się osiem bitów, osiem iteracji)
    -maska i porównać z wzorcem

    Lepsze jest proste przerwanie, odpalenie timera i znowu sprawdzenie stanu z przerwania od timer'a. Jak to tam woli (;
  • Poziom 20  
    można tak :
    Code:

    debounce pind.1


    a można i tak :
    Code:

    process
        begin
           wait until (clock_100hz’event) and (clock_100hz = ‚1’);
              shift_pb(2 downto 0) <= shift_pb(3 downto 1);
              shift_pb(3) <= pb;
               case shift_pb is
                 when „0000” =>
                   state <= ‚0’;
                 when „1111” =>
                   state <= ‚1’;
                 when others =>
                   state <= state;
               end case;
            pb_debounced <= state;
        end
  • Poziom 20  
    no wiem ...

    ale nie wklejałem z ISE tylko z jakiegoś PDF'a chyba nawet z EP.