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

atmega16a i pcf8574 - brak komunikacji przy zasilaniu 3,2V, ostrzeżenia avr-gcc

arturromarr 13 Gru 2013 09:55 2454 11
REKLAMA
  • #1 13055537
    arturromarr
    Poziom 17  
    Witam,
    Postanowiłem zapytać się Was bo już błądzę jak we mgle.
    Zaskoczył mnie kłopot z obsługą prostego ekspandera i2c pcf8574.
    Kilkukrotnie już korzystałem z tej kości gdy miałem oddalone przyciski czy diody świecące od procka i myślałem że temat mam przerobiony.
    Tymczasem w ostatnim projekcie za nic nie mogę się skomunikować z układem.
    Wcześniej korzystałem z mikrokontrolerów 16, 32, itd. przy zasilaniu 5V, teraz mam atmega 16A na 3,2V, czy to może robić jakąś różnicę, (obsługa i2c sprzętowa)?
    Zaskoczyło mnie też że jak w makefile mam podany właściwy procek czyli 16a to pokazuje mi ostrzeżenia:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Natomiast jeśli podam 16 to kompiluje się dobrze i przerwanie się wykonuje.
    Czy są jakieś różnice w obsłudze przerwań zew. czy portu i2c pomiędzy układami atmega 16 a atmega 16a?
  • REKLAMA
  • #3 13055585
    mickpr
    Poziom 39  
    arturromarr napisał:
    Czy są jakieś różnice w obsłudze przerwań zew. czy portu i2c pomiędzy układami atmega 16 a atmega 16a?
    Wg http://www.atmel.com/Images/doc8163.pdf nie ma.
    Jaki toolchain używasz?
    Pokaż kod.
    W definicji wektorów w iom16a.h brak jest SIG_INTERRUPTx - (są zamienione na _INTx_vect).
  • REKLAMA
  • #4 13055674
    arturromarr
    Poziom 17  
    Czyli zamiast dobrze rozumiem że zamiast SIGNAL piszę się teraz:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    CEI, CLI normalnie?

    Jak to działa że dla 16 i 16a wymaga innej składni?

    To pewnie nie ma związku z moimi problemami z I2C?
  • #5 13055696
    mickpr
    Poziom 39  
    arturromarr napisał:
    Jak to działa że dla 16 i 16a wymaga innej składni?
    Po prostu w pewnym momencie Atmel przeszedł na nową nomenklaturę w nazewnictwie - bodajże w związku z wymogami stawianymi przez nowe gcc - i tyle.
    Stara wersja (na Atmega 16) będzie bez problemu działać - wszak zmian które mogły by powodować niekompatybilność wsteczną nie ma - opis różnic podałem ci (w dokumencie AVR522).
  • REKLAMA
  • #6 13055726
    arturromarr
    Poziom 17  
    Dzięki, a czy mogą być zmiany w zakresie sprzętowego portu i2c?
    A może mieć znaczenie, że w moim programatorze eXtremeBurnerAVRSetup jak jest wybór mikro-kontrolera w to zaznaczam 16 bo 16a nie ma?
  • #7 13055946
    Fredy
    Poziom 27  
    Może używałeś kiedyś PCF8574 a teraz masz PCF8574A, albo odwrotnie? One mają zupełnie inne adresy.
  • #8 13069451
    arturromarr
    Poziom 17  
    Mam układzik "bez A".
    Może problemem są zakłócenia, na płytce z mikro-kontrolerem mam jeszcze zegarek i tam dałem rezystory podciągające, ale klawiaturka o której mowa jest dalej w dodatku na taśmie FFC i przebieg jest taki:
    atmega16a i pcf8574 - brak komunikacji przy zasilaniu 3,2V, ostrzeżenia avr-gcc
    Chyba nie wygląda to najlepiej, podlutowałem na klawiaturce z układem pcf8574 dodatkowe oporniki podciągające i poprawiło się (z wyglądu bo komunikacji brak).
    atmega16a i pcf8574 - brak komunikacji przy zasilaniu 3,2V, ostrzeżenia avr-gcc
    Zwolniłem trochę zegar transmisji (ze stu do kilkunastu KHz) i wygląda to tak:
    atmega16a i pcf8574 - brak komunikacji przy zasilaniu 3,2V, ostrzeżenia avr-gcc
    To jest przebieg na samym ekspanderze, co jest nie tak, bit ACK jest prawidłowo?
    Wysyłam 0x0f na adres 0x40.
    Proszę o jakąś wskazówkę.
  • REKLAMA
  • #9 13103937
    arturromarr
    Poziom 17  
    Podłączyłem równolegle kabelkami pod scalaka smd PCF 8574T na płytce scalaczka w DIP-ie PCF 8574P i ten działa.
    Co może być grane, możliwe że expandery w innych obudowach się różnią (obydwa NXP)?
  • #12 13118538
    arturromarr
    Poziom 17  
    Fragment schematu z układem expandera:
    atmega16a i pcf8574 - brak komunikacji przy zasilaniu 3,2V, ostrzeżenia avr-gcc
    Jak pisałem podłączyłem kabelkami pod nogi tego na płytce drugi układ tyle że w dip-ie z innym adresem (A0 pod plus przez opornik) i mam z nim komunikację.
    Wymieniłem układ smd z płytki na drugi który miałem i dalej nic.
REKLAMA