Easyelectronics.ru

Электроника для всех
Текущее время: 24 окт 2020, 20:41

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:09 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
"У тебя косяк с функцией InitClk()."
у меня проходит этот момент нормально, если запустить на выполнение в дебаге, то как и ожидалось виснет в стартупе на
TIM1_TRG_COM_TIM17_IRQHandler
см. дальше...

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:11 
Заглядывает иногда

Зарегистрирован: 29 ноя 2010, 23:50
Сообщения: 137
Откуда: Калуга
Я не заливал. В симуляторе, при стимуляции прерывания нормально прыгает в обработчик, отрабатывает там и возвращается назад.
Действительно смотрим дальше


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:15 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
у меня обработчика да же в коде нет :(

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:17 
Заглядывает иногда

Зарегистрирован: 29 ноя 2010, 23:50
Сообщения: 137
Откуда: Калуга
Код:
void TIM1_TRG_COM_TIM17_IRQHandler(void)
{
  if (TIM17->SR & TIM_SR_UIF)
  {
    TIM17->SR &= ~TIM_SR_UIF;
    ProcessLeds();
  }
}
Дык.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:23 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
дык, не ту её
--
забыл добавить, я разрешил прерывания (а то первый раз сказал что изменения не внес, прокосячил)
--
__enable_irq();

и тупо перенес код обработчика в system_stm32f..., потому что функция систем инит подтянулась из этого файла (т.е. есть в выходном коде)

и о чудо, обработчик появился в коде! теперь он пашет.
сморю дальше что он должен делать...

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:27 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
блин пока допрешь что значит "spin_m" это же надо так обозвать :)
короче поменял на ipin_m и о чудо, светодиоды заморгали...

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:32 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
в общем не понял прикола иара, но вот эта шутка дожна заменяться
Код:
PUBWEAK TIM1_TRG_COM_TIM17_IRQHandler
        SECTION .text:CODE:REORDER(1)
TIM1_TRG_COM_TIM17_IRQHandler
        B TIM1_TRG_COM_TIM17_IRQHandler

на твою функцию
Код:
void TIM1_TRG_COM_TIM17_IRQHandler(void)
{
  if (TIM17->SR & TIM_SR_UIF)
  {
    TIM17->SR &= ~TIM_SR_UIF;
    ipin_m(PORTC, LED3_MASK);
    ipin_m(PORTC, LED4_MASK);
  }
}

но вот только если функция лежит в main, то ни чего не происходит. тут нужно к спецам по иару вопрос, у гцц таких залетов нет.

--
таким образом смотри есть ли у тебя обработчик в выходном коде?
я спать у меня уже пол 12-ого, завтра на работу...

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 23:01 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Zheleznjakov писал(а):
блин пока допрешь что значит "spin_m" это же надо так обозвать :)
короче поменял на ipin_m и о чудо, светодиоды заморгали...


Пардон! Это я вчера вчера в час ночи накосячил - спать хотелось уже =)

Zheleznjakov писал(а):
и тупо перенес код обработчика в system_stm32f..., потому что функция систем инит подтянулась из этого файла (т.е. есть в выходном коде)


Эм... Глюкавое оно.. Есть вариант убрать нафик эти 3 файла (system_stm32f...c, system_stm32f...h и startup_...s), а таблицу прерываний выполнить где-то в другом месте? Если да, то как?

Спасибо за помощь! Сам бы долго до этого додумывался =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 23:22 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Апдейт:

Я чего добавил в проект файлы system_stm32f10x.c/.h ? Того что компилятор попросил... А в мэйн.с я-то его не инклудил - думал "а нафик оно мне надо?!". А оно действительно надо... Проинклудил system_stm32f10x.h в main.c, описал extern void TIM1_TRG_COM_TIM17_IRQHandler(void); в system_stm32f10x.h и о чудо! Заработало из мэйн.с! Мдааааа.......

Короче мне не нравятся совсем три этих файла... Надо бы, по хорошему, объявить нужные прерывания где-то у себя.
Кто знает как сие сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 21 июн 2011, 06:05 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
все эти файлы нужны, только если сам перепишешь...
--
у меня совет только один, переходи на гцц :)
иар я уже удалил...

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 21 июн 2011, 10:24 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Zheleznjakov писал(а):
все эти файлы нужны, только если сам перепишешь...
--
у меня совет только один, переходи на гцц :)
иар я уже удалил...


А как в случае работы с gcc производить отладку программы? Есть где статейка по переходу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 21 июн 2011, 10:41 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
тут я не подскажу, не пользуюсь отладкой.

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 21 июн 2011, 13:19 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Все, проблемма найдена!
Оказывается, хитровы*****е разработчики иара слегка урезали с++ компилятор, в итоге переопределение функции при компиляции вообще не происходит.
А чтобы нормально работало надо перед функцией прерывания добавить

Код:
extern "C" __irq __arm имя ф-ции


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 21 июн 2011, 14:00 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
в доке указанно что для кортексов не нужно, и это действительно должно быть так (при помощи WEAK), но почему то не пашет.
Цитата:
Writing an interrupt handler for Cortex-M3
On Cortex-M3, an interrupt service routine enters and returns in the same way as a normal function, which means no special keywords are required.
In the Interrupt.c file in the Project4CM3 project, the interrupt function UART_Handler is provided. Note that when you add an interrupt function for Cortex-M devices, you must also add the name of that function in the interrupt vector table. You do this in the system startup code cstartup.s. For this tutorial, a reference to the UART_Handler function is already provided in __vector_table, which you can find in the file CstartupCM3.s.
For more information about how to write device-specific interrupt functions for Cortex-M, see the IAR C/C++ Development Guide for ARM®.

а вот для arm7tdmi
Код:
Writing an interrupt handler for ARM7TDMI
The following lines define the interrupt handler used in this tutorial (the complete source code can be found in the file Interrupt.c in project4 supplied in the arm\tutor directory):
/* define the IRQ handler */
__irq __arm void IRQ_Handler( void )
The __irq keyword is used for directing the compiler to use the calling convention needed for an interrupt function. The __arm keyword is used for making sure that the IRQ handler is compiled in ARM mode. In this example only UART receive interrupts are used, so there is no need to check the interrupt source. In the general case however, when several interrupt sources are used, an interrupt service routine must check the source of an interrupt before action is taken.
For detailed information about the extended keywords used in this tutorial, see the IAR C/C++ Development Guide for ARM®.

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 21 июн 2011, 16:20 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
По хорошему да, этого не нужно... Но разве разработчики иара спрашивали кого-то когда из версии 5.10 (да-да, именно начиная с этой версии появились грабли с прерыванием) убирали поддержку #pragma vector из с++ компилятора?!! Отсюда и имеем грабли... Короче бред.

Убрал из заголовка обработчика прерываний "__arm" - ничего не изменилось, прерывания и дальше обрабатываются

Спасибо за помощь!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 25 июн 2011, 11:06 
Только пришел

Зарегистрирован: 13 май 2011, 11:21
Сообщения: 28
ChipKiller писал(а):
закачал сюда http://zalil.ru/31301977

Спасибо, интересная подборка.

Насколько я понял, ядро cortex-m3 не поддерживает полный набор инструкций АРМ ассемблера, а только лишь сокращенный набор инструкций называемый thumb 2 ?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB