Фатальная ошибка в микросхеме DS1307
- Войдите на сайт для отправки комментариев
В микросхеме часов реального времени 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