реклама на сайте
подробности

 
 
> Вопрос по AVRstudio, Это баг или я чего-то незнаю?
Potter
сообщение Feb 21 2007, 21:08
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508



Собственно вопрос вот в чем....

Тело вектора прерывания:

.org ovf0addr
rjmp Timer0


Timer0:
cli

ldi r16, 0x94 ; 148
out TCNT0, r16

sei

reti

Почему после того как выполнилось все тело прерывания по команде "reti" щетчик переходит по нулевому адресу?

И почему после следующих операций:

ldi r16, 0x94 ; 148
out TCNT0, r16

Число 0x94 не заносится в регистр TCNT0?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dopler
сообщение Feb 21 2007, 21:45
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



На самом деле даже в приведенном коде много что не правильно.


Во первых - при переходе на вектор прерывания запрещать/разрешать оные не надо. На досуге посмотрите разницу между командами ret и reti. (Ладно, скажу reti = ret+sei).

Также вы от нас кое что утаиваете - какой контроллер, чему равно ovf0addr (судя по всему оно равно у вас 0, а это вектор RESET), и где в коде у вас .org 300?

Вопросами стека можете пока не забивать себе голову, главное, чтобы он был проинициализирован.

А вообще любая программа на asm должна начинаться примерно так:


Код
;*************************************************
.cseg    
;*************************************************
rjmp     RESET         ; Reset Handler
reti;    rjmp EXT_INT0 ; IRQ0 Handler
reti;    rjmp EXT_INT1 ; IRQ1 Handler
reti;    rjmp PCINT0 ; PCINT0 Handler
reti;    rjmp PCINT1 ; PCINT1 Handler
reti;    rjmp PCINT2 ; PCINT2 Handler
reti;    rjmp WDT     ; Watchdog Timer Handler
        rjmp TIM2_COMPA; Timer2 CompareA Handler
reti;    rjmp TIM2_COMPB; Timer2 CompareB Handler
reti;    rjmp TIM2_OVF ; Timer2 Overflow Handler
reti;    rjmp TIM1_CAPT ; Timer1 Capture Handler
        rjmp TIM1_COMPA; Timer1 CompareA Handler
reti;    rjmp TIM1_COMPB; Timer1 CompareB Handler
reti;    rjmp TIM1_OVF ; Timer1 Overflow Handler
reti;    rjmp TIM0_COMPA; Timer0 CompareA Handler
reti;    rjmp TIM0_COMPB; Timer0 CompareB Handler
reti;    rjmp TIM0_OVF ; Timer0 Overflow Handler
reti;    rjmp SPI_STC ; SPI Transfer Complete Handler
reti;    rjmp USART_RXC ; USART RX Complete Handler
reti;    rjmp USART_UDRE; UDR Empty Handler
reti;    rjmp USART_TXC ; USART TX Complete Handler    
reti;    rjmp ADC_Conv; ADC Conversion Complete Handler
reti;    rjmp EE_RDY ; EEPROM Ready Handler
reti;    rjmp ANA_COMP ; Analog Comparator Handler
reti;    rjmp TWSI     ; Two-wire Serial Interface Handler
reti;    rjmp SPM_RDY ; Store Program Memory Ready Handler
;----------------------------------------------------------------------------------------------------------------------------

;----------------------------------------------------------------------------------------------------------------------------
RESET:
    ldi     tmp,    high(RAMEND) ; Main program start
    out     SPH,    tmp         ; Set Stack Pointer to top of RAM
    ldi     tmp,    low(RAMEND)
    out     SPL,    tmp



Этот код берется прямиком из даташит, он приведен в разделе Interrupts.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Potter   Вопрос по AVRstudio   Feb 21 2007, 21:08
- - beer_warrior   ЦитатаПочему после того как выполнилось все тело п...   Feb 21 2007, 21:18
|- - Potter   Цитата(beer_warrior @ Feb 21 2007, 22:18)...   Feb 21 2007, 21:24
- - Potter   Блин... Ну подскажите... Я в тупике....   Feb 21 2007, 21:44
- - Potter   Вот код всей прогаммы: .include "m128def.inc...   Feb 21 2007, 21:54
|- - Dopler   Цитата(Potter @ Feb 21 2007, 21:54) Ну ...   Feb 21 2007, 22:04
- - beer_warrior   ЦитатаЧто значит переполнение стека? при вызове пр...   Feb 21 2007, 21:58
- - Potter   Dopler... Будьте добры... Пожалуйста прокоментируй...   Feb 21 2007, 22:23
- - Dopler   Мой код, это тоже самое, что и у вас. 1. Подключа...   Feb 21 2007, 22:42
|- - Qwertty   Цитата(Dopler @ Feb 21 2007, 22:42) Мой к...   Feb 22 2007, 00:25
- - Potter   Спасибо... ведь не обязательно в программе писать ...   Feb 21 2007, 23:58
- - beer_warrior   Цитатаведь не обязательно в программе писать все а...   Feb 22 2007, 00:04
- - Potter   И последнее... почему все таки у меня не получаетс...   Feb 22 2007, 00:47
|- - SasaVitebsk   Цитата(Potter @ Feb 22 2007, 01:47) И пос...   Feb 22 2007, 01:01
- - beer_warrior   ЦитатаНе подскажите, что она значит? Понятно, что ...   Feb 22 2007, 00:55
- - Qwertty   Цитата(beer_warrior @ Feb 22 2007, 00:55)...   Feb 22 2007, 01:18
- - Dopler   Цитата(Qwertty @ Feb 22 2007, 01:18) Цита...   Feb 22 2007, 08:14


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 4th July 2025 - 22:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016