Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATmega8515 - LCD I2C bez pinów SDA i SCL

Nollie 19 Maj 2016 20:37 1014 11
  • #1 19 Maj 2016 20:37
    Nollie
    Poziom 4  

    Cześć,

    czy jest możliwe sterowanie wyświetlaczem LCD poprzez I2C jeżeli mikrokontroler nie posiada pinów SDA i SCL? Czy jest jakaś programowa implementacja, która pozwoliłaby mi podpiąć te wyprowadzenia do obojętnych portów mikrokontrolera, np. PE1 oraz PE2?


    Próbuję sterować wyświetlaczem LCD poprzez PCF8574T na mikrokontrolerze ATmega8515.
    Wcześniej robiłem to na ATmega8, wszystko było super, ale potrzebowałem więcej wyprowadzeń mikrokontrolera. Kupiłem więc ATmege8515, jednak nie zwróciłem uwagi na to, że nie ma ona w.w. wyprowadzeń...

    Jeżeli nie jest to możliwe czy znacie może jakiś sklep (lub sam model), w którym można zamówić mikrokontroler z rodziny ATmega w obudowie THT, który ma 35+ wyprowadzeń oraz byłaby w nim możliwość sterowania LCD za pomocą I2C?


    Z góry dziękuje za wszelką pomoc.

    0 11
  • Pomocny post
    #2 19 Maj 2016 20:41
    grko
    Poziom 33  

    Tak. Istnieje programowa implementacja I2C. Szukaj pod hasłem: "avr software I2C"

    0
  • #3 19 Maj 2016 20:48
    Nollie
    Poziom 4  

    Dzięki za szybką odpowiedź. Czy będzie to rozwiązanie przy którym również "stracę" tylko 2 porty mikrokontrolera?

    0
  • #4 19 Maj 2016 20:52
    grko
    Poziom 33  

    Stracisz 2 piny jednego portu (np PE1, PE2). Albo dwa piny różnych portów (jak wybierzesz np PA1, PB5). Programowa implementacja ma jeszcze to do siebie, że zazwyczaj jest wolniejsza bo robi się ją przez polling.

    0
  • #5 19 Maj 2016 21:49
    2675900
    Użytkownik usunął konto  
  • #6 20 Maj 2016 12:08
    Nollie
    Poziom 4  

    Dziękuje za pomoc. Rozumiem, że chodzi o tą bibliotekę:

    http://homepage.hispeed.ch/peterfleury/doxyge...-gcc-libraries/group__pfleury__ic2master.html

    Tylko mam pytanie, w jaki sposób użyć tego do sterowania LCD?
    Przy sprzętowym I2C używałem tych bibliotek:
    http://www.serasidis.gr/circuits/i2c_sensors/I2C_sensors.htm

    Czy mogę je w jakiś sposób ze sobą połączyć?
    W tym momencie próbuje zrobić to tak:
    W "i2cmaster.S" zmieniłem linie SDA i SCL na PE2 i PE1.

    Program, którym próbuje cokolwiek zrobić z LCD:


    (Może powinienem coś innego includować? Wg instrukcji twórcy tej biblioteki do sprzętowego I2C służy "i2cmaster.s" - This I2c library is implemented as a compact assembler software implementation of the I2C protocol which runs on any AVR (i2cmaster.S)), jednak przy includowaniu do projektu "i2cmaster.s", zwraca mi błąd.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Chciałem otrzymać jakąkolwiek reakcje od LCD (zgaszenie podświetlenia), jednak brak rezultatów.


    ^ z powyższym sobie poradziłem już, definicje tych bibliotek się gryzły. Jednak udaje mi się sterować tylko na PORTA:D. Kiedy próbuje ustawić na PORTE w "i2cmaster.s" nie chce się skompilować. Czy trzeba dodać jakąś definicje PORTE?

    0
  • #7 20 Maj 2016 12:31
    2675900
    Użytkownik usunął konto  
  • #8 20 Maj 2016 12:33
    Nollie
    Poziom 4  

    Masę błędów "DDRE undeclared"

    0
  • Pomocny post
    #9 20 Maj 2016 12:46
    2675900
    Użytkownik usunął konto  
  • #10 20 Maj 2016 12:53
    Nollie
    Poziom 4  

    W "i2cmaster.s" jest tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W moim mainie jest tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zwraca takie błędy:
    ATmega8515 - LCD I2C bez pinów SDA i SCL

    Kiedy zmieniam w deklaracjach z PORTE na PORTB działa normalnie i mogę sterować LCD. Jednak potrzebuje to zrobić na PORTE.

    0
  • Pomocny post
    #11 20 Maj 2016 12:57
    2675900
    Użytkownik usunął konto  
  • #12 21 Maj 2016 15:33
    Nollie
    Poziom 4  

    Dziękuje za pomoc, problem rozwiązany. Wystarczyło zmienić IDE z Eclipse na Codeblocksa.

    0