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

 
 
> Эмулятор DS1990, не понятки с режим SLAVE 1Wire
Kovrov
сообщение Jan 27 2006, 12:04
Сообщение #1


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Предистория...
после разборки накопившегося за многие годы барахла нашел платочку контроллер ключей точ мемори
от домофона наверное... повозился с подключением и даже занес в память один из далласовских ключей DS1990 - все работает все хорошо...
а потом подумал надо бы попробовать сделать эмулятор онного на тиньке с автономным питанием
...
полчаса писал прогу считать ds 1990 на МЕГЕ 16 все получилось без проблем
;----
решил написать эмулятор на той же меге16 (пока)
вообщем RESET, Presence pulse, написал
а также чтение комманд от мастера
получил $33 команду типа "дай данные ром"
и все на этом тупик
выложил строку заранее считанную а контроллер не понимает
возможно чето с процедурами передачи байта, хотя там все ясно!
8 байт данных от ключа 100% достоверные
:---
единственное за че боюсь может тайминги че не так или контроллер домофона ещё какие темы
дает - а я незнаю....
если у кого есть исходничек !!!слейва!!! лучше асм 1WIRE буду принателен


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Apr 13 2009, 08:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да пожалуйста. Но без комментариев и гарантий.
CODE

;*******************************************************************************
;*
;* Version: 0.00
;* Build: Апрель 11, 2005 19:49:50
;*
;*******************************************************************************

.include "2313def.inc"

;******** Constants ************************************************************

.equ fck = 4000000

;******** Global Register Variables ********************************************

.def sreg = r15
.def a = r16
.def b = r17
.def txcnt = r18
.def txbcnt = r19
.def shift = r20

.def flags = r21
.equ MODE = 0x00
.equ RXD = 0x01

;******** SRAM Variables *******************************************************

.dseg

.org 0x60

.cseg

;******** Reset/Interrupt Vectors **********************************************

.org $000
rjmp reset ; Reset Handler
rjmp irq0 ; IRQ0 Handler
reti ; IRQ1 Handler
reti ; Timer1 Capture Handler
reti ; Timer1 Compare Handler
reti ; Timer1 Overflow Handler
rjmp tim0_ovf ; Timer0 Overflow Handler
reti ; UART RX Complete Handler
reti ; UDR Empty Handler
reti ; UART TX Complete Handler
reti ; Analog Comparator Handler

;******** Setup ****************************************************************

reset:

; Stack Pointer Initialization

ldi a, RAMEND
out SPL, a

; PIO Initialization

ldi a, 0b00000000
out DDRD, a
ldi a, 0b00000000
out PORTD, a
ldi a, 0b11000000
out DDRB, a
ldi a, 0b01000000
out PORTB, a

; Sleep Mode/WatchDog Initialization (PowerDown; WD Disabled)

ldi a, 0b00110010 ; INT0 Falling edge
out MCUCR, a
ldi a, 0b00011000
out WDTCR, a
ldi a, 0b00010000
out WDTCR, a

; Analog Comparator Initialization

ldi a, 0b10000000
out ACSR, a

; Timer0 Initialization

ldi a, 0b00000100 ; CK/256
out TCCR0, a

; Interrupt Initialization

ldi a, (1<<INT0)
out GIMSK, a

cli

;*******************************************************************************
; Main Program
;*******************************************************************************

clr flags
ldi shift, 0x80
sei

main0:
ldi shift, 0x80
andi flags, ~((1<<RXD)+(1<<MODE))
main:
sbrs flags, RXD
rjmp main
cpi shift, 0x33
brne main0
andi flags, ~(1<<RXD)

sbi PORTB, 0x07

ldi ZL, low(code * 0x02)
ldi ZH, high(code * 0x02)
lpm
mov shift, r0
ldi txbcnt, 0x08
ori flags, (1<<MODE)
rjmp main

;*******************************************************************************

irq0:
in sreg, SREG
sbrc flags, MODE
rjmp irq0_1

sbrc flags, RXD ; RX Mode
rjmp irq0_exit
ldi b, 0x14 ; 15us @ 4MHz
irq0_0:
dec b
brne irq0_0
clc
sbic PIND, 0x02
sec
ror shift
brcc irq0_exit
ori flags, (1<<RXD)
rjmp irq0_exit

irq0_1:
lsr shift ; TX Mode
brcs PC+0x02
sbi DDRD, 0x02
ldi b, 0x3c ;28 ; 30us @ 4MHz
irq0_2:
dec b
brne irq0_2
cbi DDRD, 0x02
ldi b, (1<<INT0)
out GIFR, b
dec txbcnt
brne irq0_exit
adiw ZL, 0x01
cpi ZL, low(code * 0x02) + 0x08
breq irq0_4
lpm
mov shift, r0
ldi txbcnt, 0x08

irq0_exit:
ldi b, (1<<TOIE0)
out TIFR, b
out TIMSK, b
ldi b, 0xf4 ; ~720us @ 4MHz
out TCNT0, b
out SREG, sreg
reti

irq0_4:
ldi shift, 0x80
andi flags, ~((1<<RXD)+(1<<MODE))
rjmp irq0_exit

tim0_ovf:
in sreg, SREG
ldi b, 0x00
out TIMSK, b
cbi DDRD, 0x02
tim0_ovf0:
sbis PIND, 0x02
rjmp tim0_ovf0
ldi b, 0x35 ; 40us @ 4MHz
tim0_ovf1:
dec b
brne tim0_ovf1
sbi DDRD, 0x02
ldi b, 0xc8 ; 150us @ 4MHz
tim0_ovf2:
dec b
brne tim0_ovf2
cbi DDRD, 0x02
ldi b, (1<<INT0)
out GIFR, b
ldi shift, 0x80
andi flags, ~((1<<RXD)+(1<<MODE))
out SREG, sreg
reti

;*******************************************************************************

code:
.db 0x01, 0x35
.db 0xb1, 0x87
.db 0x09, 0x00
.db 0x00, 0x68

;******** Revision *************************************************************

.org FLASHEND

rev:
.dw 0x0000
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kovrov   Эмулятор DS1990   Jan 27 2006, 12:04
- - aaarrr   Вот мой исходник для 2313 @ 4MHz. Работает, но час...   Jan 27 2006, 12:18
- - Kovrov   спасибо огромное - буду разбираться упустил из вид...   Jan 27 2006, 13:07
- - aaarrr   Многое от мастера зависит. Хотя, +/- 0.5мкс, по ид...   Jan 27 2006, 13:48
- - Иванов   В Вашем случаи возможны две ситуации не работы эму...   Jan 27 2006, 20:27
|- - Kovrov   Цитата(Иванов @ Jan 27 2006, 23:27) (не о...   Jan 28 2006, 15:02
- - Иванов   Когда делал преобразователь кода в 1-Ware использ...   Jan 28 2006, 19:43
|- - Kovrov   Цитата(Иванов @ Jan 28 2006, 22:43) Если ...   Jan 29 2006, 06:07
- - Последний   Это я удачно зашёл! (с) Неделю назад сам начал...   Jan 29 2006, 02:15
- - aaarrr   Цитата(Kovrov @ Jan 29 2006, 09:07) для м...   Jan 29 2006, 12:25
|- - Kovrov   Цитата(aaarrr @ Jan 29 2006, 15:25) Про п...   Jan 29 2006, 15:22
- - aaarrr   Цитата(Kovrov @ Jan 29 2006, 18:22) на ти...   Jan 29 2006, 16:20
- - Иванов   Подброшу идею: Контролер взять с индексом V и пит...   Jan 29 2006, 18:03
- - Kovrov   чем же камень? что разве проще таскать с собой бат...   Jan 29 2006, 18:09
- - aaarrr   Цитата(Kovrov @ Jan 29 2006, 21:09) чем ж...   Jan 29 2006, 18:29
- - Иванов   >а чем же это не хорошо? >плавно растущее пи...   Jan 29 2006, 18:48
- - Kovrov   а при чем сдесь плавно растущее питание? и потом л...   Jan 30 2006, 04:49
- - Kovrov   Ну, господа набаловался вволю!!! вечер...   Jan 30 2006, 06:55
- - phstranger   Уважаемые!. Можно ли у кого поиметь исходник н...   Apr 13 2009, 08:18
- - phstranger   Большое человеческое спасибо.   Apr 13 2009, 08:32
- - Serjio   Цитата(phstranger @ Apr 13 2009, 12:32) Б...   Apr 13 2009, 16:22


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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 23:33
Рейтинг@Mail.ru


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