Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

При изучении 1-wire протокола столкнулся с трудностями. Лишний символ на осциллограмме. Заранее благодарен за любой совет.

Отправлено Fantomas (82.207.124.122) 22 июля 2010, г. 11:01


align=Top
При изучении 1-wire протокола столкнулся с трудностями. Лишний символ на осциллограмме. Осциллограмма во вложении. Заранее благодарен за любой совет.

Далее текст программы:

.include "tn2313def.inc" //подключаем заголовочный файл

.def Temp0=R16
.def Temp1=R17
.def Temp2=R18
.def TmpRcve=R19
.def ActFl=R20
.def RBRRH=R21
.def RBRRL=R22
.def BitCnt=R23
.def RRByte=R24
.def RRByteC=R25

.dseg

.cseg //обозначает начало программного сегмента
.org 0 //задает начальный адрес. В данном случае он = 0

;*********** вектора прерываний ***************************

rjmp Reset ; Reset Handler
rjmp INT_0 ; External Interrupt0 Handler
rjmp INT_1 ; External Interrupt1 Handler
rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIM1_COMPA ; Timer1 CompareA Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp USART0_RXC ; USART0 RX Complete Handler
rjmp USART0_DRE ; USART0,UDR Empty Handler
rjmp USART0_TXC ; USART0 TX Complete Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp PCINT ; Pin Change Interrupt
rjmp TIMER1_COMPB ; Timer1 Compare B Handler
rjmp TIMER0_COMPA ; Timer0 Compare A Handler
rjmp TIMER0_COMPB ; Timer0 Compare B Handler
rjmp USI_START ; Usi Start Handler
rjmp USI_OVERFLOW ; USI Overflow Handler
rjmp EE_READY ; EEPROM Ready Handler
rjmp WDT_OVERFLOW ; Watchdog Overflow Handler

;Reset:
INT_0:
INT_1:
TIM1_CAPT:
TIM1_COMPA:
TIM1_OVF:
TIM0_OVF:
USART0_RXC:
USART0_DRE:
USART0_TXC:
ANA_COMP:
PCINT:
TIMER1_COMPB:
TIMER0_COMPA:
TIMER0_COMPB:
USI_START:
USI_OVERFLOW:
EE_READY:
WDT_OVERFLOW:
reti

Reset:
ldi Temp1,0
ldi Temp2,0

//USART_Init:
; Set baud rate
out UBRRH, r17
out UBRRL, r16
; Enable receiver and transmitter
ldi r16, (1<<RXEN)|(1<<TXEN)
out UCSRB,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBS)|(3<<UCSZ0)
out UCSRC,r16

ldi Temp0,0b00010000
out DDRD,Temp0

M1:
;rcall RRCmd

;rjmp M1




Mi: cbi PortD,4

Main:
// Установка скорости 9600

ldi RBRRH,0
ldi RBRRL,51
; Enable receiver and transmitter
ldi Temp2, (1<<RXEN)|(1<<TXEN)
rcall USART_Init


ldi Temp0,0b11110000 ; Reset sequence
rcall USART_Transmit

rcall USART_Receive

mov Temp0,TmpRcve

cpi Temp0,0b11110000

brsh Mi
cpi Temp0,0b00010000
brlo Mi
sbi PortD,4


ldi RBRRH,0
ldi RBRRL,3
; Enable transmitter
ldi Temp2, (0<<RXEN)|(1<<TXEN)
rcall USART_Init

ldi Temp1,1 ;0
ldi Temp2,3 ;0
PauseM:
dec Temp1
brne PauseM
dec Temp2
brne PauseM
rcall RRCmd
rcall ReadRom

rjmp Main



USART_Init:
; Set baud rate
out UBRRH, RBRRH
out UBRRL, RBRRL

out UCSRB,Temp2
ret

USART_Transmit:
; Wait for empty transmit buffer
sbis UCSRA,UDRE
rjmp USART_Transmit
; Put data (r16) into buffer, sends the data
out UDR,Temp0
ret

USART_Receive:
; Wait for data to be received
sbis UCSRA, RXC
rjmp USART_Receive
; Get and return received data from buffer
in TmpRcve, UDR
ret

RRCmd:
ldi BitCnt,8
; Рабочий кусок кода для генерации 8ми бит 33Н


ldi RRByte,0b11110000

;ldi RRByte,0b11111111
NxWB:
dec BitCnt

mov RRByteC,RRByte
rol RRByte
andi RRByteC,0b10000000
cpi RRByteC,0b10000000
brne WZero

ldi Temp0,255
rcall USART_Transmit
rjmp CpEx

WZero:

ldi Temp0,0
rcall USART_Transmit

CpEx:
cpi BitCnt,0
brne NxWB
ret

ReadRom:

ldi BitCnt,64
ldi RBRRH,0
ldi RBRRL,3
; Enable transmitter
ldi Temp2, (0<<RXEN)|(1<<TXEN)
rcall USART_Init

ldi Temp1,1 ;0
ldi Temp2,0 ;0
Pause:
dec Temp1
;brne Pause
dec Temp2
;brne Pause

;ldi RRByte,0b00110011

NxWB1:
dec BitCnt


ldi Temp0,255
rcall USART_Transmit

cpi BitCnt,0
brne NxWB1
ret
Картинка: http://photofile.ru/photo/photopixels/95219112/large/119056865.jpg


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
увеличьте 6 на 2:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru