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

[Bascom] Jak przesyłać dane między mikrokontrolerami Attiny13 i Attiny2313?

LemuRR 11 08 Wrz 2011 22:01 2948 10
REKLAMA
  • #1 9908839
    LemuRR 11
    Poziom 26  
    Posty: 1510
    Pomógł: 37
    Ocena: 447
    Witam, potrzebuję przesyłać dane pomiędzy kilkoma mikrokontrolerami (jeden baza, 4 odbiorniki w tym 2 z tym samym adresem) byłbym bardzo wdzięczny, jeżeli ktoś wytłumaczył by mi to na przykładowym kodzie, nadajnika/odbiornika. Czytałem już o I²C ale nie widzę możliwości komunikacji. Wykorzystane ma to być w zegarze, Matryca żarówkowa 2x5px, końcówka mocy na tyrystorach, dekoder np Attiny 2313
    (jeden adres na minuty, drugi na godziny) Wysyłanie danych z Attiny13 z RTC. Wszystko mniej więcej jasne, ale nie wiem jak dokonać komunikacji między wyżej wymienionymi mikrokontrolerami.
    Za wszelką pomoc będę bardzo wdzięczny.
  • REKLAMA
  • #2 9909182
    korrus666
    Poziom 40  
    Posty: 5219
    Pomógł: 584
    Ocena: 476
    Nie wiem czemu miałoby się nie dać zrobić komunikacji na I²C. Tylko że nie możesz mieć dwóch odbiorników z tym samym adresem ale to nie problem. Układ master byłby tylko jeden, reszta slave i każdy z innym adresem. Możesz przecież wysłać te same dane do tylu układów do ilu sobie życzysz.
  • #3 9909217
    retsef
    Poziom 14  
    Posty: 151
    Pomógł: 1
    Ocena: 13
    LemuRR 11, aby dobrze zaprojektować taką komunikacje trzeba wziąć pod uwage:
    - odległość
    - możliwe zakłócenia
    dopiero potem
    - możliwości sprzętowe np. jakie protokoły wspiera wybrany mikrokontroler, ile ma nóżek itd. Aczkolwiek ten etap jest ostatnio, bo dwa punkty wyżej mogą wymusić zmianę mikrokontrolera.

    Teraz tak u ciebie jest zegar, więc odległość niewielka, zakłócenia prawie żadne. Tutaj I2C nada się idealnie. Twój mikrokontroler ma wsparcie sprzętowe. Brać I2C śmiało.

    Alternatywnie możesz poczytać o SPI, ale w TINY może zabraknąć nóżek do obsługi innych urządzeń.

    Kody może jutro. Dobrej nocy.
  • REKLAMA
  • #4 9911003
    LemuRR 11
    Poziom 26  
    Posty: 1510
    Pomógł: 37
    Ocena: 447
    No właśnie odległość nie jest mała, Matryca żarówkowa na dachu, (lusterkowe 15W 60V) A układ zegarowy na dole, w portierni. Więc raczej zakłócenia mogą występować. Myślałem na RC5 i światłowodem (mam go dużo) albo 1wire i kabel antenowy. Które rozwiązanie jest lepsze ?
  • REKLAMA
  • #5 9911067
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    A może conieco poczytać o RS485? Też z założenia magistrala ta niejako jest przystosowana do:
    1. dużych odległości (kabel 3-żyłowy ekranowany starczy - 2 linie magistrali + masa dla bezpieczeństwa, ewentualnie jakoś sensownie zrobić optoizolację).
    2. wielu układów slave - programowo można zaimplementować bez problemu adresowanie
    3. wykorzystuje UART dostępny w T2313 sprzętowo
    Gdzieś w necie były swego czasu 2 części artykułu o RS485 właśnie w BASCOM i tam było mniej więcej podobnie - 1 master i 2 slave w przykładach:
    http://ep.com.pl/files/4539.pdf
    http://ep.com.pl/files/4556.pdf
  • REKLAMA
  • #6 9911110
    ljmp
    Poziom 14  
    Posty: 116
    Pomógł: 6
    Ocena: 9
    Witam.

    Nie widzę powodu aby nie zastosować sprzętowego USART'a w trybie asynchronicznym zamiast I2C, który ani nie pracuje przy dużych prędkościach ani nie obsługuje dużych dystansów. Mnie osobiście udało się skomunikować dwie ATmegi (jedną 32 a jedną 8) na odległości 100m zwykłym kablem telefonicznym przy transferze 500kbod (fOSC=8Mhz oraz UBRR=0) bez gubienia żadnych pakietów. Co prawda ATtiny2313 ma nieco uboższy moduł USART, bo nie ma na przykład sprzętowej obsługi komunikacji wieloprocesorowej, ale wszystko można nadrobićw programie.

    zdravim
  • #7 9911140
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ljmp napisał:
    Mnie osobiście udało się skomunikować dwie ATmegi (jedną 32 a jedną 8) na odległości 100m zwykłym kablem telefonicznym przy transferze 500kbod


    Masz zupełną rację, "udało ci się". Ale to że tobie się to udało, nie oznacza, że jest to powtarzalne i, że każdemu następnemu a szczególnie początkującemu się uda. Warto zwrócić uwagę na to co sam pisałeś na początku swojego postu.

    A pisałeś, że I2C nie zostało stworzone do komunikacji na tak dużych dystansach. Tymczasem, już nie doczytał kolega, że RS232 również nie zostało stworzone do komunikacji na tak dużych dystansach jak 100M. Owszem, standard ten pozwala na dużo większe odległości niż I2C, zatem możemy mówić o kilku - kilkunastu metrach.

    Dlatego proponuję posłuchać porad kolegi piotrva - bo właśnie tak jak on pisze i podaje przykłady - do transmisji danych na takie odległości jak 100m ale również duuuuużo większe - przydatny to może być np. RS485.
  • #8 9911664
    LemuRR 11
    Poziom 26  
    Posty: 1510
    Pomógł: 37
    Ocena: 447
    W temacie biegły nie jestem, kod z EP jest dla mnie tak jakby niezrozumiały...
    O ile już wiem jak sterować PCF8583 to reszty nie czaję.
    Głównie chodzi mi o to żeby master (Mega8) wysyłał do slave1 (Mega16) godziny
    a do slave2 (Mega16) minuty. Najlepiej aby wysyłane i odbierane były (a raczej konwertowane na dziesiętne) cyfry w systemie dziesiętnym.
    bardzo bym prosił o kawałek kodu , w miarę prostego który przynajmniej
    naprowadził by mnie na właściwą drogę (najlepiej aby rozwiązywał problem)
    W zamiar za pomoc oferuję wszystkie swoje punkty (nie wspominając o podziękowanie, przez wciśnięcie "pomógł")
    Byłbym bardzo wdzięczny za ewentualną pomoc, bo nie mam zbyt wiele czasu na zrealizowanie tego projektu, a sam tego raczej szybko nie pojmę.
  • #10 9912239
    piotrva
    VIP Zasłużony dla elektroda
    Posty: 6409
    Pomógł: 625
    Ocena: 735
    Niech kolega nie liczy na gotowca i nie oferuje marnych punktów, bo na te nikt się nie połakomi.
    Podałem linki z opisem rozwiązania, prawie gotowce, może warto zgłębić te artykuły i się nieco douczyć?

Podsumowanie tematu

✨ W dyskusji poruszono problem przesyłania danych między mikrokontrolerami Attiny13 i Attiny2313 w kontekście projektu zegara z matrycą żarówkową. Użytkownik poszukiwał sposobu na komunikację, wskazując na I²C, ale napotkał trudności z dwoma odbiornikami o tym samym adresie. Uczestnicy sugerowali różne metody komunikacji, w tym I²C, RS485 oraz USART w trybie asynchronicznym, podkreślając, że I²C nie jest odpowiednie na duże odległości. Zasugerowano również użycie światłowodu lub 1-Wire w przypadku zakłóceń. Użytkownik prosił o przykładowy kod do realizacji komunikacji, jednak spotkał się z uwagami, że powinien samodzielnie zgłębić temat.
REKLAMA