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

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


 
Опции темы

FAQ по STM8

Непрочитано 16.03.2011, 15:14  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
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.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
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.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
толи TIM4 UPD не IRQ23. Не понимаю.
Может и такое быть. Вектора в даташите с дырками, причем именно в части таймеров. Я точно знаю только про 2-ой и 3-ий таймеры. Можно ловушек понавесить на каждый вектор. Тогда будет точно понятно куда попадаем при прерывании.
kison вне форума  
Непрочитано 16.03.2011, 17:26  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
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.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

Сообщение от andries5 Посмотреть сообщение
Может здесь где-то ошибка?
Давайте все же по порядку. На какой то вектор Вы все же попадаете.
Что за кристалл, есть ли другие используемые вектора? Лучше перейти в https://kazus.run/forums/showthread.php?t=20861 для конкретного разбора ситуации.
kison вне форума  
Непрочитано 16.03.2011, 17:40  
andries5
Почётный гражданин KAZUS.RUN
 
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
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.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: FAQ по STM8

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

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

Значит перед разрешением прерываний, надо очистить флаг в CLK.
Спасибо за подсказки. У меня из головы уже шел пар.
andries5 вне форума  
Непрочитано 16.03.2011, 18:11  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
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, время: 11:27.


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