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

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

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

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

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

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


 
Опции темы
Непрочитано 16.03.2011, 15:14  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
В файле stm8_interrupt_vector.c прописываю
{0x82, (interrupt_handler_t)TIM4_UPD_OVF_IRQHandler}, /* irq23 */
Не важно как функция называется.
Код:
// main.c
@far @interrupt void TIM3_UPD(void)
{
 // обработчик
}

// stm8_interrupt_vector.c
extern @far @interrupt void TIM3_UPD(void); // прототип обязателен
...
// массив векторов
{0x82, (interrupt_handler_t)TIM3_UPD}, /* irq15 */
Реклама:
kison вне форума  
Сказали "Спасибо" kison
andries5 (16.03.2011)
Непрочитано 16.03.2011, 17:10  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,771
Сказал спасибо: 123
Сказали Спасибо 599 раз(а) в 416 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: FAQ по STM8

Все так и сделал, но постоянно выбрасывает на
@far @interrupt void NonHandledInterrupt (void)
в stm8_interrupt_vector.c
толи TIM4 UPD не IRQ23. Не понимаю.
Счет идет, SR устанавливается флаг прерывания, но не обрабатывается в нужной мне функции.
На @far @interrupt void NonHandledInterrupt (void)
выкидывает сразу после TIM4_Cmd(ENABLE);
если не разрешать прерывания, то взводится SR флаг прерывания, но понятно что нет его обработки.

Последний раз редактировалось andries5; 16.03.2011 в 17:20.
andries5 вне форума  
Непрочитано 16.03.2011, 17:23  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
толи TIM4 UPD не IRQ23. Не понимаю.
Может и такое быть. Вектора в даташите с дырками, причем именно в части таймеров. Я точно знаю только про 2-ой и 3-ий таймеры. Можно ловушек понавесить на каждый вектор. Тогда будет точно понятно куда попадаем при прерывании.
kison вне форума  
Непрочитано 16.03.2011, 17:26  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,771
Сказал спасибо: 123
Сказали Спасибо 599 раз(а) в 416 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: FAQ по STM8

Инициализация таймера
void tim4_init(void)
{
TIM4_DeInit();
/* Time base configuration */
TIM4_TimeBaseInit(TIM4_PRESCALER_2,0x7F );
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
enableInterrupts();
/* Enable TIM4 */
TIM4_Cmd(ENABLE);
}
Может здесь где-то ошибка?
Большое Вам спасибо за помощь.
andries5 вне форума  
Непрочитано 16.03.2011, 17:39  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
Может здесь где-то ошибка?
Давайте все же по порядку. На какой то вектор Вы все же попадаете.
Что за кристалл, есть ли другие используемые вектора? Лучше перейти в https://kazus.ru/forums/showthread.php?t=20861 для конкретного разбора ситуации.
kison вне форума  
Непрочитано 16.03.2011, 17:40  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,771
Сказал спасибо: 123
Сказали Спасибо 599 раз(а) в 416 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: FAQ по STM8

Сделал заглушки и вышел на IRQ2. Прерывание от CLK.
В CLK_ClockSwitchConfig() было включено прерывание Clock Switch interrupt, но если мне нужно знать момент их переключения, как же быть?

Последний раз редактировалось andries5; 16.03.2011 в 17:49.
andries5 вне форума  
Непрочитано 16.03.2011, 17:51  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
Сделал заглушки и вышел на IRQ2. Прерывание от CLK.
Значит переключаетесь так - с обработчиком. Ну а попав в NonHandledInterrupt выхода уже нет. Ну а пока генератор запускается успевает таймер включиться. Но прерывание от такта приходит раньше, чем первое от таймера...
kison вне форума  
Непрочитано 16.03.2011, 17:52  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
но если мне нужно знать момент их переключения, как же быть?
Ну так и напишите обработчик на это прерывание.
kison вне форума  
Непрочитано 16.03.2011, 17:59  
andries5
Почётный гражданин KAZUS.RU
 
Регистрация: 19.02.2008
Сообщений: 1,771
Сказал спасибо: 123
Сказали Спасибо 599 раз(а) в 416 сообщении(ях)
andries5 на пути к лучшему
По умолчанию Re: FAQ по STM8

Значит перед разрешением прерываний, надо очистить флаг в CLK.
Спасибо за подсказки. У меня из головы уже шел пар.
andries5 вне форума  
Непрочитано 16.03.2011, 18:11  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
Значит перед разрешением прерываний, надо очистить флаг в CLK.
Это не поможет. Пример - Вы запускаете процесс переключения такта и работаете дальше. Настраиваете таймер, разрешаете прерывания очистив флаг прерывания от такта и ждете прерываний от таймера. А тут как раз заканчивается переключение источника такта - взводится флажок и ... Вы опять на векторе по умолчанию. Так что либо не продолжать работу пока не переключится, либо иметь обработчик прерывания по переключению источника тактирования.
kison вне форума  
Сказали "Спасибо" kison
andries5 (16.03.2011)
 

Закладки

Метки
arm, cortex, stm32, stm8
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импульсная зарядка для авто-аккумуляторов (новодел) Falconist Источники питания и свет 1915 14.03.2024 19:56
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
STM8(S/L), первые впечатления kison STM8 1423 19.05.2018 19:23
Вопросы и замечания по топику - FAQ по PROTEUS avr123-nm-ru Proteus 291 05.06.2015 20:49
FAQ Импульсный трансформатор alberio Источники питания и свет 87 13.11.2012 18:07


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


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