Обсуждаем контроллеры компании Atmel.
Ответить

Помогите разобраться с таймером-счетчиком

Сб ноя 12, 2005 21:55:47

:) Помогите пожалуйста разобраться.
Начинаю осваивать AVR микроконтроллеры. Выбрал ATMEGA8535, написал небольшую программу мигания светодиодов, с реализацией задержки на таймере-счетчике.
Симулировал в AVR Studio 3.51, идет нормально, в AVR Studio 4 (также как и вреальном МК после прошивки) -
после выхода из прерывания не возвращается в то место где произошло прерывание.
:( Что не так делаю?

Вот программа:

.include "m8535def.inc"

.def TMP = R16
.def VERT = R17

.org 0x0
rjmp START
.org 0x09
rjmp TIM_OVF0
.org 0x50
START:
clr TMP
out TIMSK,TMP
cli
out ASSR,TMP
out TCCR0,TMP
ser TMP
out DDRC,TMP
ldi VERT,0x0f
out PORTC,VERT
clr TMP
out TCNT0,TMP
ldi TMP,1
out TCCR0,TMP
sei
ldi TMP,1
out TIMSK,TMP
loop:
rjmp LOOP

TIM_OVF0:
swap vert
out PORTC,vert
reti
.exit

Зарание благодарен всем кто ответит. :))

Вс ноя 13, 2005 19:56:17

Не инициализирован стек - вот и се :)

По метке Start пишем что-то вроде:

out SPL, Low(Ramend*2)
out SPH,High(Ramend*2)

Вт ноя 22, 2005 21:35:32

C ATMEGA8535 вроде понятно.
А как быть с ATtiny15?
Регистра SP в описании не обнаружил.
Написал программу, подобную предыдущей (для ATMEGA8535)
Биты I в SREG, и TOIE0 в TIMSK установленны, но при переполнении
TCNT0 бит TOV0 не устанавливается и прерывания не происходит. :(

Ср ноя 23, 2005 05:37:32

Не, в тини должен быть только регистр SPL. То есть надо прописать:

out SPL, Ramend
Ответить