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

[ATmega168/C] Jak połączyć ATmega168 z BQ2040 przez TWI w Ford WDS? Bateria nierozpoznawana

ADI-mistrzu 31 Sie 2012 09:47 1317 3
REKLAMA
  • #1 11264003
    ADI-mistrzu
    Poziom 30  
    Witam,

    Posiadam do naprawy stację diagnostyczna Ford WDS w której jest problem z baterią, mianowicie system jej nie rozpoznaje.

    Pierwsze co zrobiłem to wgrałem ponownie wsad do pamięci EEPROM sterownika (BQ2040) ale nic to nie dało.
    Następnie ogłosiłem się tutaj że kupię takowy układ i po pewnym czasie pojawił się odgłos.
    Niestety okazało się że układ jest używany (ale to nie wina sprzedającego, sam nie wiedział że taki przyjdzie i czeka na informacje ode mnie) i teraz nie wiem czy to problem z baterią czy coś w WDS.

    Z dokumentacji wynika, że sterownik posiada możliwość wyświetlania stanu baterii za pomocą 4 diod LED które fabrycznie nie były wlutowane w płytkę.
    Tak więc dolutowałem je i zwarłem odpowiedni pin określony w dokumentacji do masy, po czym zobaczyłem jak jeden segment diody miga (pod pinem nr. 4).
    Wynika więc że bateria jest rozładowana, chodź napięcie na niej to jakieś 10.6V (8 ogniw).

    Więc już w desperacji postanowiłem połączyć się z tym układem za pomocą atmegi.

    Z dokumentacji wynika że komunikacja z nim jest wręcz identyczna jak ze zwykłą pamięcią EEPROM oraz że prędkość komunikacji nie może być większa jak 100kHz.
    Tak więc rejestr odpowiedzialny na prędkość (TWBR) ustawiłem na 150 (20MHz dla atmegi) co daje mi 63.3kHz sygnału zegarowego.

    I następnie wziąłem się za próbę komunikacji:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jak widać za każdym razem gdy jest wysyłana dana wyświetlam status transmisji.
    I problem pojawia się już w czasie wysyłania adresu urządzenia, ponieważ zwracany kod to TW_MT_SLA_NACK czyli BQ2040 nie odpowiedziało.

    Pomyślałem że może to problem z adresem, że jednak jest inny więc w prostej pętli przeleciałem wszystkie możliwe kombinacje, ale za każdym razem nie otrzymuję ACK.

    Co mogę robić źle? A może to ten układ jest także uszkodzony?

    Dokumentacja BQ2040:
    http://www.ti.com/lit/ds/symlink/bq2040.pdf

    Pozdrawiam
  • REKLAMA
  • REKLAMA
  • #3 11264161
    ADI-mistrzu
    Poziom 30  
    Tak, rezystory są przylutowane, ogółem to atmega siedzi w innym projekcie gdzie miała być wykorzystana pamięć EEPROM, ale w końcu z niej zrezygnowałem i po prostu wlutowałem się w piny sygnałowe i masę (zasilanie idzie z baterii).
  • #4 11264219
    Andrzej__S
    Poziom 28  
    ADI-mistrzu napisał:
    po prostu wlutowałem się w piny sygnałowe

    Zakładam, że te piny to SMBD i SMBC. Ten układ ma dwie magistrale, więc nietrudno się pomylić, tym bardziej, że ESCL i ESDA bardziej się kojarzą z I2C, niż te drugie piny.
REKLAMA