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

[ATmega16] [ATmega16][C] - Odczyt danych z EEPROM 24LC16B przez I2C zwraca błędne wartości

Roonie 14 Lis 2012 00:55 1122 4
REKLAMA
  • #1 11527052
    Roonie
    Poziom 2  
    Witam,

    Próbuję napisać program do wymiany danych z zewnętrznym EEPROMem 24LC16B. Zapis raczej działa - w podobny sposób udanie komunikuję się z przetwornikiem PCF8591.

    Natomiast podczas odczytu pamięć zwraca mi wysłany przeze mnie ctrl_byte (adres na magistrali) w trybie Current Address Read, lub 0xFF w trybie Random Read.

    Kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Kod: text
    Zaloguj się, aby zobaczyć kod


    ATmega pracuje na 4MHz
  • REKLAMA
  • #2 11527379
    mmacura
    Poziom 18  
    Witam
    Wydaje mi się że funkcja STOP powinna wyglądać tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Marek
  • REKLAMA
  • #3 11527814
    Roonie
    Poziom 2  
    Dzięki, faktycznie masz rację.

    Niestety to nie poprawiło sytuacji, problem leży gdzieś indziej. Jakiś pomysł co robię źle?
  • REKLAMA
  • Pomocny post
    #4 11527931
    mmacura
    Poziom 18  
    W funkcji eeprom_read po drugim I2C_start musisz wysłać jeszcze raz adres układu, tym razem adres do odczytu z wyzerowanym najmłodszym bitem.

    Marek
  • #5 11528223
    Roonie
    Poziom 2  
    Dokładnie to na odwrót - najpierw z wyzerowanym wysłać adres, potem powtórzony start, a następnie adres z 1-ką by odczytać dane. Ale dzięki, zwróciłeś mi uwagę na miejsce błędu i teraz działa :)
REKLAMA