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

atmega - Zapis danych w SRAM

15 Lip 2012 12:49 2020 14
  • Poziom 13  
    Witam

    W pierwszej kolejności proszę o trochę wyrozumiałości, wszystko co wiem o elektronice nauczyłem się z internetu i dzięki Wam ;)

    Nauczyłem się już pisać wsady w Bascom, i zrobiłem kilka projektów na atmega,
    mój nowy projekt wykorzystuje kilka mikrokontrolerow. Każdy z nich odpowiada za inne czynności, opracowałem już sposób komunikacji miedzy nimi i wszystko działa super. Teraz chciałbym nauczyć się obsługiwać dodatkowy ram. Każdy z mikrokontrolerow wykonuje inne czynności i żeby wzajemnie się sprawnie komunikowały bez zatrzymywania się chciałbym wykorzystać do tego ram.
    Dokładnie chodzi mi o to ze z jednego mikrokontrolera zostanie wysłany komunikat a kolejny odbierze go jak będzie miał na to czas. Kwestia w tym ze kompletnie nie wiem jak zapisać informacje na kości ram i jak ja odczytać. Zna ktoś jakieś materiały z których mógłbym się dowiedzieć jak to wygląda??
    Dzięki.
  • Relpol przekaźniki
  • Poziom 26  
    nie sensowniej zrobić sobie programowy bufor w każdym z procków?
  • Relpol przekaźniki
  • Poziom 13  
    Właśnie teraz siedzę i myślę nad tym, narazi mam pomysł zrobienia jednego procka jako coś na styl pamięci operacyjnej, zbiera wszystkie komunikaty i je później rozsyła. Praktycznie już mam wsad napisany.

    No a tak z innej bajki, da się zrobić coś takiego żeby procek wykonywał 2 czynności jednocześnie. Nie wiem to się robi funkcja gosub?? Myślę czy da się tak to zrobić zęby odbierał i wysyłał w jednym czasie. Żeby zapisywał informacje do pamięci (w postaci long) i automatycznie wysyłał inne, te które ma już zapisane. Ale nie jestem przekonany czy to wykonalne.
  • Poziom 26  
    możesz się najwyżej przełączać między zadaniami. Wyjątek stanowią chyba tylko hardware'owe timery, one mogą generować sygnał na swoich wyjściach niezależnie od programu.

    pzdr.
  • Poziom 13  
    No właśnie tak myślałem, że muszę wykonać jedno zadanie i następnie może wykonywać kolejne. Wiec zostaje mi opcja z moim pomysłem. Pobieranie danych a gdy nikt nie nadaje wysyłanie do adresata.
  • Poziom 26  
    nie wiem ile danych chcesz przesyłać i jakie budujesz urządzenie, ale czy konieczny jest dodatkowy procek zarządzający komunikacją?
    Nie lepiej w przerwaniu odbiorczym ładować sobie bufor a odczytywać go pod koniec głównego procesu?

    pzdr.
  • Poziom 15  
    Coś mi się wydaje, że wszystkie Twoje zadania łatwiej byłoby zrealizować w jednym procku niż realizować taką komunikację. Ostatnio komuś to wyjaśniano na forum. Opisz dokładniej co chcesz zrobić.
  • Poziom 13  
    Jeśli twierdzisz że da się wysterować

    8 termometrów na ntc
    4 woltomierze
    2 amperomierze
    7 przekaźników
    2 wyświetlacze Led 7x2
    2 wyświetlacze Led cyfrowe [8888]
    1 wyświetlacz Lcd 16*2
    2 wyświetlacze Led (linijka 10)
    na jednym procku to nie wiem jak to zrobić.

    Tak poza tym właśnie mogę się pochwalić że zrobiłem procek działający jak pamięć operacyjna. Odbiera wszystkie komunikaty i szereguje je w 24 slotach a następnie jak nikt nie nadaje przesyła do odbiorcy. Zapełnienie 24 slotów kodem mojego pomysłu zajmuje około 1s i tyle samo wysłanie do adresatów.
    Chyba ze adresat robi coś innego to wysyła zawartość z następnego slotu a do tamtego wraca później.
    Zazwyczaj na bieżąco jak nikt nie nadaje rozsyła zawartość.

    Mój kod to
    [xxxxxx:xxxxxx]
    np:211789:110101
    co oznacza
    21 czyli wyświetlacz wartości volt Led[8888]
    1789 czyli 17,89V będzie wyświetlone
    110101 to adres procka obsługującego wszystkie wyświetlacze Led

    Tak to rozkminilem :D
  • Poziom 30  
    No dobra jeden wielonóżkowiec by wystarczył jak by poszukał ale na dwóch to już spokojnie część badającą czyli woltomierze i amperomierze oraz część wyświetlaczy na jednym procku, a termometry i przekaźniki na drugim. To co będziesz między prockami przesyłał to tylko sygnały dla wyświetlacza i wartości prądu (napięcia), a do tego nie potrzebny Ci żadna dodatkowa pamięć. Główna część logiczna i zarządzająca to termometry i przekaźniki i w każdej chwili może sobie pobrać z drugiego proca stan napięcia czy prądu, a wysłanie zmiennej na wyświetlacz to też dużo czasu nie zajmie.
  • VIP Zasłużony dla elektroda
    huzzar.ts napisał:
    Jeśli twierdzisz że da się wysterować

    8 termometrów na ntc
    4 woltomierze
    2 amperomierze
    7 przekaźników
    2 wyświetlacze Led 7x2
    2 wyświetlacze Led cyfrowe [8888]
    1 wyświetlacz Lcd 16*2
    2 wyświetlacze Led (linijka 10)
    na jednym procku to nie wiem jak to zrobić.
    Zaraz z tego wyjdzie, że od każdego zadania jest jeden mikrokontroler... ;)
    Tymczasem warto użyć dodatkowych układów w rodzaju rejestrów przesuwnych i zatrzasków. Co do amperomierzy, to są takie śliczne układy Allegro MicroSystems.
    Do tego jakieś zewnętrzne ADC na woltomierz.
    Przy odpowiednim algorytmie w asemblerze procesor będzie jeszcze ziewał.
  • Poziom 13  
    woltomierz doszedł jeszcze jeden hehe teraz jest ich 5 :D
    wiem ze wydaje się to mega rozbudowane itp, ale prawdę mówiąc aż tak źle nie jest, np: jedna atmega16 odpowiada za wszystkie pomiary, napięcia, prądu oraz sprawdza czy przekaźniki nie są uszkodzone, czyli jak jakiś jest załączony to sprawdza czy faktycznie zasilanie jakie miał przepościć jest podane. (można by zapytać dlaczego i po co, a no po to bo już parę razy popaliłem sterowniki przez przekaźnik) Kolejny to ten już wcześniej opisywany prze ze mnie "ram", przerzuca informacje pomiędzy prockami w układzie oraz komunikuje się z płyta główna (całkowicie inny układ). Czyli odpowiada za komunikacje. Teraz 2*atmega8 jeden to 6 pin wyświetlacz, 8 pin komunikacja i 8 pinów do sterowania linijkami led, drugi to 8 pinow komunikacja, 8 pinow do 2*(7*5 led) i 6 pinow do sterowania 2*(8888 led)
    do tego jeszcze jeden procek główny, odpowiada za pomiar temperatur, przekaźniki, sterowanie potencjometrem, testy połączeń (czy wszystkie taśmy są podpięte do płytki oraz te na płytce), sprawdza 3 wentylatory czy się obracają i wykrywa inne uszkodzenia układu.
    wiec :
    2 x mega32 główny i "ram"
    1 x mega16 multimetr
    2 x mega8 wyświetlanie
    wszystko to około 40 zl wiec ani koszty nie są wielkie a wsady się podszkoli w pisaniu ;)

    założenie jest takie ze chce zrobić coś co będzie sprawnie działać a jak coś się skaszani to samo znajdzie przyczynę i mi o tym powie.
    PS. Poza tym mam dużo czasu i na czymś trzeba się uczyć ;)
  • Poziom 30  
    8 pinów komunikacja ?? - co to za standard i czy to przypadkiem nie marnotrawienie jakże potrzebnych w tym przypadku pinów... ?
  • VIP Zasłużony dla elektroda
    Każdy pomysł jest dobry, tylko czy już nie zakrawamy o tematykę działu DYI - Niedokończone ? ;)
    Moje pytanie brzmi: Na czym właściwie polega problem ? Czy dane dotyczące języka programowania to jakiś sekret ? Takie rzeczy trzeba ujmować w temacie dla porządku.
  • Moderator Mikrokontrolery Projektowanie
    huzzar.ts napisał:
    woltomierz doszedł jeszcze jeden hehe teraz jest ich 5 :D
    wiem ze wydaje się to mega rozbudowane itp, ale prawdę mówiąc aż tak źle nie jest, np: jedna atmega16 odpowiada za wszystkie pomiary, napięcia, prądu oraz sprawdza czy przekaźniki nie są uszkodzone, czyli jak jakiś jest załączony to sprawdza czy faktycznie zasilanie jakie miał przepościć jest podane. (można by zapytać dlaczego i po co, a no po to bo już parę razy popaliłem sterowniki przez przekaźnik) Kolejny to ten już wcześniej opisywany prze ze mnie "ram", przerzuca informacje pomiędzy prockami w układzie oraz komunikuje się z płyta główna (całkowicie inny układ). Czyli odpowiada za komunikacje. Teraz 2*atmega8 jeden to 6 pin wyświetlacz, 8 pin komunikacja i 8 pinów do sterowania linijkami led, drugi to 8 pinow komunikacja, 8 pinow do 2*(7*5 led) i 6 pinow do sterowania 2*(8888 led)
    do tego jeszcze jeden procek główny, odpowiada za pomiar temperatur, przekaźniki, sterowanie potencjometrem, testy połączeń (czy wszystkie taśmy są podpięte do płytki oraz te na płytce), sprawdza 3 wentylatory czy się obracają i wykrywa inne uszkodzenia układu.
    wiec :
    2 x mega32 główny i "ram"
    1 x mega16 multimetr
    2 x mega8 wyświetlanie
    wszystko to około 40 zl wiec ani koszty nie są wielkie a wsady się podszkoli w pisaniu ;)

    założenie jest takie ze chce zrobić coś co będzie sprawnie działać a jak coś się skaszani to samo znajdzie przyczynę i mi o tym powie.
    PS. Poza tym mam dużo czasu i na czymś trzeba się uczyć ;)


    Najpierw zrób coś co działa :) Bo niestety często jest tak, że zbyt ambitne założenia powodują, że projekt nigdy nie jest zrealizowany.
    Poza tym to co opisałeś spokojnie można upchnąć w jednym procku, co upraszcza zadanie. Większość wymienionych przez ciebie rzeczy robi się całkowicie sprzętowo. Od tego procek ma przerwania i układy peryferyjne. Nie musi ciągle czegoś sprawdzać, wystarczy, że tak zaprojektujesz podłączenie przekaźnika, że sygnał zwrotny z niego wchodzi na pin IRQ i po sprawie. Pomiary analogowe ze względu na dostępność tylko jednego ADC i tak robisz w sposób multipleksowany, więc czy mierzysz jedno napięcie, czy 8 to zasadniczo obciążenie MCU jest takie samo. Sterowanie LED - to koło 1-3% czasu MCU - robisz multipleksowanie i MCU nawet nie wie, że pracuje. Sprawdzanie czy wentylatory się obracają - masz jakiś sygnał zwrotny, np. z hallotronu? Podajesz go na wejście ICP procka, timer + przerwanie overflow i sprawdzasz rejestry ICR, czy nastąpiło zdarzenie. Raptem raz na np. kilka ms, obciążenie MCU żadne.
    Także przemyśl swoją koncepcję bo IMHO ładujesz się zupełnie niepotrzebnie w skomplikowany układ. A jak 3 MCU będą żądały dostępu do wspólnych danych to konieczność wprowadzenia np. mutexów, czy semaforów zniweluje wszelkie zyski.
  • Poziom 13  
    Każdy ma swoje zdanie, każdy własną wizje i każdy inne umiejętności. Ja dopiero się uczę tak naprawdę elektroniki i chce wszystko zrobić na podstawie własnego pomysłu, czy mi się uda, nie wiem. Ale oczywiście dziękuje za rady i wszystkie wpisy które na pewno wpłyną na mój projekt.

    Pozdrawiam