CODE
.include "ATxmega128A3def.inc"
.equ fmin=5
.equ grflag2=GPIO_GPIOR2
.cseg
;**************************** INTERRUPT VECTORS*****************************************
.org 0
jmp reset
.org 0x0100;+++++++++++++++++++++++++++++++++++++++++++++++++++++
main:
wdr
ldi rtmp,0xD8
out CPU_ccp,rtmp
clr rtmp
sts WDT_CTRL,rtmp; WDT OFF
cli // думал причина в прерываниях..отключил.. не в них
m1:
in r18,grflag2 // r18 все время равен 0, следовательно флаг grflag2.5 = 0 //////// вот тут не понятно чего вы добивались.
sbic grflag2,fmin // пропускаю и попадаю на nop-> rjmp
RCALL letterd ////////////////////////////ОШИБКА исправлена
// даже при пустом m1: nop nop rjmp m1 вываливаюсь на ресет
rjmp m1;*******************************
nop
ret /////////////////////////////////////// ОШИБКА ???
letterd: // как ни странно но в эту функцию я тоже попадаю
nop // хотя из условия выше я долже ее обходить
ret
;************** RESET ******* // стандартный набор для инициализации
RESET:
cli
ldi r16,low(RAMEND)
out CPU_SPL,r16
ldi r16,high(RAMEND)
out CPU_sph,r16
clr r16
clr xh
ldi xl,0xff
res1: st x+,r16
cpi xh,high(ramend)
brmi res1
ldi rtmp,0b01000111
sts OSC_XOSCCTRL,rtmp
ldi rtmp,0b00001001
sts OSC_CTRL,rtmp
ser rtmp
sts kzad,rtmp
call gzad16
lds rtmp,OSC_STATUS
sbrs rtmp,3;XOSCRDY
rjmp res2
ldi rtmp,0xD8
out CPU_ccp,rtmp
res2:
ldi rtmp,0b011
sts clk_ctrl,rtmp;extern. CLK
rjmp main
И если честно, то переходы мутные, код не читабелен. Все вызываемые CALL'ом подпрограммы в отдельный файл .asm и в конце главного файла инклуд.
И структуру надо переделать: сначала RESET потом main, а в конце jmp main. никаких ret посреди кода не надо.
И проверьте сторожевой таймер:
Код
clr rtmp
sts WDT_CTRL,rtmp; WDT OFF
Из даташита:
Бит 1 - ENABLE: разрешение работы сторожевого таймера
С помощью данного бита можно активизировать работу сторожевого таймера WDT.
Попытка изменения данного бита будет эффективной только при условии одновременной записи лог. 1 в бит CEN этого же регистра. Бит ENABLE защищен механизмом защиты от изменения конфигурации (см. 3.12 "Защита от изменения конфигурации").
Сообщение отредактировал IgorKossak - Oct 6 2011, 14:03
Причина редактирования: [codebox]