Фатальная ошибка в микросхеме DS1307

Нет ответов
terminal
Offline
Зарегистрирован: 02.09.2015

В микросхеме часов реального времени DS1307 обнаружена ошибка. Она проявляется, когда в потоке данных присутствуют данные #D100. Если эти данные предназначаются для другой микросхемы на шине, это не имеет значения. У меня получился конфликт с микросхемой памяти AT24C1024, когда я производил запись в нее по адресу D100.Ниже привожу фрагмент кода для Atmega 128.

test1:

clr r19

ldi r16,72

sts TWBR,r16

lds r16,TWSR

andi r16,0b11111100

sts TWSR,r16

start_b:

ldi r16,0b11100100

sts TWCR,r16

call prov_tini

lds r16,TWSR

cpi r16,0x08

brne start_b

ldi r16,0b10100000 ; AT24C1024

sts TWDR,r16

ldi r16,0b11000100

sts TWCR,r16

call prov_tini

lds r16,TWSR

cpi r16,0x18

brne start_b

ldi r16,0xD1 ;

sts TWDR,r16

ldi r16,0b11000100

sts TWCR,r16

call prov_tini

lds r16,TWSR

cpi r16,0x28

brne start_b

ldi r16,0x00 ;

sts TWDR,r16

ldi r16,0b11000100

sts TWCR,r16

call prov_tini

lds r16,TWSR

cpi r16,0x28

brne start_b

 

clr r19

 

test1_loop:

ldi r16,0x99 ; Error chip DS1307 responds

sts TWDR,r16

ldi r16,0b11000100

sts TWCR,r16

call prov_tini

lds r16,TWSR

cpi r16,0x28

brne start_b

dec r19

brne test1_loop

ldi r16,0b11010100 ;

sts TWCR,r16

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms

CALL wait_1ms