Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Непонятное прерывание stm32

Непрочитано 23.11.2012, 19:07  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

sosedi и на какой инструкции он улетает?
Реклама:
Hives вне форума  
Непрочитано 24.11.2012, 01:01  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Сообщение от Hives Посмотреть сообщение
_Артём_ запиши: ничто не происходит мгновенно.
сброс флага не сразу сбраcывает запрос на irq, и поэтому можно еще раз вернуться в него после завершения обработчика.
Кстати да - такое возможно.

Сообщение от Hives Посмотреть сообщение
а у stm32 есть плюшка -
Только не у STM эта плюшка, а Cortex-M.
Вот такой вот пример для EFM:
Код:
OS_INTERRUPT void OS::SystemTimer_ISR() // прерывание от RTC
{
	*(volatile uint32_t *)0xE0001004=0;
	/* Clear interrupt source */
	RTC_IntClear(RTC_IFC_COMP0);
	/* Flushing instructions to make sure that the interrupt is not re-triggered*/
	/* This may be required when the peripheral clock is slower than the core */
	__DSB();
	{ // это обработчик 

		scmRTOS_ISRW_TYPE ISR;

#if scmRTOS_SYSTIMER_HOOK_ENABLE == 1
		system_timer_user_hook();
#endif
		Kernel.system_timer();
	}
}
Местами барьеры надо использовать.
_Артём_ вне форума  
Непрочитано 26.11.2012, 00:41  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
Злость Re: Непонятное прерывание stm32

Сообщение от Hives Посмотреть сообщение
sosedi и на какой инструкции он улетает?
К сожалению на какой инструкции он туда переходит я не могу узнать((а в каких случаях он может туда "Default_Reset_Handler()" переходить???

Последний раз редактировалось sosedi; 26.11.2012 в 00:53.
sosedi вне форума  
Непрочитано 26.11.2012, 15:11  
ewseltek
Частый гость
 
Регистрация: 14.07.2010
Сообщений: 30
Сказал спасибо: 0
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
ewseltek на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Лично я столкнулся с такой неприятностью- периферию сначала надо сбрасывать -
а то она себя ведет непредсказуемо - в частности таймеры- правда сейчас я копаюсь с
F103- там у них есть ф-я типа RccReset-а без этого волосы дыбом вставали.
ewseltek вне форума  
Непрочитано 30.11.2012, 14:48  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Тема все еще актуальна ((( но кстати выяснились некоторые моменты! к примеру если ткнуться осциллографом на ножку NRST то там проскакивает каждые 500мс сброс!!!!! Поискав немного в даташите(rm0090) нашел на странице 82 возможные причины сброса, в итоге это IWDG !!!!!!!!!!!Да, сброс его можно обойти - записью значений в переполняемый регистр, но почему он вообще включен? как его отключить ???
sosedi вне форума  
Непрочитано 30.11.2012, 21:03  
Hives
Гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

глянь доку PM0075, пункт 2.5
Hives вне форума  
Непрочитано 20.02.2013, 22:19  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 347
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Сообщение от Hives Посмотреть сообщение
_Артём_ запиши: ничто не происходит мгновенно.
а у stm32 есть плюшка - сброс флага не сразу сбраcывает запрос на irq, и поэтому можно еще раз вернуться в него после завершения обработчика.
Да... А у меня вот что было:
пользую несколько прерываний. UART - ВЫСОКИЙ приоритет, таймер - низкий.
Скидывал прерывание по таймеру перед выходом из обработчика. Ну дак вот: непредсказуемо, через некоторое время переставал попадать на прерывание от таймера. А uart - все отлично - попадал по приходу данных.

ЛЕЧЕНИЕ: стал скидывать прерывание сразу, первой командой. И все работает.

А вот еще глюк. Есть таймер, который работает с автоперезагрузкой в 1мС. Есть вход, на который поступают импульсы. Ловим по перепаду, и определяем длительность по таймеру.
У таймера - более низкий приоритет. Программа - ни о чем, простая. Больше прерываний нет. в mane только while(1).
Время обработки прерывания около 10 мкС. Импульсы поступают 6 - 20мСек.
Все работает. Но иногда прога залетает в обработчик таймера и сидит там 30!!!!!!! мСек
И потом все опять ок....

Лечится - ставим более высокий приоритет на таймер, чем на прерывание по фронту....


Вот здесь человек пишет про грабли с прерываниями (скидывать надо сразу при входе в ф-ию!!!!) и про файлики

А вообще, подключите все фалики к проекту :system_stm32f10x.c, startup_stm32f10x_md_vl.s, core_cm3.c - надежнее будет. /цитата/

http://www.be-em.ru/stm32-%D0%B2%D0%...D%D0%B8%D1%8F/

Последний раз редактировалось Mike121234; 20.02.2013 в 22:31.
Mike121234 вне форума  
Непрочитано 20.02.2013, 22:38  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Сообщение от Mike121234 Посмотреть сообщение
в mane
Мишаня, весна на носу? Маня вместо main - это по Фрейду !!
Boba_spb вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывание по совпадению таймера 1 gruffi AVR 38 21.10.2016 22:58
LPC13xx Внешнее прерывание Sinopteek Микроконтроллеры, АЦП, память и т.д 3 17.02.2012 10:23
Внешнее прерывание на tiny15 livsha Микроконтроллеры, АЦП, память и т.д 8 21.04.2010 01:11
непонятное в LCD zippoge Микроконтроллеры, АЦП, память и т.д 8 20.06.2009 19:03
[Решено] Непонятное устройство griggs Отвлекитесь, эмбеддеры! 17 19.05.2007 21:55


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.