ASugonyaev (07.04.2006 11:37, просмотров: 2176)
ADuC 7024 смертельный бой! Огромная просьба не оставьте в беде. Вот уже неделю бъюсь не могу понять как же мне заставить жто чудо работать с прерываниями. Таймера работают, порты работают, простой вызов процедуры прерывания отрабатывает, как только разрешаю прерывания от таймера - все переходит в непонятное состояние, на ресет МК точно не возвращается в процедуру IRQ не попадает. Кто подскажет куда могут деваться исполнение, где его поймать или как подловить. На симуляторе все проходит причем не только на keil но и HiTOP. До этого пытался затолкать в него тсетовый проект самого Keil - Pulse на Си с такими же результатами. Пробовал даже расколоть ядро на Undef instruction, расколоть то расколол да вот по вектору оно не пришло. Совершенно четко ясно одно что в прерывание(исключение) ядро валится, но вот куда дальше? Я ему вроде все дышло перекрыл? Код ниже, подскажите хоть какую либо наметку AD-шникии молчат к семинару готовятся. А у меня уже от недельного секса с этим девайсом палец устал на serial download давить.
AREA start, CODE, AT 0x00000000
BUTTON_ADDR SET 0420h
T1LD SET 0320h
T1VAL SET 0324h
T1CON SET 0328h
T1CLRI SET 032Ch
IRQEN SET 0008h
FIQEN SET 0108h
Mode_USR equ 10h
Mode_FIQ equ 11h
Mode_IRQ equ 12h
Mode_SVC equ 13h
Mode_ABT equ 17h
Mode_UNDEF equ 1Bh
Mode_SYS equ 1Fh
I_Bit equ 80h /* when I bit is set, IRQ is disabled */
F_Bit equ 40h /* when F bit is set, FIQ is disabled */
POWKEY1_OFFSET equ 0404h
POWCON_OFFSET equ 0408h
POWKEY2_OFFSET equ 040Ch
PLL_SETUP equ 1
PLLCFG_Val equ 00000001h
b reset ;0
b Undef ;1
b vec_SWI_vec ;2
b PAbt ;3
b DAbt ;4
b Undef ;5
b IRQ ;6
b FIQ ;7
reset:
mov r3, #-2147483648
mov r4, r3, asr #15 ; r4 = 0xFFFF0000
mov r3, r3, asr #19 ; r3 = 0xFFFFF000
mov r1, r3, asr #12 ; r1 = 0xFFFFFFFF
MSR CPSR_c, #Mode_SVC;|I_Bit|F_Bit
;undefcmd: DD 0DE000001h
STR r3,[r3,#460h]
STRB r3,[r3,#462h]
mov r5,#10h
STR r5,[r4,#FIQEN]
add r5,r1,#2
STR r5,[r4,#T1LD]
mov r5,#2D0h
sub r5,r5,#1
add r4,r4,#T1CON
STRH r5,[r4,#0h]
sub r4,r4,#T1CON
L2:
LDRB r2,[r3,#BUTTON_ADDR]
ands r2,r2,#01h
STREQB r1,[r3,#462h]
LDR r5,[r4,#T1VAL]
ands r5,r5,r5
STREQB r3,[r3,#462h]
b L2
ORG 0x100
Undef:
vec_SWI_vec:
PAbt:
DAbt:
FIQ:
IRQ:
mov r3, #-2147483648
mov r4, r3, asr #15 ; r4 = 0xFFFF0000
mov r3, r3, asr #19 ; r3 = 0xFFFFF000
mov r1, r3, asr #12 ; r1 = 0xFFFFFFFF
;STRB r3,[r4,#T1CLRI]
;STR r3,[r4,#IRQEN]
STR r3,[r3,#460h]
and r1,r1,#02h
STRB r1,[r3,#462h]
irq_loop:
b irq_loop
END