Skocz do zawartości

[Bascom] Brak komunikacji I2C pomiędzy Attiny2313 a Atmegą16


Paweł_1985

Pomocna odpowiedź

Na podstawie poniższego artykułu wykonałem układ mający za zadanie realizować komunikację po I2C. Porty SDA i SCL obu mikroporocesorów połączyłem i zamonotwałem rezytory podciągające 4,7k. Komunikację po I2C realizuję wg

artykułu

Dodatkowo mikroporocesor Atmega16 posiada wyświetlacz LCD oraz klawiaturę4x4, natomiast Attiny2313 posiada nadajnikRC5. Układ ma zadanie przekazywać kod z Atmegi do Attiny celem wysłania go do robota. Niestety układ nie działa i nie mam pojęcia czemu. Proszę o pomoc, poniżej zamieszczam kod programu.

$regfile = "ATtiny2313.dat"
$crystal = 8000000


Config Pinb.3 = Output



Dim Togbit As Byte , Command As Byte , Address As Byte
Dim A As Byte
Togbit = 0
Address = 0

Config Sda = Portb.5
Config Scl = Portb.7

Do
I2cinit
I2cstart
I2crbyte Command , Nack
I2cstop

Gosub Wyslij

Loop
End

Wyslij:
A = 0
Do
Rc5send Togbit , Address , Command
Incr A
Loop Until A = 7
Return
$regfile = "m16def.dat"
$crystal = 8000000


Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0.
Config Kbd = Portd , Delay = 100

Config Scl = Portc.0
Config Sda = Portc.1


Dim A As Byte


Cls
Lcd "TEST"
I2cinit
Do
A = Getkbd()
Gosub Wyslij
Cls
Lcd A

Loop
End

Wyslij:
I2cstart
I2cwbyte A
I2cstop
Return
Link do komentarza
Share on other sites

Nie wiem jak to jest przy komunikacji procesorów, ale gdy łączyłem procesor z przetwornikiem analogowo cyfrowym to zawsze musiałem podawać adres układu przed wysłaniem / odczytaniem danego bajtu.

Link do komentarza
Share on other sites

Oj nie wiem czy to zrobisz programowo, tak łatwo. Jest chyba specjalna biblioteka do tego, ale nie wiem czy nie wymaga aby oba procesory posiadały sprzętowe I²C. A ATTiny2313, chyba nie ma modułu USI/TWI.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Mam jeszcze pytanie, czy korzystając ze sprzętowego I2C w procesorach AVR trzeba wykorzystywać wyjścia wg noty katalogowej podpisane jako SDA i SCL czy występuje dowolność w wyborze wyjść (konfigurowanych za pomocą CONFIG SDA oraz CONFIG SCL)?

Link do komentarza
Share on other sites

Witam,
Tak Paweł_1985 można konfigurować wyjścia I2C

Np.:

Config SCL = Portb.2

Config SDA = Portb.1

__________

Komentarz dodany przez: Sabre

Spójrz na datę ostatniego postu, nim następnym razem zrobisz taki odkop.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.