Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Transmisja I2C AVR <-> AVR

bubu2606 23 Dec 2011 11:31 2991 8
  • #1
    bubu2606
    Level 15  
    Witam,
    czy ktoś dysponuje programem pozwalającym na komunikację w obie strony po magistrali I2C pomiędzy dwoma atmegami?? sam zacząłem kabinować i znalazłem nastęujący kod, który niestety nie dizałą prawidłowo

    master
    Code: cpp
    Log in, to see the code


    slave

    Code: cpp
    Log in, to see the code



    schemat połaczeń
    Transmisja I2C AVR <-> AVR
  • #2
    tmf
    Moderator of Microcontroller designs
    Tak, w darmowych przykładach do mojej książki znajdziesz taki kod. Z drugiej strony zamiast bazować na gotowcach może warto poświęcić trochę czasu na naukę? Kiedyś i tak będzie trzeba to zrobić, bo nie zawsze są gotowce. A jak widać, nawet korzystanie z gotowców wymaga zrozumienia jak coś działa.
  • #3
    bubu2606
    Level 15  
    tylko ze próbowałem już kilka dni uruchomic i sam napisac na podstawie noty katalogowej i skończyło się na niczym:( wysyłał mi i odpbierał ale diody losowo się zapalały i zwątpiłem...

    Dodano po 4 [minuty]:

    próbowałem z Pana ksiązki i też mi nie chciało iść za bardzo... a tak ogólnie to bardzo fajna ksiązka:) dużo użytecznych informacji w niej jest :)
  • #4
    tmf
    Moderator of Microcontroller designs
    Przykłady z książki działają na 100%, jeśli masz z którymś problem to napisz co i jak, rozwiązanie się znajdzie. Spróbuj uruchomić połączenie etapami - najpierw potestuj mastera na AVR z jakimś sprzętowym urządzeniem I2C, jak to odpalisz będziesz miał 100% pewności, że master działa. Dopiero w kolejnym etapie odpalaj slave - bo to jest nieco trudniejsze. Masz jakiś debugger? Jeśli nie to wystawiaj stany po kolejnych etapach inicjalizacji slave i w slave na diodach jego stan. Będziesz wiedział w jakim stanie jest transmisja.
    Zmniejsz też rezystory podciągające do 2k2-4k7, przy 10k I2C może wymagać bardzo wolnego zegara.
  • #5
    bubu2606
    Level 15  
    a gdzieś są dostępne te przykłady w formie elektronicznej??
  • #6
    snnaap
    Level 25  
    Czemu nie spróbujesz napisać tego programu sam?
    W nocie katalogowej m32 (jak również w notach do innych uK) masz pięknie opisane jak korzystać z TWI.
    W nocie znajduje się dokładany opis jak skonfigurować master'a oraz slave'a.
    M32 daje naprawdę dużo możliwości w tym temacie.
    Uważam, że jak byś spróbował napisać własny program i pokazał na forum co napisałeś, znalazłoby się wiele osób które by Ci chciały pomóc.
    Akurat z programowaniem uK jest tak, że jak się nie nauczysz korzystać z not i liczysz tylko na przykłady które znajdziesz w necie to nigdy tak naprawdę nie nauczysz się ich programować.
    Bo nie jest filozofią znaleźć coś w necie, skopiować to i modlić się żeby działało.
    Należy to zrozumieć, bo to jest klucz do sukcesu.

    I nie uważaj, że w jakikolwiek sposób "potępiam" to co robisz i w jaki sposób to robisz.
    Ja próbuje tylko zachęcić Cię do lekkiego wysiłku i napisania programu własnymi siłami w oparciu o wskazówki kolegów z forum.
    Pozdrawiam
  • #7
    bubu2606
    Level 15  
    snnaap:) pisałem sam program na podstawie noty katalogowej i głupoty się działy z mikrokontrolerami dlatego poszukałem w Internecie jakchś przykładowych rozwiązań i te wydało mi się najlepsze jednak nie idzie i chciałem się dowiedzieć gdzie tkwi problem:) po świętach wrzucę swój program i czekam na opinie i pomoc:)
  • #9
    bubu2606
    Level 15  
    kod dla mastera

    Code: cpp
    Log in, to see the code


    dla slave

    Code: cpp
    Log in, to see the code


    dodam że pisane na podstawie przykładów z książki Pana Tomasza :)