Skocz do zawartości

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


Pomocna odpowiedź

Napisano

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
  • 3 tygodnie później...

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.

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
  • 3 tygodnie później...

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)?

  • 3 lat(a) później...

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.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...