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

[avr-gcc] I2C -> Master uC + Slave uC

gothye 18 Sie 2009 16:49 3632 12
REKLAMA
  • #1 6906250
    gothye
    Poziom 33  
    witam
    jestem zmuszony wykonać komunikacje na i2c miedzy dwoma uC, wiec "programowego" mastera już mam z strony http://mikrokontrolery.net/avr_c_09.htm ,niewiem jednak jak się zabrać za slave ,napewno będę chciał wykorzystać przerwanie Int0 ,miał już ktoś do czynienia z slave i2c lecz wykonanym programowo,bez wbudowanego TWI :?:
  • REKLAMA
  • REKLAMA
  • #3 6908583
    gothye
    Poziom 33  
    Może ktoś inny się wypowie ?
  • REKLAMA
  • REKLAMA
  • #5 6909372
    gothye
    Poziom 33  
    Gdyby to było takie proste to pewnie bym tak zrobił i nie pisał bym w pierwszym poscie że jestem do tego zmuszony :(
  • #7 6917084
    gothye
    Poziom 33  
    mam 2 porty procesora które muszę wykorzystać jako interfeis i2c w trybie slave ,czy ktoś wie jak się za to zabrać :?: zna ktoś dobry analizator i2c na PC :?:
  • #8 6917236
    szelus
    Poziom 34  
    A jaki właściwie masz ten mikrokontroler? Jeżeli coś z nowszych (mega88 itp), pozwalających na włączenie przerwań z dowolnego pinu, to widzę jeszcze szansę (dla trybu standard - 100kb/s). Natomiast nie wydaje mi się, aby dało się to zrobić całkowicie w polling-u. Jak byś to sobie wyobrażał, jeżeli procesor ma jeszcze czymś sie zajmować?
    Zrobienie programowego mastera i2c jest banalne, ale slave-a już zupełnie nie. Dlatego ciężko coś wyszperać w sieci, bo nikt tego raczej nie robi.
  • #9 6917277
    gothye
    Poziom 33  
    nie oczekuje dużej przepustowości (odczyt 8 bajtów /sekunde ) programowo nie możliwe ? a widziałeś sample dołączone do bascom ? działają bardzo dobrze ,ale Ja nie potrzebuje bascoma tylko C :(
  • #10 6917354
    szelus
    Poziom 34  
    Nie, nie korzystam z BASCOM-a. Ale jeżeli to demo, ktore nic innego nie robi, to dużo prościej. Zakładam jednak, że twój procesor coś jeszcze robi, jeżeli nie możesz użyć sprzętowego TWI.

    Jakoś nie wierzę, abyś znalazł stabilnie działającego gotowca - oczywiście, mogę się mylić. Moim zdaniem, musisz dopasować rozwiązanie do Twojej konkretnej sytuacji. Jeżeli przestaniesz być taki tajemniczy ;) i odpowiesz na kilka podstawowych pytań to mogę spróbować Ci coś podpowiedzieć.

    1. Z jaką prędkością zegara będzie działał master na tej linii?
    2. Masz w swoim procku dostępne "line change interrupt"?
    3. Jeżeli nie, to czy możesz wykorzystać INT0 lub INT1?
    4. Masz niewykorzystany timer?
    5. Jeżeli odpowiedź na trzy powyższe pytanie brzmi nie, to jak bardzo obciążające dla procesora jest to, co robi poza obsługą tego i2c?

    Edit: ups, doczytałem teraz, że chcesz użyć int0. To upraszcza trochę sprawę, zwłaszcza, jeżeli nie ma innych slave-wów. A wogóle, jeżeli to ma być komunikacja pomiędzy dwoma Twoimi procesorami, to musi być i2c?
  • #11 6918265
    gothye
    Poziom 33  
    1.Master 16Mhz
    2.Nie
    3.Tak
    4.2 wolne timer 8bit

    Otórz chcę za pomoca i2c programowego podłączyć 2uC miedzy sobą ,tworząc interfeis działający na zasadzie interfeisu wiegand ,i2c ma chodzić z niską częstotliwością max 30-40khz aby udało się uzyskać odległość 50mb max .
  • #12 6918386
    janbernat
    Poziom 38  
    "zna ktoś dobry analizator i2c na PC"?
    Atom1477 coś takiego zrobił.
    Nawet niedawno to oferował na sprzedaż.
    A czy dobry nie wiem, jeszcze nie mam.
    Ale można Go spytać.

    Dodano po 47 [minuty]:

    " max 30-40khz aby udało się uzyskać odległość 50mb max ".
    W specyfikacji standardu I2C podają że max pojemność linii może być 400pF.
    Na 50m?
  • #13 6919531
    szelus
    Poziom 34  
    janbernat ma całkowitą rację. i2c to interfejs do komunikacji lokalnej, generalnie poniżej 1m.
    Przy Twoich wymaganiach, to nie kombinowałbym, tylko mając do dyspozycji timer i przerwanie int0, zrobiłbym programowego UART-a i RS485.
REKLAMA