|
ATmega 16 и прерывания, переход по прерыванию не в ту степь |
|
|
|
Apr 18 2011, 09:49
|
Группа: Новичок
Сообщений: 7
Регистрация: 28-09-06
Пользователь №: 20 769

|
Добрый день! Нужна помощь в поиске ошибки,скорее всего в голове. Программировал до этого 2313. Решил перейти на Мегу 16 и сразу грабли.Вот: CODE .device Atmega16 .nolist .include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m16def.inc" .list ;====== Объявления =========================================== .def temp =r16 ;=======Начало программы======================================== jmp init ;RESET jmp Impuls1 ;внешнее прерывание от INT0 jmp Impuls2 ;внешнее прерывание от INT1 reti reti reti reti reti reti jmp Display ;таймер/счётчик №0 переполнение reti reti reti reti reti reti reti reti reti reti reti
;========= СТЕК ================================================= ldi temp,LOW(RAMEND) out SPL,temp ldi temp,HIGH(RAMEND) out SPH,temp
;=========================================================================== Init: ser temp ;все выхода PB1-PB7_индикаторы out DDRB,temp ldi temp,0b11100111 ; PD3@PD4 вход счета импульсов out DDRD,temp ; PD0-PD2_номер индикатора
ldi temp,0b00000010 ;частота TCNT0 равна CK/8 out TCCR0,temp ldi temp,0b00001100 ;частота TCNT1 равна CK/256 out TCCR1B,temp ;сбрасывать TC1 при совпадении ldi temp,0b10110111 out OCR1AH,temp ldi temp,0b00011011 out OCR1AL,temp
ldi temp,0b11000011 out GICR,temp ldi temp,0b00001010 ;прерывание INT1 - низкий уровень out MCUCR,temp
ldi temp,0b00001001 ;разреш.прерывания по переполнению TC0 out TIMSK,temp sei ;================================================= CHK: ldi temp,0b00000001 ;устанавливаем 0 нулевого разряда out PortD,temp mov temp,r0 out PortB,temp sei ;========================================================== Start: rjmp Start Impuls1: nop reti
Impuls2: nop reti
Display: nop reti
При возникновении прерывания переходит на строчку " jmp init ;RESET". Шаманский бубен и ночные пляски у костра не помогли! Программа AVR Studio.
Сообщение отредактировал IgorKossak - Apr 18 2011, 11:45
Причина редактирования: [codebox] !!!
|
|
|
|
|
 |
Ответов
|
Apr 18 2011, 11:12
|
Группа: Новичок
Сообщений: 7
Регистрация: 28-09-06
Пользователь №: 20 769

|
Если я правильно понял , то кусочек программы должен выглядеть так: CODE ;=======Начало программы======================================== .org 0 jmp init;RESET
.org INT0addr jmp Impuls1;внешнее прерывание от INT0
.org INT1addr jmp Impuls2;внешнее прерывание от INT1
.org OVF0addr jmp Display;таймер/счётчик №0 переполнение
.org INT_VECTORS_SIZE ;Store Program Memory Ready Handler
;=========================================================================== Init:
ser temp ;все выхода PB1-PB7_индикаторы out DDRB,temp ; ldi temp,0b11100111 ; PD3@PD4 вход счета импульсов out DDRD,temp ; PD0-PD2_номер индикатора ldi temp,0b00000010 ;частота TCNT0 равна CK/8 out TCCR0,temp ldi temp,0b00001100 ;частота TCNT1 равна CK/256 out TCCR1B,temp ;сбрасывать TC1 при совпадении ldi temp,0b10110111 out OCR1AH,temp ldi temp,0b00011011 out OCR1AL,temp
ldi temp,0b11000011 out GICR,temp ldi temp,0b11111010 ;прерывание INT1 - низкий уровень out MCUCR,temp
ldi temp,0b00001001 ;разреш.прерывания по переполнению TC0 out TIMSK,temp
ldi DisplayCounter,25 clr ZH
ldi temp,LOW(RAMEND) out SPL,temp ldi temp,HIGH(RAMEND) out SPH,temp sei ;================================================= CHK: ldi temp,0b00000001 ;устанавливаем 0 нулевого разряда out PortD,temp mov temp,r0 out PortB,temp sei ;========================================================== Честно сказать датащит до дыр стер и 45 страницу тоже,но с аглицким проблема (учили французскому),поэтому и недопонимание прочитанного.Хочется ведь не останавливаться на2313!
Сообщение отредактировал IgorKossak - Apr 18 2011, 11:46
Причина редактирования: [codebox] !!!
|
|
|
|
Сообщений в этой теме
mishara777 ATmega 16 и прерывания Apr 18 2011, 09:49 Сергей Борщ QUOTE (mishara777 @ Apr 18 2011, 12:49) Ш... Apr 18 2011, 10:06 mishara777 Прошу прощения за оформление первого топа,сказывае... Apr 18 2011, 10:23 Сергей Борщ QUOTE (mishara777 @ Apr 18 2011, 13:23) И... Apr 18 2011, 10:37 нечитатель Цитата(mishara777 @ Apr 18 2011, 13:49) Р... Apr 18 2011, 10:29 ae_ Плюс к тому, что установка стека не выполняется, о... Apr 18 2011, 10:41 Палыч Цитата(mishara777 @ Apr 18 2011, 15:12) К... Apr 18 2011, 12:24 ILYAUL КодInit:
cli
ldi temp,LOW(RAMEND)
... Apr 18 2011, 11:21 mishara777 Спасибо за терпение! Сделал все ,как написали.... Apr 18 2011, 11:32 mishara777 Уважаемый ,Палыч! Это ЦитатаОбработчика одного... Apr 18 2011, 13:43 Палыч Цитата(mishara777 @ Apr 18 2011, 17:43) Э... Apr 18 2011, 13:52 mishara777 Спасибо за совет. Сейчас буду исправлять Apr 18 2011, 14:02 alag57 Цитатас аглицким проблема (учили французскому)
Евс... Apr 18 2011, 14:55 ILYAUL И пишите вместо 0b01010111 (для примера и от балд... Apr 18 2011, 15:03 mishara777 Уважаемые форумчане! Спасибо за оперативную по... Apr 18 2011, 15:43 Павлик Используй симулятор, сметриш на счетчик стэка, есл... Apr 26 2011, 04:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|