Нестабильное чтение Dallas ключа по 1Wire. Help
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Igor_O 21 июня 2004 г. 09:18

Делаю вот так, времена вроде выдержаны. Чтение крайне не стабильно, постоянно проскакивает FF. Причем 1-й байт всегда читается правильно.
Убил 2 дня, меняя временные настройки - все равно, бывает 2-3 раза подряд читает правильно, затем несколько раз подряд с FF вместо одного или 2-х байт. HELP!

MOVLW .8 ; number of bytes of data
MOVWF N

MOVF Str_Dallas,W ;DATA_BUFF ; beginning of data buffer
MOVWF FSR

READ_ID_1: ; fetch each of 8 bytes
clrwdt
bcf INTCON,GIE ;Запрет прерывания
_1W_IN_BYTE: ; returns byte in I_BYTE
MOVLW .8
MOVWF INDEX
CLRF I_BYTE
_1W_IN_BYTE_1:
MOVLW .1 ; for 10 usecs
CALL DELAY_10USEC

CALL _1W_PIN_LO ; momentary low on DATA_PIN
nop ; 1us
nop
nop
nop
nop
CALL _1W_PIN_HI

movlw .13 ;4 delay 15us
movwf H'29' ;4
DEL_1USEC:
nop ;4
clrwdt ;4
decfsz H'29',F ;4
goto DEL_1USEC ;8
MOVF PORTB, W
MOVWF PORTB_MIRROR
BTFSS PORTB_MIRROR,6
BCF STATUS, C ; its a zero
BTFSC PORTB_MIRROR,6
BSF STATUS, C ; its a one

RRF I_BYTE, F

MOVLW .100 ; now delay 60 usecs
CALL DELAY_10USEC
DECFSZ INDEX, F
GOTO _1W_IN_BYTE_1

MOVF I_BYTE, W

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru