logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

ATmega8515 - Sterowanie LCD I2C bez dedykowanych pinów SDA i SCL

Nollie 19 Maj 2016 20:37 1494 11
REKLAMA
  • #1 15686001
    Nollie
    Poziom 9  
    Posty: 14
    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.
  • REKLAMA
  • Pomocny post
    #2 15686011
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    Tak. Istnieje programowa implementacja I2C. Szukaj pod hasłem: "avr software I2C"
  • #3 15686030
    Nollie
    Poziom 9  
    Posty: 14
    Dzięki za szybką odpowiedź. Czy będzie to rozwiązanie przy którym również "stracę" tylko 2 porty mikrokontrolera?
  • REKLAMA
  • #4 15686044
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    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.
  • REKLAMA
  • #5 15686196
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #6 15687158
    Nollie
    Poziom 9  
    Posty: 14
    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 / 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?
  • #7 15687194
    Konto nie istnieje
    Konto nie istnieje  
  • #8 15687199
    Nollie
    Poziom 9  
    Posty: 14
    Masę błędów "DDRE undeclared"
  • Pomocny post
    #9 15687226
    Konto nie istnieje
    Konto nie istnieje  
  • #10 15687236
    Nollie
    Poziom 9  
    Posty: 14
    W "i2cmaster.s" jest tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W moim mainie jest tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zwraca takie błędy:
    ATmega8515 - Sterowanie LCD I2C bez dedykowanych 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.
  • Pomocny post
    #11 15687247
    Konto nie istnieje
    Konto nie istnieje  
  • #12 15689685
    Nollie
    Poziom 9  
    Posty: 14
    Dziękuje za pomoc, problem rozwiązany. Wystarczyło zmienić IDE z Eclipse na Codeblocksa.

Podsumowanie tematu

✨ Użytkownik pyta o możliwość sterowania wyświetlaczem LCD przez I2C na mikrokontrolerze ATmega8515, który nie ma dedykowanych pinów SDA i SCL. Odpowiedzi sugerują, że istnieje programowa implementacja I2C, która pozwala na przypisanie tych sygnałów do innych portów, takich jak PE1 i PE2. Wskazano na bibliotekę Petera Fleury jako najlepszą opcję do implementacji I2C. Użytkownik napotkał problemy z błędami kompilacji związanymi z definicjami portów, które zostały rozwiązane przez zmianę środowiska IDE. Ostatecznie udało się skonfigurować projekt, aby działał poprawnie z portem E.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA