Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 05.12.2011, 20:03  
coma_nder
Гость
 
Сообщений: n/a
По умолчанию lpc2478 не работают прерывания

Использую lpc2478. Настраиваю прерывания. В регистры адреса и приоритета идет запись, прерывание срабатывает, а вот в VICAddress запись адреса обработчика прерывания не происходит. Что это может быть? Кто с таким сталкивался? Заранее благодарен.
Реклама:
 
Непрочитано 06.12.2011, 11:46  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: lpc2478 не работают прерывания

Прописали чтото типа:

VICVectAddr26 = (unsigned)T2COMP_vect;
VICVectPriority26 = 0x03;
VICVectCntl26=0x0f;
VICIntEnable|=_BV(26);



void T2COMP_vect (void) __irq
{
T2IR|=_BV(3);

VICVectAddr = 0;
return;
}
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Сказали "Спасибо" serb-radio
warel (28.06.2019)
Непрочитано 06.12.2011, 15:01  
coma_nder
Гость
 
Сообщений: n/a
По умолчанию Re: lpc2478 не работают прерывания

Проверяю под jtag. Вот код:

[HTML]#ifdef __lpc2478__
#include ‹nxp/iolpc2478.h›
#endif

__irq __arm void irq_handler (void);

__irq __arm void irq_handler (void)

{
void (*interrupt_function)();
unsigned int vector;

vector = VICADDRESS; // Get interrupt vector.
interrupt_function = (void(*)())vector;
if(interrupt_function != 0)
{
interrupt_function(); // Call vectored interrupt function.
}

VICADDRESS = 0; // Clear interrupt in VIC.
}
[/HTML]

в строчку vector = VICADDRESS; // Get interrupt vector он входит и считывает значение из VICADDRESS равное 0. В отладчике в поле отображения регистров VIC тоже значение VICADDRESS равно 0. Проверял на двух типах прерываниях - Timer0 и EXTINT0. Они разрешены и настроены правильно.
 
Непрочитано 09.12.2011, 10:22  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: lpc2478 не работают прерывания

тут и будет 0

VICVectAddr26 = (unsigned)T2COMP_vect;

указатель нужен
EugenPKH вне форума  
Сказали "Спасибо" EugenPKH
warel (28.06.2019)
Непрочитано 12.12.2011, 07:01  
coma_nder
Гость
 
Сообщений: n/a
По умолчанию Re: lpc2478 не работают прерывания

EugenPKH, а можно поподробнее, почему 0 будет? Этот кусок кода взят из примера NXP и в других программах работал.
 
Непрочитано 12.12.2011, 19:49  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: lpc2478 не работают прерывания

А что за компилятор?
Обычно по-другому делают. Подгружается cstartup.s. И далее инициализируется как писал serb-radio. В прерывание автоматом влетать должно, если смещение верное задали в cstartup.s.
Для IAR и lpc2478:

ARM

__iar_init$$done: ; The vector table is not needed
; until after copy initialization is done

__vector:
; All default exception handlers (except reset) are
; defined as weak symbol definitions.
; If a handler is defined by the application it will take precedence.
LDR PC,Reset_Addr ; Reset
LDR PC,Undefined_Addr ; Undefined instructions
LDR PC,SWI_Addr ; Software interrupt (SWI/SVC)
LDR PC,Prefetch_Addr ; Prefetch abort
LDR PC,Abort_Addr ; Data abort
__vector_0x14:
DCD 0xFFFFFFFF ; RESERVED
;LDR PC,IRQ_Handler ; IRQ
LDR PC,[PC,#-0x120] ; IRQ
LDR PC,FIQ_Addr ; FIQ

видно что смещение 0x120.
В Keil аналогично. Можно найти файл.
SasaVitebsk вне форума  
Сказали "Спасибо" SasaVitebsk
warel (28.06.2019)
Непрочитано 12.12.2011, 21:02  
coma_nder
Гость
 
Сообщений: n/a
По умолчанию Re: lpc2478 не работают прерывания

Компилятор IAR, стартап подгружен. В том-то и дело, что все срабатывает, в прерывание входит. Вот только адрес он считывает 0, а не функции-обработчика.
 
Непрочитано 13.12.2011, 17:02  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: lpc2478 не работают прерывания

Чудес не бывает. Это простой регистр. Если вы туда занесли вектор, то считается вектор, ну а если ничего не заносили, то тогда понятно...
===
Только считывать оттуда ничего не надо. Там косвенный переход. Попробую вечером на пальцах объяснить. Приведу примеры.
SasaVitebsk вне форума  
Сказали "Спасибо" SasaVitebsk
warel (28.06.2019)
Непрочитано 17.12.2011, 18:08  
coma_nder
Гость
 
Сообщений: n/a
По умолчанию Re: lpc2478 не работают прерывания

SasaVitebsk, а как узнать, заношу ли я вектор или нет? где это можно проследить?
 
Непрочитано 18.12.2011, 01:40  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: lpc2478 не работают прерывания

Ну если есть JTAG, то остановился да посмотрел. Обычно вектор заносится во время инициализации. Да это и в симуляторе увидишь.

VICVectAddr26 = (unsigned)T2COMP_vect;

Это простое занесение в регистр вектора адреса п/п T2COMP_vect.
SasaVitebsk вне форума  
Сказали "Спасибо" SasaVitebsk
warel (28.06.2019)
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TSOP4836 работают ли в реальности от 3,3В??? awtoap Микроконтроллеры, АЦП, память и т.д 3 09.04.2011 23:28
AVRStudio + WinAVR не работают... alberio Микроконтроллеры, АЦП, память и т.д 15 18.10.2010 20:16
компилятор C Hi-Tech, не работают директивы #asm #endasm alexplev Микроконтроллеры, АЦП, память и т.д 2 26.04.2008 22:47
На какой частоте работают дист. пульты теликов LG retas Видеотехника 5 24.08.2007 09:41


Часовой пояс GMT +4, время: 03:02.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot