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

Jak ustawić adresy układów w komunikacji I2C między mikrokontrolerami?

zibi11 10 Lut 2007 22:09 1962 14
REKLAMA
  • #1 3554211
    zibi11
    Poziom 19  
    Posty: 537
    Pomógł: 1
    Ocena: 30
    Witajcie może ma kto pomysł na komunikacje między mikrokontrolerami i2c
    jak rozwiązać problem adresu układów??
    może jakiś przykład???
  • REKLAMA
  • #3 3554530
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Zrób z jednego slave'a o jakimś ustalonym adresie i po problemie.
  • REKLAMA
  • #4 3557044
    zibi11
    Poziom 19  
    Posty: 537
    Pomógł: 1
    Ocena: 30
    trzy avry w bascomie jeden master dwa slavy

    dwa attiny 2313 i jeden atmega 8515

    Zrobiłem w atmedze 8515
    $regfile = "m8515.dat"
    $crystal = 16000000


    Config Lcdpin = Pin , Db4 = Porta.1 , Db5 = Porta.5 , Db6 = Porta.4 , Db7 = Porta.3 , E = Porta.2 , Rs = Porta.0
    'konfiguracja sprzŕtowa I2C

    Config Spi = Hard , Master = Yes
    Dim Sx As Byte


    dim a as byte
    config spi =hard ,master=yes

    a=5

    do
    spiinit
    spiout a ,5
    wait 5
    Loop


    W attiny 2313
    $regfile = "attiny2313.dat"
    $crystal = 16000000


    Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.0 , Db6 = Portd.6 , Db7 = Portb.4 , E = Portb.3 , Rs = Portb.2


    config spi =hard , master=no
    Config Lcd = 16 * 2
    Dim A As Byte
    do
    cls
    lcd "ssss "
    wait 1
    spiinit
    spiin a ,5
    lowerline
    lcd "aaaaa :";a
    wait 2
    Loop

    niestety nie działa

    Połączyłem układy clock mosi i miso
    niec nie robiłem z ss


    Post był raportowany.

    Pisanie postu pod postem.
    Należy używać przycisku ZMIEŃ.
    Scaliłem dwa posty. [hefid]
  • #5 3557492
    redart
    Poziom 23  
    Posty: 529
    Pomógł: 51
    Ocena: 30
    Z tego co widzę, to uruchomiłeś interfejs SPI a piszesz coś o I²C...
    O co chodzi? Jeśli ma to być SPI to zajrzyj do helpa Bascoma, wpisz 'config spi' i przeczytaj. Jest tam odnośnik (podkreślony, na zielono) do "sprzętowy interfejs spi". W tym odnośniku jest wszystko, włącznie ze schematami.

    W masterze SS do plusa, a w slavie do masy.
    Pzdr.
  • REKLAMA
  • #6 3557502
    zibi11
    Poziom 19  
    Posty: 537
    Pomógł: 1
    Ocena: 30
    Jakoś może najpierw chce zrobić na spi
  • REKLAMA
  • #8 3557529
    Batmanmen
    Poziom 15  
    Posty: 205
    Pomógł: 9
    Ocena: 4
    Człowieku o czym ty mówisz?
    Cytat:
    Połączyłem układy clock mosi i miso
    niec nie robiłem z ss

    to ty chcesz podłączyć sie przez i2c czy SPI w końcu?
    Chciałem ci powiedzieć też, że attiny2313 nie ma wbudowanego ani I2C(TWI) ani SPI(nie mylic z programowaniem na SPI) i musisz wiedzieć, że atmega8515 też nie ma wbudowanego TWI, ale ma SPI.
  • #9 3557943
    zibi11
    Poziom 19  
    Posty: 537
    Pomógł: 1
    Ocena: 30
    A może spi=soft dla attiny???
  • #10 3558159
    Batmanmen
    Poziom 15  
    Posty: 205
    Pomógł: 9
    Ocena: 4
    Problem jest taki, ze przedstawione uC (attiny2313 i atmega8515) nie mają wspólnych interfejsów, dzięki którym można by połączyć te 3 uC.

    Najlepszym moim zdaniem rozwiązanie była by symulacja programowa SPI na attiny2313.

    Zastanawiałem sie czy nie lepiej było by tu użyć UARTu. W Hostcie poświęcić dwa piny dowolnego portu a w attiny2313 jeden pin, po to by można było kontrolować który tiny będzie rozmawiał z Hostem(atmega8515). Ale jest jeden problem, połączenia kabli pomiędzy uC musiały by być bezpośrednio połączone ze sobą, tzn w obydwóch attiny Txt było by połączone bezpośrenio ze sobą, co by dobrze nie wpływało na transmisję. Bezpośrednie połączenie ze sobą Rxd nie ma żadnego znaczenia bo te piny sa w stanie wysokiej impendacji. Chyba, że UART ma wewnętrzne podciąganie rezystorem do V++, to wtedy jest możliwa komunikacja w taki sposób.
  • #11 3558184
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Przecież Attiny2313 ma USI, który może pracować zarówno jako SPI i I2C, możesz śmiało łączyć za pomocą SPI, tylko pamiętaj że tiny2313 nie ma pinu SS, można go emulować programowo, albo napisać transmisję z adresowaniem.
  • #13 3560096
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    No to najwyższy czas przeczytać pdfa od tiny2313 i zrobić to samemu
  • #14 3565628
    ksz
    Poziom 15  
    Posty: 113
    Pomógł: 12
    A testował ktoś z Was Multi Processor Communication Mode w USART..? Może to jest rozwiązanie problemu autora wątku?
  • #15 3566067
    McRancor
    VIP Zasłużony dla elektroda
    Posty: 5326
    Pomógł: 479
    Ocena: 124
    Rozwiązań jest kilka, problem z takim które działa w bascomie. MPCM bascom nie obsługuje (oczywiście nie obsługuje to znaczy że nia da się tego opędzić jednym poleceniem, trzeba zrobić to na piechotę...)

Podsumowanie tematu

✨ Dyskusja dotyczy problemu ustawiania adresów układów w komunikacji I2C między mikrokontrolerami, zwłaszcza w kontekście trzech mikrokontrolerów AVR: dwóch ATtiny2313 i jednego ATmega8515, programowanych w Bascomie. Autor początkowo myli interfejsy SPI i I2C, implementując komunikację SPI zamiast I2C, co zostało zauważone przez uczestników. ATtiny2313 posiada interfejs USI, który może działać zarówno jako SPI, jak i I2C, jednak brak pinu SS wymaga emulacji programowej lub implementacji transmisji z adresowaniem. ATmega8515 i ATtiny2313 nie mają wbudowanego TWI (I2C), ale mają SPI, co komplikuje bezpośrednią komunikację I2C między nimi. Proponowano symulację SPI programowego na ATtiny2313 lub rozważenie komunikacji UART z odpowiednim sterowaniem pinów. Wskazano również na trudności z obsługą Multi Processor Communication Mode (MPCM) w Bascomie, co wymaga ręcznej implementacji. Udostępniono link do polskiego materiału dotyczącego komunikacji oraz zasugerowano lekturę dokumentacji technicznej ATtiny2313 w celu samodzielnej implementacji USI. Podsumowując, problem adresacji w I2C między tymi mikrokontrolerami wymaga uwzględnienia ograniczeń sprzętowych i programowych, a rozwiązaniem może być programowa emulacja protokołu lub zastosowanie innego interfejsu komunikacyjnego.
Wygenerowane przez model językowy.
REKLAMA