Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Atxmega32A4 прерывания по переполнению Т/С
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
nppel
Доброго времени суток!
Изучаю МК Atxmega32A4, необходимо сделать прерывания по переполнению Т/С, вот исходник:
CODE
.include "ATxmega32A4def.inc"
.include "Def.asm"
//******************************************************************************
.LISTMAC
.CSEG
.org PROGMEM_START
rjmp RESET ;Reset Handler
......
.org TCC0_OVF_vect
rjmp TCC0_OVF ; Overflow Interrupt
......
; прописана таблица прерываний

RESET:
ldi TMP_1, high(RAMEND)
out CPU_SPH, TMP_1
ldi TMP_1, low(RAMEND)
out CPU_SPL, TMP_1
ldi TMP_1,0xAA
sts LAST_ADDR,TMP_1

; Инициализация Т/С

ldi TMP_Y,0x00
sts TCC0_CTRLA,TMP_Y


ldi TMP_Y,0xAF ;
sts TCC0_CNT,TMP_Y
ldi TMP_Y,0x3C
sts TCC0_CNT+1,TMP_Y

ldi TMP_Y,0x01
sts TCC0_INTCTRLA,TMP_Y ;

ldi TMP_Y,0x04
sts TCC0_CTRLA,TMP_Y

; программа
MAIN:
........
rjmp MAIN

;п/п Прерывания
TCC0_OVF:
//--------------------------
lds TMP_Y,CPU_SREG
//---------------------------
ldi TMP_1,0xFF
//---------------------------
sts CPU_SREG,TMP_Y
//---------------------------
reti

При переполнении счетного регистра CNT, программа не заходит в обработчик прерываний, подскажите пожалуйста где ошибся?
Палыч
Забыли прерывания разрешить
nppel
Цитата(Палыч @ Feb 7 2011, 16:16) *
Забыли прерывания разрешить


Спасибо! Исправился, но обработка прерываний так и не происходит, флаг OVFIF регистра TСC0_INTFLAGS при переполнении счетного регистра не устанавливается, что то еще не так.

CODE
.include "ATxmega32A4def.inc"
.include "Def.asm"
//******************************************************************************
.LISTMAC
.CSEG
.org PROGMEM_START
rjmp RESET ;Reset Handler
......
.org TCC0_OVF_vect
rjmp TCC0_OVF ; Overflow Interrupt
......
; прописана таблица прерываний

RESET:
ldi TMP_1, high(RAMEND)
out CPU_SPH, TMP_1
ldi TMP_1, low(RAMEND)
out CPU_SPL, TMP_1
ldi TMP_1,0xAA
sts LAST_ADDR,TMP_1

; Инициализация Т/С

ldi TMP_Y,0x07
sts PMIC_CTRL,TMP_Y

ldi TMP_Y,0x00
sts TCC0_CTRLA,TMP_Y

ldi TMP_Y,0xAF ;
sts TCC0_CNT,TMP_Y
ldi TMP_Y,0x3C
sts TCC0_CNT+1,TMP_Y

ldi TMP_Y,0x01
sts TCC0_INTCTRLA,TMP_Y ;

ldi TMP_Y,0x04
sts TCC0_CTRLA,TMP_Y

; программа
MAIN:
........
rjmp MAIN

;п/п Прерывания
TCC0_OVF:
//--------------------------
lds TMP_Y,CPU_SREG
//---------------------------
ldi TMP_1,0xFF
//---------------------------
sts CPU_SREG,TMP_Y
//---------------------------
reti


Спасибо! разобрался!!! все работает!!! Забыл глобально разрешить прерывания!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.