|
Программа asm gередача по UART attiny25 |
|
|
|
Apr 14 2018, 07:24
|
Группа: Участник
Сообщений: 7
Регистрация: 14-04-18
Пользователь №: 103 217

|
Доброго времени суток. Нужно передать 1 байт на скорости 19200 бод (8 бит 1 стоп) от мк attiny25 на устройство. МК программируется программатором громова через uniprof.при подключении питания на мк устройство принимает 1 байт 0FFh вместо 05fh. МК работает от внутренного тактвого генератора на заводских установках, частоте- 1мгц. сперва сделал код на таймере.Ничего не получилось, решил считать такты.Исходил из того, что, при частоте 1мгц длительность 1 такта занимает 0,000001 секунды.длительность 1 бита(бода) при скорости 19200 будет 0,000052083 секунды, тоесть задержка между перепадами уровней должна быть 52 такта.Вроде написал код, вроде правильно.Но не работает, подскажите, что может быть не так. CODE rjmp RESET ; Reset Handler
RESET: cli ldi r17, 0xd0 out 0x3D, r17 ;инициализация стэка ldi R16, 0b00000011 ;порты как выход out 0x17, r16 LDI R30, low(fing_cmp*2) ; lpm r18, Z ;загрузим байт
trx_idle: ;2 такта ldi R16, 0b00000001 ;логический 1 (idle) out 0x18, r16
;Задержка 52-2 = 50 ldi r20, 16 delay1: dec r20 brne delay1 nop nop
trx_start: ;2 такта ldi R16, 0b00000000 ;логический 0 (start bit) out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay2: dec r20 brne delay2 nop nop trx_bit0: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay3: dec r20 brne delay3 nop nop trx_bit1: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay4: dec r20 brne delay4 nop nop trx_bit2: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay5: dec r20 brne delay5 nop nop trx_bit3: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay6: dec r20 brne delay6 nop nop trx_bit4: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay7: dec r20 brne delay7 nop nop trx_bit5: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay8: dec r20 brne delay8 nop nop trx_bit6: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-5 = 47 ldi r20, 15 delay9: dec r20 brne delay9 nop nop trx_bit7: ;5 тактов clc clr r16 ror r18 ;младший бит уходит в C adc r16, r16 out 0x18, r16
;Задержка 52-2 = 50 ldi r20, 16 delay13: dec r20 brne delay13 nop nop trx_idle2: ;2 такта ldi R16, 0b00000001 ;логический 1 (idle) out 0x18, r16
stop: nop nop rjmp stop
fing_cmp: .db 0xf5
Сообщение отредактировал IgorKossak - Apr 15 2018, 18:37
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
|
|
|
|
|
 |
Ответов
|
Apr 14 2018, 09:09
|
Группа: Участник
Сообщений: 7
Регистрация: 14-04-18
Пользователь №: 103 217

|
Цитата(zombi @ Apr 14 2018, 08:35)  R31 ненужно грузить? нет, r31 cодержит 0, когда под отладчиком в avr studio прогоняешь то в r18 грузится нужное число -05fh.B биты в портах, когда сдвигаешь r18 щелкают правильно. Цитата(zombi @ Apr 14 2018, 08:35)  R31 ненужно грузить? загрузил регистр r18 напрямую значением.вроде заработало, но иногда приходит df. Спасибо)получается когда мк включается состояние регистров не определено ?
|
|
|
|
|
Apr 17 2018, 23:33
|
Участник

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644

|
Цитата(addict @ Apr 14 2018, 13:09)  нет, r31 cодержит 0, шутить изволите? не сравнивайте компилятор с реальным авр!!! при включении там может быть мусор! вы используете софтовую реализацию компорта и передаёте байт описывая каждый бит.. это занимает очень много памяти.. вот попробуйте это... подогнать под свою скорость и частоту кварца сможете? CODE ;********************************************************************** ********* *******************
; передача одного байта в формате РС-232 16МГЦ 115200 TX_232:
push r16 push r17 push r18 ; заносим в... cbi PORTB,1 ; формирум СТАРТ бит 1=>0 ldi r17,0x08 ; заносим в CNT_BIT - 9. количество сдвигов ;--------------------- ldi r18,43 ; корекция скорости передачи sta_bit: dec r18 brne sta_bit ;--------------------- Loop_TX: sbrs r16,0 cbi PORTB,1 sbrc r16,0 sbi PORTB,1 ;------------------ ldi r18,43 ; корекция скорости передачи tx_bit: dec r18 brne tx_bit nop nop ;------------------
lsr r16 ; здвигаем dec r17 brne Loop_TX
sbi PORTB,1 ; формирум СТОП бит ;------------------ ldi r18,80 ; 15 корекция скорости передачи st_bit: dec r18 brne st_bit; ;------------------
pop r18 pop r17 pop r16
ret
;******************************************************************************* *******************
LDI R30, low(fing_cmp*2) LDI R31, high(fing_cmp*2) lpm r18, Z ;загрузим байт
и R31 обязателен!!! вот и вся прога... отправки 8ми байт в ком из таблицы CODE ;********************************************************************** **************************** ; _reset:
clr r1 out SREG,r1
ldi r16, LOW(RAMEND) ;setup stack pointer out SPL, r16 ; ldi r16, HIGH(RAMEND) ; out SPH, r16
ldi ZL,low(Table_1*2) ; считываем адрес таблицы ldi ZH,high(Table_1*2)
ldi r19,8
lp: lpm r24,Z+
call TX_232
dec r19 brne lp
sss: jmp sss
Table_1: .db 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08
;******************************************************************************* *******************
Сообщение отредактировал IgorKossak - Apr 19 2018, 07:59
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
|
|
|
|
Сообщений в этой теме
addict Программа asm gередача по UART attiny25 Apr 14 2018, 07:24  zombi Цитата(addict @ Apr 14 2018, 12:09) Спаси... Apr 14 2018, 16:56   addict Цитата(zombi @ Apr 14 2018, 17:56) Просто... Apr 14 2018, 17:25    zombi Цитата(addict @ Apr 14 2018, 20:25) нет, ... Apr 14 2018, 18:06     addict Цитата(zombi @ Apr 14 2018, 19:06) Странн... Apr 14 2018, 20:05      zombi Цитата(addict @ Apr 14 2018, 23:05) нет, ... Apr 15 2018, 06:51       addict Цитата(zombi @ Apr 15 2018, 06:51) А како... Apr 15 2018, 07:01   addict [quote name='KGB' date='Apr 17 2018, 2... Apr 20 2018, 09:02    KGB Цитата(addict @ Apr 20 2018, 13:02) Жаль ... Apr 20 2018, 19:46     addict Цитата(KGB @ Apr 20 2018, 20:46) не понял... Apr 21 2018, 02:57 k155la3 сперва решите Вашу задачу с использованием кварцев... Apr 15 2018, 07:28 zombi ЦитатаПрошивка уже немного другая.Но все также- ко... Apr 15 2018, 07:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|