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

[Atmega324p][BASCOM] - Brak komunikacji przez I2C z czujnikiem DS1624

neevle 13 Sty 2013 21:07 1593 1
REKLAMA
  • #1 11785010
    neevle
    Poziom 2  
    Witam.

    Walczę z obsługą magistrali I2C łączącej procesor Atmega324p i czujnik DS1624. Chcę zapisać na karcie SD póki co dwa surowe bajty z rejestru temperatury, jednak prawie za każdym razem otrzymuję wynik 255, czyli same jedynki w bajcie. Piszę "prawie", gdyż przy ostatniej próbie z jakiegoś powodu była to liczba 151. Podobny efekt daje próba zapisu jakichś danych do EEPROM-u czujnika a potem odczytanie ich.

    Linie SDA i SCL są podciągnięte do Vcc rezestorami 2,2k (wcześniej było 4,7k, ale w dokumentacji doczytałam, że przy zasilaniu układu napięciem 3,3V można zastosować mniejsze rezystory - spróbowałam więc, w każdym razie nic się nie zmieniło). Korzystam z wbudowanego oscylatora 8MHz, wersja BASCOM 1.11.9.8. Nie zmieniałam żadnych fusebitów poza jedynym potrzebnym do zwiększenia częstotliwości wspomnianego oscylatora z 1MHz do 8MHz. Poniżej zamieszczam kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Ten kod to tylko jedna z wersji, które przetestowałam - próbowałam korzystać z domyślnego I2C, różnych wartości I2Cdelay; sprzętowego TWI, dołączając bibliotekę "i2c_twi.lbx" i definiując parametry "config twi" lub osobno TWBR i TWSR; różne ustawienia baudrate. Połączenia na płytce też sprawdzałam wiele razy. Nic nie dało efektu. O co może chodzić i co zrobić, żeby poprawnie odczytać temperaturę?
  • REKLAMA
  • #2 11821525
    neevle
    Poziom 2  
    Po długich bojach problem rozwiązany - w jakiś sposób zepsułam sobie piny SDA i SCL - przeniesienie I2C na inne piny i zadeklarowanie ich software'owo pozwoliło na poprawny odczyt.
REKLAMA