ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1015400 Топик полностью
my504 (02.07.2020 17:45, просмотров: 501) ответил MBedder на 2 my504: озадачил, однако. Откуда такая информация, и про какое семейство речь - ЕР? (я вот сам не сталкивался и в ерратах не нашел) -->
Чтобы воспроизвести, нужно запустить какой нибудь таймер с прерываниями почаще и REPEAT взять не самый короткий (20...30) и после цикла проверить следующий за массивом адрес. Ставим там бряк и зацикливаем все вместе. При удачной интерференции или подобранном периоде таймера ошибка возникает практически мгновенно. Тестовый код: 
;=========================
.include "p24FJ256GA702.inc"

;=========================

    config __FSEC,BSEN_OFF & GSS_DISABLED & GWRP_OFF & CSS_DISABLED

    config __FOSCSEL,IESO_ON & FNOSC_PRIPLL & PLLMODE_PLL4X

    config __FOSC,POSCMD_XT & SOSCSEL_OFF

    config __FWDT,FWDTEN_ON_SWDTEN & WINDIS_OFF & WDTCMX_LPRC & FWPSA_PR128 & WDTPS_PS32768

    config __FPOR,BOREN_ON

    config __FICD,JTAGEN_OFF & ICS_PGD1

    config __FDEVOPT1, ALTI2C1_ALTI2CDIS

;=========================

.global __reset

.global __T2Interrupt

;=========================

    .section buf1,near,bss

array:	.space 128

test:	.space 2

;=========================

 .text



__reset:

 mov	#__SP_init, W15

 mov	#__SPLIM_init, W0

 mov	W0, SPLIM

 nop

;=========================

; clear [array] & test

 mov	#array, W0

 repeat	#63

  clr	[W0++]

 clr	test

;=========================

; init TMR2 & interrupt from TMR2 enable

 clr	TMR2

 clr	T2CON

 mov	#120, W0

 mov	W0, PR2

 bclr	IFS0, #T2IF

 bset	IEC0, #T2IE

 bset	T2CON, #TON

;=========================

Loop:

 mov	#array, W1

 repeat	#63

  inc	[W1], [W1++]

 nop

 cp0	test

 bra	Z, Loop

 nop

 nop

 bra $	; error (test corrupt) trap

;=========================

__T2Interrupt:

 push.s

 bclr	IFS0, #T2IF

 nop

 pop.s

 retfie

;----------------------------------------------

; if interrupt disable, no error...



.end