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

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

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

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

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

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


 
Опции темы
Непрочитано 23.11.2012, 12:19  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
Восклицание Непонятное прерывание stm32

Всем привет. Начну сначала) На днях попал мне в руки stm32f405, ну думаю ща поиграюсь, но не тут-то было( Развел платку прилепил светодиод, накнопал простейшую программу мигания светодиода по таймеру:
Код
PHP код:
#include "stm32f4xx.h"
void TIM5_IRQHandler()
    {
    
GPIOB-›ODR^=GPIO_ODR_ODR_8;
    
TIM5-›SR&= ~TIM_SR_UIF;                 //Сбрасываем флаг UIF
    
}

int main(void)
{

    
//***********TIM5***************
        
RCC-›APB1ENR     |= RCC_APB1ENR_TIM5EN;        // тактирование таймера
    
TIM5-›PSC         16000;                    // предделитель
    
TIM5-›ARR         1000;                        // переполнение
    
TIM5-›DIER         |= TIM_DIER_UIE;            // прерывание по переполнению
    
TIM5-›CR1         |= TIM_CR1_CEN;                // запуск счета
    
NVIC_EnableIRQ(TIM5_IRQn);
    
NVIC_SetPriority(TIM5_IRQn,15);


    
RCC-›AHB1ENR    |= RCC_AHB1ENR_GPIOBEN;
    
GPIOB-›MODER    |= GPIO_MODER_MODER8_0;
    
GPIOB-›ODR    |= GPIO_ODR_ODR_8;

        
//***********MCO2**************
            
RCC-›AHB1ENR    |= RCC_AHB1ENR_GPIOCEN;
            
RCC-›CFGR        &=~RCC_CFGR_MCO2;            // РІС‹РІРѕРґ System clock (SYSCLK) РЅР° PC9
            
RCC-›CFGR        |= (RCC_CFGR_MCO2PRE_1|RCC_CFGR_MCO2PRE_2);// 110: division by 4
            
GPIOC-›MODER    |= GPIO_MODER_MODER9_1;        // output
            
GPIOC-›OSPEEDR    |= GPIO_OSPEEDER_OSPEEDR9;    // 100Mhz I/O


    
while(1)
    {

    }

зашил в МК! светодиод то зажегся, но не моргает((((( но если присмотреться, он все время как-то подмигивает!
В итоге, если в debug-ере установить breakpoint в начале программы и нажать run то контроллер без проблем туда возращается, при учете что вконце программы есть while(1) -бесконечный цикл!Дело в том что если зашить этуже программу в stm32f4discovery то все работает корректно и при установке breakpoint он к нему никогда не доходит!!!!!


Подскажите из-за чего может происходить прерывание, или что еще это может быть???????????
как определить, какое именно прерывание произошло?


Кстати я еще не совсем уверен в правильности обвязки МК: по 0.1 и 1 мкФ на каждый VDD,по 2.2мкФ на GND от vcap1 и vcap2, NRST через 100к на VDD, BOOT0 и BOOT1 по 10к на VDD и 510 Ом на GND, ну и для SWD вывел VDD,PA14,GND,PA13,NRST,PB3.Правильно?
Реклама:
sosedi вне форума  
Непрочитано 23.11.2012, 12:21  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Возьмите схему Discovery и посмотрите, как сделана обвязка. У вас проблема явно в железе.
Easyrider83 вне форума  
Непрочитано 23.11.2012, 13:30  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Сообщение от Easyrider83 Посмотреть сообщение
Возьмите схему Discovery и посмотрите, как сделана обвязка. У вас проблема явно в железе.
Дк уже все сто раз перепроверял(
sosedi вне форума  
Непрочитано 23.11.2012, 13:34  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Инкременируйте переменную u32 в основном цикле. Когда наберет большое значение, переход в процедуру какую-нибудь сделайте. В этой процедуре сидите с brake point. Если программа туда придет, значит нормально все.
Easyrider83 вне форума  
Непрочитано 23.11.2012, 14:44  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

мелкая гадость:
TIM5-›SR&= ~TIM_SR_UIF;
должно быть первой инструкцией в прерывании - иначе влетишь туда опять.
Hives вне форума  
Непрочитано 23.11.2012, 17:32  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
Восклицание Re: Непонятное прерывание stm32

Сообщение от Hives Посмотреть сообщение
мелкая гадость:
TIM5-›SR&= ~TIM_SR_UIF;
должно быть первой инструкцией в прерывании - иначе влетишь туда опять.
да, спасибо за замечание) но это, к сожалению, не решает мою проблему(

Кстати было замечано!!!!!!!!!!!!!!!!, если законектиться к процессору в программе st-link utility то после отсоединения -светодиод моргает как положено в теченинии некоторого времени , потом вновь начинает просто гореть, а точнеее ,если присмотреться, подмигивать!
Да бред!!!!!!!!!!!! но это факт!!!!!!!!!!!!!!!
sosedi вне форума  
Непрочитано 23.11.2012, 17:36  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

ты чисто для пробы десяток __no_operation() перед выходом из прерывания поставь
Hives вне форума  
Непрочитано 23.11.2012, 18:16  
sosedi
Частый гость
 
Регистрация: 31.07.2012
Сообщений: 45
Сказал спасибо: 28
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
sosedi на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Сообщение от Hives Посмотреть сообщение
ты чисто для пробы десяток __no_operation() перед выходом из прерывания поставь
А разве у STM есть такая функция?
программа все время улетает в прерывание void Default_Reset_Handler()!
ну и следовательно перезагружается вся программа переходом в main!!!!
sosedi вне форума  
Непрочитано 23.11.2012, 18:28  
_Артём_
Гражданин KAZUS.RU
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

Сообщение от Hives Посмотреть сообщение
мелкая гадость:
TIM5-›SR&= ~TIM_SR_UIF;
должно быть первой инструкцией в прерывании - иначе влетишь туда опять.
Программа не может влететь туда опять, потому что вытеснить прерывание может только другое прерывание с более высоким приритетом. А вот если флаги не сбросить, тогда после выхода опять окажется в том же обработчике
_Артём_ вне форума  
Непрочитано 23.11.2012, 19:03  
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Непонятное прерывание stm32

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

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

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

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, время: 06:41.


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