реклама на сайте
подробности

 
 
> Помогиття побороть ibutton plz..., Угрохался с 1-wire (Atmega8, iButton)
Vlad219i
сообщение Dec 28 2006, 18:43
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 13-03-06
Из: Москва
Пользователь №: 15 204



Не первый день бьюсь с 1-wire. Все делаю по 126 аппноту от Далласа и даташиту на DS1990A, iButton на ресет откликается, но при попытке прочитать с него сигнатуру - упорно в ответе вылезает ff,7f,7f,7f,7f,7f,7f,7f. DS1990A - живые (пробовал разные), задержки - в норме (раздвигаю-сдвигаю время - девайс перестает откликаться), прерывания на время опроса и tx/rx - отключаю.
Возможности подключить осциллограф прямщас нет, гляньте в код plz - может проглядел что-то...
Опрос:
Код
;###### опрос 1-wire (времянка)
        cli            ;запрещаем прерывания
        rcall    owreset;ibutton обнаружен ?
        brts    ow_no;нет - обход
        rcall    ibutton;принимаем сигнатуру
        sei
        mlcdadr    $40
        ldi        tmp2, 8
        ldi        yh, high(ibuffer*2)
        ldi        yl, low(ibuffer*2)
ib000:    ld        tmp, y+
        rcall    lcdhex2
        dec        tmp2
        brne    ib000
        ldi        cntbeep, 50
        rcall    wait1s
        mprintf    $40, "                "
ow_no:    sei
ow_out:


Подпрограммки:

Код
;проверка на наличие девайса 1-wire
;выход:    T=1 - девайс не обнаружен
;        T=0 - девайс обнаружен
owreset:clt            ;изначально ставим признак "1wire девайс обнаружен"
        sbi        ddrd, owport;1wire на вывод
        cbi        portd, owport;приземляем линию
        rcall    owait_h
        sbi        portd, owport;отпускаем линию
        cbi        ddrd, owport;1wire на ввод
        rcall    owait_i    ;ждем 70 мкс
        sbic     pind, owport;девайс приземлил линию ?
        set            ;нет - девайс не обнаружен
        rcall    owait_j
        ret

;прием серийника iButton
;выход:    [ibbuffer] - 8 байт от ibutton
ibutton:ldi        yh, high(ibuffer*2)
        ldi        yl, low(ibuffer*2)
        ldi        tmpl, 8        ;принимаем 8 байт
        ldi        tmp, $33
        mov        owdata, tmp
        rcall    owtxb
ibut00:    rcall    owrxb
        st        y+, owdata
        dec        tmpl
        brne    ibut00
        ret

;передача байта по onewire
;вход:    [owdata] - байт
owtxb:
        sbi        ddrd, owport;1wire на вывод
        ldi        tmp2, 8        ;счетчик бит
owtxb0:    sbrc    owdata, 0
        rjmp    owt_1
;передаем "0"
owt_0:    cbi        portd, owport;приземляем линию
        rcall    owait_c
        sbi        portd, owport;отпускаем линию
        rcall    owait_d
        rjmp    owtnext
;передаем "1"
owt_1:    cbi        portd, owport;приземляем линию
        rcall    owait_a
        sbi        portd, owport;отпускаем линию
        rcall    owait_b
owtnext:ror        owdata
        dec        tmp2
        brne    owtxb0
        cbi        ddrd, owport;1wire на ввод
        ret

;прием байта по onewire
;выход:    [owdata] - байт
owrxb:
        clr        owdata
        ldi        tmp2, 8        ;счетчик бит
        sbi        ddrd, owport;1wire на вывод
owrxb0:    cbi        portd, owport;приземляем линию
        rcall    owait_a
        sbi        portd, owport;отпускаем линию
        cbi        ddrd, owport;1wire на ввод
        rcall    owait_e
        sec                    ;ставим C
        sbis     pind, owport;на линии 1 ?
        clc                    ;нет - сбрасываем C
        rol        owdata        ;пишем C в бит 0[owdata]
        rcall    owait_f
        dec        tmp2
        brne    owrxb0
        ret


Что я делаю не так, а ?.. :(

PS: DS1821 ведет себя ровно так же - в ответ на $AA отдает байт $7F.
Во избежание недоразумений - порт изначально настроен на ввод, все на макетке, схемка подключения вот:


Сообщение отредактировал Vlad219i - Dec 28 2006, 19:04
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Vlad219i   Помогиття побороть ibutton plz...   Dec 28 2006, 18:43
- - Yura_K   Вроде никакого "криминала" не видно, есл...   Dec 28 2006, 19:54
- - aahardsoft   сдается мне что пишете вы ответ от ключей в озу а ...   Dec 28 2006, 20:45
|- - Vlad219i   Цитата(aahardsoft @ Dec 28 2006, 20:45) с...   Dec 28 2006, 22:17
- - aahardsoft   ну а че тада вы пишете в озу а печатаете с flash ч...   Dec 28 2006, 23:07
|- - Vlad219i   Цитата(aahardsoft @ Dec 28 2006, 23:07) н...   Dec 29 2006, 00:15
|- - aahardsoft   "mprintf - печать строки из program memory по...   Dec 29 2006, 10:57
|- - Vlad219i   Цитата(aahardsoft @ Dec 29 2006, 10:57) ...   Dec 29 2006, 11:13
- - vesago   Если у вас времянки правильные и данные не криво с...   Dec 29 2006, 11:27
|- - Vlad219i   Цитата(vesago @ Dec 29 2006, 11:27) Если ...   Dec 29 2006, 11:42
- - vesago   Я так делаю - просаживаю линию, на второй мкс выво...   Dec 29 2006, 11:54
- - add   Пока криминального ничего ненашел. Только Вы както...   Dec 29 2006, 12:27
|- - Vlad219i   Цитата(add @ Dec 29 2006, 12:27) Пока кри...   Dec 29 2006, 12:34
- - add   Нашел помойму ошибку..: Цитатаsbi ddrd, owp...   Dec 29 2006, 13:59
|- - Vlad219i   Цитата(add @ Dec 29 2006, 13:59) Нашел по...   Dec 29 2006, 16:43
- - add   ЦитатаКак не устанавливаю, вот же: sbi portd, owpo...   Dec 29 2006, 16:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 18:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016