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

 
 
 
Reply to this topicStart new topic
> ADuC841, работа с XRAM, интересует возможность косвенной адресации после #FFh, ну или как выкр
novlev
сообщение May 17 2008, 09:59
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



День добрый, использую XRAM, но возникла проблема - после адреса #00FFh как работать?
Go to the top of the page
 
+Quote Post
novlev
сообщение May 17 2008, 11:57
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



Цитата(novlev @ May 17 2008, 12:59) *
День добрый, использую XRAM, но возникла проблема - после адреса #00FFh как работать?
Вроде выкрутился smile.gif
Go to the top of the page
 
+Quote Post
novlev
сообщение May 25 2008, 10:52
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



((((((((( нет, вру - не выкрутился. Ситуация следующая:
есть буфер из 20 байтов, начало по адресу 0100 в XRAM. При отправке этого буфера на персоналку периодически пакет портится, а именно 18 и 19 байты меняют значения, при этом контрольная сумма остается правильной(для первоначального пакета). Вот пример процедуры (упрощенный, но ошибка осталась) :
mov DPTR, #000100h
nah_otsuda0:

movx a, @DPTR
mov r6, a
mov r7, #00h;
;-----------------------------------------------------------------------------

;----------------------------------------------------------------------------
call quart_wr;
inc DPTR

djnz r3, nah_otsuda0

Если прерывания запретить, то все нормально работает. Но прерывание только одно(от таймера) и с XRAM я в нем не работаю. Указатель адреса и страници сохраняю в стеке, аккумулятор и регистр расширения(В)...
Надоумте, в чем проблема ????????(ну кроме как в днк)))
Go to the top of the page
 
+Quote Post
AndreyS
сообщение May 26 2008, 06:38
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(novlev @ May 25 2008, 14:52) *
((((((((( нет, вру - не выкрутился. Ситуация следующая:
есть буфер из 20 байтов, начало по адресу 0100 в XRAM. При отправке этого буфера на персоналку периодически пакет портится, а именно 18 и 19 байты меняют значения, при этом контрольная сумма остается правильной(для первоначального пакета). Вот пример процедуры (упрощенный, но ошибка осталась) :
mov DPTR, #000100h
nah_otsuda0:

movx a, @DPTR
mov r6, a
mov r7, #00h;
;-----------------------------------------------------------------------------

;----------------------------------------------------------------------------
call quart_wr;
inc DPTR

djnz r3, nah_otsuda0

Если прерывания запретить, то все нормально работает. Но прерывание только одно(от таймера) и с XRAM я в нем не работаю. Указатель адреса и страници сохраняю в стеке, аккумулятор и регистр расширения(В)...
Надоумте, в чем проблема ????????(ну кроме как в днк)))



Чудес не бывает.
Выкладывайте quart_wr и обработчики всех ваших прерываний.
Да ичто находится между двух строк ;-------------- ?????Если там кусок кода, то выложите этот цикл полностью.


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
novlev
сообщение May 26 2008, 06:44
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



))чудес не бывает, а вот г... случается

вот подпрограмка записи в уарт
quart_wr:

; Подпрограмма записи во внешний UART
; R7 - address
; R6 - data;

clr ea

mov P0, r7
setb P3.3
nop
clr P3.3

mov a, blic
anl a, #10111111b
ORL a, #10000000b
mov blic, a
mov p0, blic

setb P3.4
nop
clr P3.4


clr P3.2
mov P0, r6

setb P3.2


mov a, blic
anl a, #10111111b
ORL a, #11000000b
mov blic, a
mov p0, blic

setb P3.4
nop
clr P3.4

setb ea

ret

а вот обработчик прерывания от таймера

what_time_is_it_now:
nop
nop
clr ea
CLR TF0
push PSW
push ACC
push DPP
push DPL
push DPH

mov b_temp, b
mov r0_temp, r0
mov r1_temp, r1
mov r2_temp, r2
mov r3_temp, r3
mov r4_temp, r4
mov r5_temp, r5
;mov r6_temp, r6
;mov r7_temp, r7


inc drive
mov a, drive
cjne a, #02h, no_drive_1
setb adc_conv
no_drive_1:

cjne a, #04h, no_drive_2
setb flag
no_drive_2:

cjne a, #06h, no_drive_3
setb hook
no_drive_3:

cjne a, #08h, no_drive_4
setb adc_conv1
mov drive, #0
no_drive_4:


inc msCnt

inc timer24

inc OU_COUNT

inc T0ImpCnt

mov a, T0ImpCnt
cjne a, #04h, _160ms
mov T0ImpCnt, #0

inc TH2
inc TL2
inc RCAP2L

inc __160__
mov a, __160__
cjne a, #0A0h, _160ms
mov __160__, #0

inc KDU1_SilenceCnt
inc KDU2_SilenceCnt
inc KDU3_SilenceCnt


;call time_out

_160ms:


;_____________________________________________
;
;Для интервала в 10ms\и других>
;_____________________________________________

;*************************************чтение из внешнего уарта каждые 0.5 мс**********************************************
MOV A, #01h
cjne a, OU_COUNT, no_ouart

setb time_to_read
;call tablo
mov OU_COUNT, #00h

no_ouart:
;*******************************************************************************
*************************************************

MOV A, #0FAH
cpl a
add a, timer24
cpl a
jnz nexX

mov timer24, #0

inc msCnt_1

MOV A, #08h
cpl a
add a, msCnt_1
cpl a

jnz nexX

;call lamp1
;lcall lamp

mov a, bit_mig
cpl a
anl a, #00000001b
mov bit_mig, a


mov msCnt_1, #0

;*****************************************Таймер включения питания на ключах*****************************************

nexX:

;MOV A, #07H
;cpl a
;add a, msCnt
;cpl a
;jnz next_

MOV A, #02h
cjne a, msCnt, no_tablo

;call tablo
mov msCnt, #00h

no_tablo:



;call swich_on

;next_:

;MOV A, #09h
;cpl a
;add a, msCnt
;cpl a
;jnz no_

;setb key

;no_:
;MOV A, #0AH
;cpl a
;add a, msCnt
;cpl a
;jnz exit_count
;mov msCnt, #00h
;call swich_off
;*******************************************************************************
*************************************************

exit_count:

pop PSW
pop ACC
pop DPP
pop DPL
pop DPH

mov b, b_temp
mov r0, r0_temp
mov r1, r1_temp
mov r2, r2_temp
mov r3, r3_temp
mov r4, r4_temp
mov r5, r5_temp
;mov r6, r6_temp
;mov r7, r7_temp


mov TH0, #0EAh
mov TL0, #66h
SETB TR0;<------------------------------------Restart
setb ea




reti
между двух строк я просто вставлял код записи в уарт, для теста.
Уарт - это внешняя микросхема (8 канальный). На другом блоке аналогичный код работает. Может я некорректно с ХRAMом работаю. Если что, вот аська 221542155


Если запретить прерывание - ошибки исчезают, но это грубое решениеsad.gif

Сообщение отредактировал novlev - May 26 2008, 07:08
Go to the top of the page
 
+Quote Post
AndreyS
сообщение May 26 2008, 09:30
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 235
Регистрация: 28-01-05
Из: Санкт-Петербург
Пользователь №: 2 276



Цитата(novlev @ May 26 2008, 10:44) *
))чудес не бывает, а вот г... случается

кусь кусь

а вот обработчик прерывания от таймера

what_time_is_it_now:
nop
nop
clr ea
CLR TF0
push PSW
push ACC
push DPP
push DPL
push DPH


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ХРУМ


pop PSW
pop ACC
pop DPP
pop DPL
pop DPH

mov b, b_temp
mov r0, r0_temp
mov r1, r1_temp
mov r2, r2_temp
mov r3, r3_temp
mov r4, r4_temp
mov r5, r5_temp
;mov r6, r6_temp
;mov r7, r7_temp
mov TH0, #0EAh
mov TL0, #66h
SETB TR0;<------------------------------------Restart
setb ea
reti
между двух строк я просто вставлял код записи в уарт, для теста.
Уарт - это внешняя микросхема (8 канальный). На другом блоке аналогичный код работает. Может я некорректно с ХRAMом работаю. Если что, вот аська 221542155
Если запретить прерывание - ошибки исчезают, но это грубое решениеsad.gif


А почему вы из стека восстанавливаете все задом на перед.??? Или это особенность Analog Devices ????


--------------------
Удачи.
Go to the top of the page
 
+Quote Post
novlev
сообщение May 26 2008, 09:54
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 24-09-06
Пользователь №: 20 645



действительно, огромное спасибо, в спешке и не заметил эту лажу, со статикой боролсяsmile.gifеще раз спасибо, сейчас на прогонку пославлю.
за 45 минут ошибка не появилась, еще раз спасибо. Зато замечен глюк адука, вочдок не срабатывает иногда, хотя кварц живой, это по результатам испытаний на статику (8кВ)

Сообщение отредактировал novlev - May 26 2008, 10:43
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 10:20
Рейтинг@Mail.ru


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