Сообщение от basjanja
|
здравствуйте, может кто-нибудь использовал модель DS1620 - как то не получается с ней договорится - буду рада за совет или пример по теме
|
Господа помогите кто чем может:
Аналогичная проблемма решил её тем что воткнул пустой старт\СТОП
Хочется знать что неправильно делаю.
TEMP_READ CALL StartCond ; отправляем байт конфигурации термометра
MOVLW 0x90 ; адрес термометра для записи
CALL SendByte ; передаем байт
MOVLW 0xAC ; см. Datasheet
CALL SendByte ; передаем байт
MOVLW 0x03 ; см. Datasheet
CALL SendByte ; передаем байт
CALL StartCond ; повторный старт
MOVLW 0x90 ; адрес термометра для записи
CALL SendByte ; передаем байт
MOVLW 0xEE ; стартуем преобразование
CALL SendByte ; передаем байт
CALL StopCond ; стоп передачи
CALL Wait1SEC
;-------------------------------------------------------------------------------------------------
CALL StartCond ; ПОВТОРНЫЙ СТАРТ\СТОП
CALL StopCond ; ЕСЛИ ЕГО УБРАТЬ СЛЕДУЮЩАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ ЧИТАЕТСЯ 00
; Какие бы данные вы бы не запрашивали, а в таком виде все работает я так и не понял почему
;-------------------------------------------------------------------------------------------------
CALL StartCond ; проверяем что записалось
MOVLW 0x90 ; адрес термометра для записи
CALL SendByte ; передаем байт
MOVLW 0xAC ; см. Datasheet
CALL SendByte ; передаем байт
CALL StartCond ; повторный старт
MOVLW 0x91 ; адрес термометра для чтения
CALL SendByte ; передаем байт
CALL ReadByte ; читаем байт (в протеусе читается 0x83)
MOVWF TMP_AC ; записываем в соответствующий регистр
CALL NotACK ; нет ACK от мастера, значит скоро стоп
CALL StopCond ; стоп передачи
CALL StartCond ; стартуем новый запрос
MOVLW 0x90 ; адрес термометра для записи
CALL SendByte ; передаем байт
MOVLW 0xAA ; см. Datasheet
CALL SendByte ; передаем байт
CALL StartCond ; повторный старт
MOVLW 0x91 ; адрес термометра для чтения
CALL SendByte ; передаем байт
CALL ReadByte ; читаем старший байт градусы
MOVWF THigh ; записываем в соответствующий регистр
CALL YesACK ; подтверждаем прием
CALL ReadByte ; читаем младший байт 0.5\0.0 градуса
MOVWF Tlow ; записываем в соответствующий регистр
CALL NotACK ; нет ACK от мастера, значит скоро стоп
CALL StopCond ; стоп передачи
Вот что протеус дает на картинке