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

BASCOM, obsługa kilku urządzeń/czynności na raz.

cyklop1977 13 Paź 2010 21:54 1954 7
  • #1 8616519
    cyklop1977
    Poziom 10  
    Witam
    Chce zapytać o pewną rzecz a mianowicie o to jak pisać program w którym jest obsługa kilku urządzeń lub czynności naraz ....jesli program jest zamknięty w pętli to nie ma problemu .. powstaje czynność za czynnością ..ale ja chcę by program w tym samym czasie obsługiwał kilka urządzeń np: akcelerometr , enkoder i silnik..jeśli szanowni koledzy mogą niech opisza jak i dadzą przykład...myślę że wielu początkującym w programoaniu ATmeg to się przyda.....ja wiem ze można to zrobić na przerwaniech...ale proszę o przykłady jeśli można...np: na diodach led + silnikach dc ...tylko proszę nie pisać o google bo mam dość


    ...dziękuję za odpowiedź
  • #3 8616787
    xury
    Specjalista automatyka domowa
    Hmm. No to żeś kolego janbernat zabił początkującego tym tematem :)
    Tak ogólnikowo pisząc to by wszytko działało w pseudo multitaskingu nie należy stosować opóźnień typu wait, tylko timery, oraz wykorzystywać system flag i przerwania. Przykładów na forum jest sporo więc można zawęzić wyszukiwanie tylko do elektrody, oraz na stronie firmowej Bascoma.
  • #4 8616841
    cyklop1977
    Poziom 10  
    początkujący hmm no może nie jest tak źle ze mną ...powiem tak ... umiem zrobić obsługę np: silnika krokowego,akcelerometru na adc , ale to sa pojedyńcze urzadzenia ..mi chodzi o np: podawanie danych z data na 2 silniki krokowe w tym samym czasie , które robią swoje ,,,lub o odczyt danych z dwóch adc , które obsługują silnik i diody w tym samym czasie.....nie pytam sie o diody led na IFach
  • #5 8616858
    janbernat
    Poziom 38  
    Dlaczego zaraz zabił?
    To wypowiadający się w tym temacie mnie zabili.
    Nawet mało kto przeczytał że chodzi o pseudowielątkowość.
    A w zasadzie to sam musiałem do tego dojść- jeszcze w Bascomie.
    W C to się robi łatwiej- chociaż ze zrozumieniem składni i całą resztą to mam problemy.
    No- ale to tylko dwa miesiące się tego uczę.
    No i fakt- nie wygooglasz.
    Albo bardzo trudno.
  • #6 8620959
    M. S.
    Poziom 34  
    Jedyne co uC potrafi zrobić jednocześnie to wystawić kombinację zer i jedynek na jeden ze swoich portów ustawiony jako wyjście lub odczytać stan jednego portu ustawionego jako wejście.
    Tak więc jeśli jeden silnik krokowy posiada 4 końcówki do sterowania to podpinając dwa takie silniki do 8 bitowego portu dostaną one sygnał sterujący jednocześnie. Wystarczy w programie napisać PORTB = 255 i wszystkie końcówki portu B otrzymają w tym samym czasie "jedynki", PORTB = 128 - najstarszy bit = 1, pozostałe to "0" itd.
  • #7 8621045
    mirekk36
    Poziom 42  
    M. S. napisał:
    Jedyne co uC potrafi zrobić jednocześnie to wystawić kombinację zer i jedynek na jeden ze swoich portów ustawiony jako wyjście lub odczytać stan jednego portu ustawionego jako wejście.


    No z tym to bym się tak do końca nie zgodził ;) .... mówię trochę przekornie oczywiście bo mowa tu o wykonywaniu wielu różnych operacji w tzw: "jednym czasie" jak się to ładnie określa. I o to chyba autorowi chodzi a nie o dosłowne "jednocześnie" o jakim kolega pisze.

    Bo dla jednego wykonanie kilku, kilkunastu procesów naraz w "jednym czasie" będzie oznaczało, że mają one być np wykonane w czasie jednego cyklu zegarowego czy nawet 2-3 - TO NIEMOŻLIWE ;) .... ale dla innych określenie "w jednym czasie" może oznaczać wykonanie wielu zadań np w ciągu 10ms , dla jeszcze innych w ciągu 500ms a jeszcze innym wystarczy żeby wykonywały się one w czasie 1 sekundy (co już jest zkolei zbyt wolno jak na polupane określenie "w jednym czasie")

    Biorąc jednak pod uwagę sterowanie nie dwoma a nawet 8 silnikami DC za pomocą pinów podłączonych do DOWOLNYCH portów mikrokontroelra w czasie 10ms to już jest i tak aż nadto ;) zwykle do sterowania takim zadaniami/procesami wystarczy nawet rozdzielczość 100ms z dużym powodzeniem. I jest to wszystko w pełni osiągalne na każdym najmniejszym nawet AVR'ku i nie tylko AVR'ku.
  • #8 8621196
    janbernat
    Poziom 38  
    "Tak więc jeśli jeden silnik krokowy posiada 4 końcówki do sterowania to podpinając dwa takie silniki do 8 bitowego portu dostaną one sygnał sterujący jednocześnie."
    Guzik prawda.
    Wystarczy zastosować maskę na pół portu a drugą połowką sterować z inną częstotliwością i z odpowiednim przesunięciem fazowym aby każdy silnik działał niezależnie.
REKLAMA