11.11.2009, 12:51
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от colombo_2006
|
А кто нибудь может объяснить почему TXD1/RXD1 есть на 62/63 ногах и на 75/74
|
Потому что могут использоваться либо одни ножки, либо другие, по выбору.
Цитата:
|
Еще вопрос: штатный бутлодер кнопкой запустить можно?
|
Можно. В простейшем случая нужны две - одна для сброса, другая для запуска загрузчика. Загрузчик может быть запущен только непосредственно после сброса. Загляните в AN10302.
|
|
|
Эти 3 пользователя(ей) сказали Спасибо alexgap за это сообщение:
|
|
|
12.11.2009, 16:20
|
|
Частый гость
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Здравствуй, ARM. Запуск "на коленке"
Вижу никто не хочет переходить к делу, так давайте начну я.
Пытаюсь запустить прерывание таймера на камне LPC2101, среда Keil V4.01
Делаю так:
__irq void Timer0ISR (void) //Timer0 ISR
{
TimerIsUp = 1; //set Flag
T0IR = 0x01; //reset interrupt flag
VICVectAddr0 = 0; //reset VIC
return;
}
void InitTimer0 (void)
{
VICDefVectAddr = (unsigned int) &Timer0ISR;
VICIntEnable = 0x10; // Channel#4 is the Timer0
VICIntSelect = 0x00; // all interrupts are IRQs
/* Init Timer0 */
T0MR0 = 1500000; // Timer match (~ 0.1 second)
T0MCR = 0x03; // Interrupt on Match0, reset timer on match
T0PC = 0x01; // Prescaler to 2
T0TC = 0x00; // reset Timer counter
T0TCR = 0x01; // enable Timer
return;
}
int main (void) {
InitTimer0();
while (1) {
;
}
}
Прерывание не срабатывает и не могу найти крывизну.
|
|
|
|
12.11.2009, 16:39
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Я работал не с кейлом но при инициализации нужно что-то вроде
VICVectAddr4 = (unsigned int) &Timer0ISR;
А при выходе из прерывания надо что-то типа
VICAddress = 0;
Кроме того надо включить прерывания.
Что-то вроде
__ARMLIB_enableIRQ();
И совет на будущее - контроллер прерываний инициализируют последним.
|
|
|
|
12.11.2009, 16:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,360
Сказал спасибо: 85
Сказали Спасибо 619 раз(а) в 374 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от Alexey_1811
|
Вижу никто не хочет переходить к делу, так давайте Пытаюсь запустить прерывание таймера на камне LPC2101, среда Keil V4.01
Делаю так:
|
Видимо проблема в VICDefVectAddr = (unsigned int) &Timer0ISR;
Что за адрес VICDefVectAddr?
Вот мое, работает:
VICVectAddr4=(unsigned)TM0_Handler;
VICVectCntl4=0x02; //приоритет
T0MR0=1125; //1125; //1125 для 1000 Гц, 5625 для 200 Гц
T0MCR=0x03; //сброс и прерывание по достижению T0MR0
T0PR=15; //prescaler = 16
T0TCR=0x02; //сброс
T0TCR=0x01; //пуск
VICIntSelect=0x00; //все как IRQ
VICIntEnable=(1‹‹4); //разрешаем TM0
|
|
|
Сказали "Спасибо" pambaru
|
|
|
12.11.2009, 16:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,360
Сказал спасибо: 85
Сказали Спасибо 619 раз(а) в 374 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
И сам обработчик:
__irq void TM0_Handler (void){
GlobalTimer++; //делаем что надо
// и выход
T0IR |=1;
VICVectAddr=0;
}
P.S. to Alexey_1811 - не кроется ли причина также в &Timer0ISR (присутствие символа &) ? (проверять некогда)
Последний раз редактировалось pambaru; 12.11.2009 в 17:01.
|
|
|
|
12.11.2009, 17:00
|
|
Частый гость
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от pambaru
|
И сам обработчик:
__irq void TM0_Handler (void){
GlobalTimer++; //делаем что надо
// и выход
T0IR |=1;
VICVectAddr=0;
}
|
Чего то не пашет. А можно весь проэкт?
|
|
|
|
12.11.2009, 17:04
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,360
Сказал спасибо: 85
Сказали Спасибо 619 раз(а) в 374 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от Alexey_1811
|
Чего то не пашет. А можно весь проэкт?
|
Ну слишком большой и коммерческий
А также в ассемблерном файле инициализации должно быть:
; LDR PC, IRQ_Addr ; это забито комментом
LDR PC, [PC, #-0x0120] ; Vector from VicVectAddr ; а это открыто
Имею в виду место, где описываются вектора
И как выше писал:
P.S. to Alexey_1811 - не кроется ли причина также в &Timer0ISR (присутствие символа &) ? (проверять некогда)
|
|
|
|
12.11.2009, 17:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,360
Сказал спасибо: 85
Сказали Спасибо 619 раз(а) в 374 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Да, на счет моей строки:
VICVectAddr4=(unsigned)TM0_Handler;
на всякий случай поясню, что у меня LPC2468 (не сказал сразу). В вашем проце может номер вектора другой (хотя судя по вашей строке VICIntEnable = 0x10 - тот же самый).
Последний раз редактировалось pambaru; 12.11.2009 в 17:14.
|
|
|
|
12.11.2009, 17:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от Alexey_1811
|
T0TC = 0x00; // reset Timer counter
|
Правильнее T0TC = 0x02;
Сообщение от Alexey_1811
|
Прерывание не срабатывает
|
Нужно разрешить IRQ в CPSR
Код:
|
__inline void __enable_interrupt(void)
{
int tmp;
__asm
{
MRS tmp, CPSR
BIC tmp, tmp, #0x80
MSR CPSR_c, tmp
}
} |
Последний раз редактировалось AJScorp; 12.11.2009 в 17:31.
|
|
|
|
12.11.2009, 17:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,360
Сказал спасибо: 85
Сказали Спасибо 619 раз(а) в 374 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от Alexey_1811
|
Если прописываю VICDefVecyAddr = 0x00000120 то в прерывание попадаю (Хотя я понимаю что это через ж...у).
|
На счет VICDefVecyAddr не могу сказать - у меня такого определения нет.
Видимо VICDefVecyAddr = 0x00000120 эквивалентно
LDR PC, [PC, #-0x0120] ; Vector from VicVectAddr
в моем инициализационном файле.
У меня версия:
IDE-Version:
µVision3 V3.55a
Toolchain: RealView MDK-ARM Version: 3.15b
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:35.
|
|