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

Dwie Atmegi - jak połączyć?

aniołek 06 Wrz 2011 07:19 3315 16
REKLAMA
  • #1 9899690
    aniołek
    Poziom 12  
    Witam

    Wyczytałem, że takie zdublowanie umożliwia szybszą pracę niż jeden samodzielny układ. Jak - od strony technicznej - powinno wyglądać takie połączenie? Jak powinien być napisany program?

    Pozdrawiam
  • REKLAMA
  • #2 9899710
    dondu
    Moderator na urlopie...
    Dwa komputery prawie zawsze będą szybsze niż jeden. Ale trzeba pisać dwa programy, które będą dzielić zadania między procesory. Do komunikacji wykorzystasz np. SPI.

    Napisz najpierw, co mają te układy robić i dlaczego jeden nie da rady?
  • #3 9899791
    aniołek
    Poziom 12  
    Witam, i dzięki za zainteresowanie

    Co do prędkości - właśnie tak myślałem (coś a'la dwurdzeniowy procesor ;) ), a całość jest dopiero w fazie przemyśleń..
    Ostatnio zainteresowała mnie platforma Ardiuno, a dokładniej - jego modułowość. Wszystko zaczęło się parę miesięcy temu - doszedłem do wniosku, że skoro każda Atmega potrzebuje swoich kondensatorów, resetu, złącza ISP, kwarcu... - warto pomyśleć o samodzielnej płytce. Pomysł został zrealizowany (teraz całość zajmuje niewiele więcej miejsca niż sama kostka), a kilka dni temu okazało się, że podobna idea jest podstawą wspomnianego Ardiuno. Znalazłem mnóstwo układów (schematów i wsadów), i teraz próbuję stworzyć elektronikę do sterowania frezareczką CNC za pośrednictwem kart SD (znalazłem nawet jeden podobny wątek, ale autor ma problemy właśnie z prędkością mimo zastosowania jakiejś nowszej Atmegi..) A może nie kombinować i pomyśleć o n.p LPC111x - tańszy i ponoć szybszy zamiennik Atmegi?..

    Pozdrawiam
  • REKLAMA
  • #4 9899833
    tmf
    VIP Zasłużony dla elektroda
    Z tego co piszesz wnioskuję, że jesteś mocno początkujący w temacie mikrokontrolerów. Więc na początku zajmij się ich lepszym poznaniem, zanim zaczniesz wynajdywać i tworzyć nieistniejące problemy.
    Nie wyobrażam sobie sytuacji w której nawet najwolniejszy współczesny mikrokontroler miał by zbyt małą moc obliczeniową do sterowania frezarką. No chyba, że mu wrzucisz na SD gołe pliki z AutoCADa i każesz przeliczać :)
  • REKLAMA
  • #5 9899850
    dondu
    Moderator na urlopie...
    Nie miej za złe kol. TMF, że sprowadza Ciebie na ziemię, ale opisał Twoją sytuację właściwymi słowami. Zabierasz się za zbyt duży projekt patrząc na Twoje doświadczenie. Nie tędy droga. Zacznij od mniejszych projektów, bo będziesz tracił czas i pieniądze.
  • #6 9899873
    aniołek
    Poziom 12  
    "Mocno początkujący" to bardzo delikatne określenie :ok: , choć po prawdzie pierwszy układzik zmontowałem prawie 30 lat temu :) .. Na chwilę obecną raczej odtwarzam gotowe wzory, a na naukę czegoś nowego i od podstaw jest już chyba troszkę późnawo :cry: .. Ale macie rację - czuję się jak małe dziecko w obcym mieście (widzę, słyszę - i nic nie rozumiem..)

    tmf - z tym przeliczaniem to nie do końca tak jak piszesz. Owszem - na karcie ma być pliczek wynikowy, ale samo jego odtworzenie to za mało. Trzeba stworzyć możliwość pauzowania pracy, wymiany narzędzia, kalibracji, zmiany prędkości, cofania do danego momentu - troszkę tego jest.. Ponadto - sam programik sterujący też ma swój "apetyt", co w sumie wymusza użycie nowszych (szybszych) kostek, stąd moje dywagacje nad dwoma układami. Ale i tu chyba macie rację, bo mnie samemu mój pomysł trącał "przerostem formy nad treścią" ;)

    Pozdrawiam
  • #7 9899983
    hans512
    Poziom 15  
    aniołek napisał:
    z tym przeliczaniem to nie do końca tak jak piszesz. Owszem - na karcie ma być pliczek wynikowy, ale samo jego odtworzenie to za mało. Trzeba stworzyć możliwość pauzowania pracy, wymiany narzędzia, kalibracji, zmiany prędkości, cofania do danego momentu - troszkę tego jest.. Ponadto - sam programik sterujący też ma swój "apetyt", co w sumie wymusza użycie nowszych (szybszych) kostek, stąd moje dywagacje nad dwoma układami. Ale i tu chyba macie rację, bo mnie samemu mój pomysł trącał "przerostem formy nad treścią" ;)


    To co planujesz ma sens z punktu widzenia nauki (plynne rozdzielanie zadan pomiedzy poszczegolne mikrokonrolery to ciekawy temat) jednak w twoim wypadku to jest totalne marnowanie czasu.

    Jak przedmowcy - bardzo watpliwe by poprawnie napisany kod byl zbyt wolny na sterowanie nawet najbardziej zaawanowana frezarka. Pamietajmy ze najmniejsze i najwolniejsze mikrokonrolery sa w stanie przetworzyc MINIMUM milion operacji na sekunde (1 MIPS) i to z dokladnoscia co do parunastu mikrosekund.

    Jesli natomiast mikrokonroler jest rzeczywiscie zbyt wolny (na przyklad w wypadku kiepskiej jakosci kodu) to prostsze jest po prostu zainwestowanie w szybszy mikrokonroler. Czyli jesli atmega zbyt wolna, to przesiadasz sie na inna szybsza architekture/model np na Cortex ;). Konwersja programu (w C) powinna byc bezbolesna i znacznie bardziej produktywna niz laczenie mocy obliczeniowej dwoch mikrokontrolerow.

    Pozdrawiam
  • #8 9900169
    janbernat
    Poziom 38  
    Ciekawy pomysł z kartą SD jako pamięcią masową programu.
    Z takiej karty odczytywać można dane do bufora w procesorze po kawałku i sterować nimi silniki.
    Wtedy pauza polega na zablokowaniu odczytu.
    Co do kilku procesorów- może chodzi o to że same sterowniki silników oprócz stopnia mocy mają często jakieś małe procesory do odbioru sygnałów i końcowej "obróbki" sterującej stopniem mocy.
    Wtedy masz standardowe sterowanie- STEP, DIR i ENABLE podawane na wejście procesora w sterowniku.
    A jakiś większy procesor odczytuje dane z karty SD i wysyła sygnały do sterowników.
    Ale obróbkę danych z rysunku na dane zapisane na karcie lepiej zrobić po prostu na komputerze.
  • #9 9900174
    gaskoin
    Poziom 38  
    Nie myl instrukcji z operacjami. Niektóre operacje potrzebują wielu instrukcji.
  • #10 9900293
    drzasiek
    Specjalista CNC
    Nawet jeśli połączysz 2 Atmegi, co zyskasz?
    Jeśli podłączysz kartę do jednej, będziesz musiał przesyłać dane odczytane z karty dodatkowo między uC.
    Jeśli podłączysz obydwie, jakoś i tak musisz to synchronizować, komunikować się co która kostka już odczytała, kiedy co oblicza i kiedy wysyła.
    Jeśli czujesz się na siłach napisać taki program na 2 współpracujące procesory to z pewnością poradzisz sobie z przesiadką na inny procesor, a może Xmega?
    Piszesz kod się prawie identycznie jak na Atmega, masz gwarantowane 32MHz zegara, możesz powiedzmy do 40-48MHz przetaktować (jeśli robisz coś dla siebie, znasz warunki w jakich urządzenie będzie pracować).
    A poczytaj sobie co może Xmega, przy twojej frezarce pewnie będzie się nudzić.
  • #11 9900314
    tmf
    VIP Zasłużony dla elektroda
    A ATMega się nudzić nie będzie? W końcu to tylko 50% przyrost mocy. Istotną różnicą byłaby przesiadka na UC3, ARM itd.
    Natomiast ze swoich skromnych doświadczeń ze sterowaniem silnikami mogę powiedzieć, że procesor się głównie nudzi. Szczególnie jeśli korzysta się z jakiegoś bardziej inteligentnego sterownika silników, który np. sam realizuje pracę mikrokrokową itd.
    Co do reszty to pełna zgoda - taki projekt byłby z pewnością ciekawy jako forma nauki tworzenia i pisania oprogramowania, które ma działać w takim rozproszonym systemie. Z pewnością jest to bezsensowne rozwiązanie w sytuacji w której mamy procesory, które podołają zadaniu, a także mamy o wiele szybsze procesory, tak, że nawet w Logo by to sprawnie działało :)
  • #12 9900342
    drzasiek
    Specjalista CNC
    tmf napisał:
    A ATMega się nudzić nie będzie? W końcu to tylko 50% przyrost mocy.

    Nie wiem, nie bawiłem się tym.
    Ale dla mnie 50 KM a 100KM w samochodzie to różnica :)
    Podałem tylko propozycję przejścia na coś szybszego, jeśli autor czuje, że Jedna Atmega mu nie wystarczy. Kod można napisać różnie, że i ARM wymięknie..
    Wg mnie rozdział tego na 2 Atmegi jest bez sensu i nie przyniesie tyle zysku co kłopotu.
    Ma to sens, tak jak mówicie- edukacyjny, ale autor zdaje się nie ma tego na celu.
    Chce mieś szybszy układ, a więc Taniej, szybciej i prościej będzie Xmega i na pewno dużo szybciej niż 2 Atmegi.
  • #13 9900387
    gaskoin
    Poziom 38  
    drzasiek - nie ten rząd wielkości, 50% przy 16MHz to jest nic. A to troszkę różnica :)
  • REKLAMA
  • #14 9900418
    janbernat
    Poziom 38  
    Sens to nawet ma- oszczędność na okablowaniu.
    W prowadnicę łańcuchową idącą do osi X i Z trzeba wepchnąć kable do sterowników silników
    (2xpotrójna skrętka), krańcówek (2x2 powójna), zasilanie, czujnik długości narzędzia i ew. dodatkowe czujniki.
    A kable do takich maszyn są dużo droższe niż normalne- kilkadziesiąt zł/mb.
    Chodzi o odporność na wielokrotne zginanie.
    A tak- zasilanie 220V i skrętka do jakiejś komunikacji szeregowej.
  • #15 9902054
    arktik1
    Poziom 27  
    Można też dać 1 Atmega Master i np 3 attiny.
    1 Att..- sterowanie przesuwem x
    2 Att..- sterowanie przesuwem y
    3 att..- sterowanie obrotami wrzeciona.
    Połączyć to UARTem :D
  • #16 9902490
    hans512
    Poziom 15  
    gaskoin napisał:
    Nie myl instrukcji z operacjami. Niektóre operacje potrzebują wielu instrukcji.

    Co nie zmienia faktu ze owy 1MIPS to nadal bardzo duza moc obliczeniowa. Nawet jest zuzyjesz powiedzmy 25 instrukcji asm (po kompilacji) na jedna linijke koncowego kodu w C to zauwaz ze naprawde ciezko jest "zuzyc" owy 1MIPS w zastosowaniu o ktorym mowimy.

    Oczywiscie nie mowie o DSP, transofrmacjach foureira - tam faktycznie 1MIPS to czesto za malo.
  • #17 13640904
    aniołek
    Poziom 12  
    Temat zamykam, dzięki.
REKLAMA