Skocz do zawartości
Paweł_1985

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

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

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

Faktycznie, poczytałem trochę i z tego co się dowiedziałem, tak jak pisze BlackJack, Attiny2313 nie posiada modułu USI/TWI.

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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!

Gość
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...