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

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


 
Опции темы

STM8(S/L), первые впечатления

Непрочитано 26.11.2010, 17:28  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

EugenyAM
У Вас ошибки в статьях.
Например:
Код:
CLK_SWCR_bit.SWEN=1; // Автопереключение источника Clock при неисправности HSE (SWEN).
Этот бит всего лишь запускает переключение клока. Реакция на неисправность такта задается в регистре CLK_CSSR.
Ну и такая конструкция как обычно при включенной оптимизации будет работать не так как ожидается:
Код:
 long i;
     while(1)
     {
          PD_ODR_bit.ODR0=~PD_ODR_bit.ODR0; //Переключим светодиод
          for(i=0;i‹200000;i++); //Подождем...
     }
Оптимизатор выбросит и переменную i и цикл. Вы забыли volatile добавить. Из за таких мелочей начинающий может на несколько дней застрять
Реклама:

Последний раз редактировалось kison; 26.11.2010 в 17:41.
kison вне форума  
Непрочитано 26.11.2010, 17:59  
EugVor
Временная регистрация
 
Регистрация: 15.03.2006
Сообщений: 79
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
EugVor на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Оптимизатор выбросит и переменную i и цикл. Вы забыли volatile добавить. Из за таких мелочей начинающий может на несколько дней застрять
По дефолту оптимизация во всех компиляторах отключена, если не ошибаюсь. И думаю что очень многие её никогда и не включают чтобы не нарваться на подобные сюрпризы.
Когда начинающий захочет ею воспользоваться это будет уже не начинающий, во всяком случае, он предварительно поинтересуется какой код имеет большие шансы на вылет и что такое volatile. Хотя подправить конечно не проблема…
EugVor вне форума  
Непрочитано 26.11.2010, 18:00  
XoDoK11
Гражданин KAZUS.RUN
 
Аватар для XoDoK11
 
Регистрация: 17.08.2008
Сообщений: 770
Сказал спасибо: 52
Сказали Спасибо 450 раз(а) в 202 сообщении(ях)
XoDoK11 на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugenyAM Посмотреть сообщение
Через недельку будет реализация DMX512 на нем.
Очень интересно будет посмотреть.
XoDoK11 вне форума  
Непрочитано 26.11.2010, 18:10  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugVor Посмотреть сообщение
По дефолту оптимизация во всех компиляторах отключена, если не ошибаюсь.
В STVD отключена в конфигурации DEBUG и включена в RELEASE. У меня уже включена в обоих Вообще ее смысла отключать нет. Если нужно контроллировать какие то переменные, которые оптимизатор зачищает, можно им квалификатор volatile добавить, а после отладки убрать.
kison вне форума  
Непрочитано 26.11.2010, 20:00  
EugenyAM
Временная регистрация
 
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
EugenyAM на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
У Вас ошибки в статьях.
Например:

Код:
CLK_SWCR_bit.SWEN=1; // Автопереключение источника Clock при неисправности HSE (SWEN).
Этот бит всего лишь запускает переключение клока. Реакция на неисправность такта задается в регистре CLK_CSSR.
т.е. нужно добавить
Код:
CLK_CSSR_bit.CSSEN=1
так?
EugenyAM вне форума  
Непрочитано 26.11.2010, 20:19  
EugenyAM
Временная регистрация
 
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
EugenyAM на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Оптимизатор выбросит и переменную i и цикл. Вы забыли volatile добавить. Из за таких мелочей начинающий может на несколько дней застрять
В IAR эффект наблюдается, только если включить уровень оптимизации High.
по умолчанию такое стоит в Release.

Исправим...
EugenyAM вне форума  
Непрочитано 26.11.2010, 20:54  
EugVor
Временная регистрация
 
Регистрация: 15.03.2006
Сообщений: 79
Сказал спасибо: 3
Сказали Спасибо 83 раз(а) в 11 сообщении(ях)
EugVor на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от faru Посмотреть сообщение
В принципе - интересно, если бы по каждому устройству переферии - прожевывался все подразделы по 00016 мануалу целиком, а не выборочно выдранные пункты.
Если кто-то захочет посодействовать с превеликим удовольствием разместим Ваш материал или замечания-исправления.
EugVor вне форума  
Непрочитано 26.11.2010, 21:08  
EugenyAM
Временная регистрация
 
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
EugenyAM на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Правильная инициализация CLK с автопереключением
Код:
  CLK_ECKR_bit.HSEEN=1;     //Разрешаем работу генератора с внешним кварцем (HSEEN)
  CLK_SWCR_bit.SWEN=1;      //Разрешаем переключение генераторов;
  CLK_SWR=0xB4;             //Выбираем clock от кварцевого генератора (HSE)
  CLK_CKDIVR=0;             //Делители частоты внутреннего и внешнего генератора на 1 - частота ядра максимальная
  while(CLK_CMSR!=0xB4);    //Ждем стабилизации частоты
  CLK_CSSR_bit.CSSEN=1;     //Разрешаем автопереключение источника Clock на внутренний при неисправности генератора
EugenyAM вне форума  
Непрочитано 26.11.2010, 22:33  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от EugenyAM Посмотреть сообщение
Правильная инициализация CLK с автопереключением
Какие то у Вас странные конструкции. Если хотите именно вручную переключать такт, то запускаете нужный генератор, например HSE. Далее ЖДЕТЕ пока он запустится - установится бит HSERDY в регистре ECKR. И только потом переключаете клок.
Для включения автоподмены клока при отказе основного действительно достаточно установить CSSEN в CSSR, но смысла в этом нет. Нужно как минимум еще прерывание разрешить, ведь замена к примеру 16МГц внешнего такта на 2МГц внутренний скорее всего не улучшит функционирование. Это аварийный режим, а не рабочий.

Сообщение от faru Посмотреть сообщение
И на том рисунке не пояснено - к каким пинам чипа ноги эненкодера цеплять и как ..
Цеплять паяльником , ноги на рисунке нарисованы. Линия от TIM1_CH1 называется TI1, TIM1_CH2 - TI2.

Сообщение от faru Посмотреть сообщение
туплю может, но вроде речь идет о механическом девайсе а не о виртуальной штукенции.
О механическом конечно. У инкрементального энкодера два выхода - А и В. Вот их и надо подключать к TI1 и TI2.
kison вне форума  
Непрочитано 26.11.2010, 22:54  
EugenyAM
Временная регистрация
 
Регистрация: 24.09.2010
Сообщений: 97
Сказал спасибо: 9
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
EugenyAM на пути к лучшему
По умолчанию Re: STM8(S/L), первые впечатления

Сообщение от kison Посмотреть сообщение
Какие то у Вас странные конструкции. Если хотите именно вручную переключать такт, то запускаете нужный генератор, например HSE. Далее ЖДЕТЕ пока он запустится - установится бит HSERDY в регистре ECKR. И только потом переключаете клок.
мануал, п 8.2.2, пункт Automatic switching
Разрешаем работу генератора HSEEN=1
Разрешаем механизм переключения SWEN=1
Записываем код источника в CLK_SWR=0xB4
ждем результат

Цитата:
Нужно как минимум еще прерывание разрешить, ведь замена к примеру 16МГц внешнего такта на 2МГц внутренний скорее всего не улучшит функционирование. Это аварийный режим, а не рабочий.
Естественно, аварийный режим... Например если не ждать готовности основного генератора, а сразу разрешить CSSEN, мы получим автоматическое переключение на резервный генератор, что будет заметно по уменьшению частоты мигания светодиода в 8 раз.
Проверено чисто в учебных целях, чтобы на это не попадаться.
Естественно, в реальном проекте надо разрешать прерывание и обрабатывать данную ситуацию.
Если последнюю строчку закомментировать, на работе примеров это не отразится.
EugenyAM вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
KiCAD-объявления и впечатления al_dan KiCAD 32 03.10.2016 17:02
Народ, посмотрите quasm, Как ваши впечатления? suri Proteus, KiCAD и другие ECAD 5 14.10.2009 11:57


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


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