реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM8 не отключается LSE
-AZ-
сообщение Jan 18 2017, 13:57
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Коллеги, может кто сталкивался.
Пример:
1. Включаем RTC от LSE
2. Прошиваем.
3. Не снимая питания убираем строчку в коде включения RTC от LSE.
4. Прошиваем.

И чудо LSE работает!!!!!!!!
При этом CLK_ECKR_LSEON = 0, а CLK_ECKR_LSERDY = 1 !!!

И сколько не сбрасывай контроллер все равно. работает.

Как только передернешь питание все встает на свои места, как и положено CLK_ECKR_LSEON = 0, а CLK_ECKR_LSERDY = 0 и LSE не работает.

Где может быть разгадка ?
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 18 2017, 18:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
1. Включаем RTC от LSE
2. Прошиваем.
3. Не снимая питания убираем строчку в коде включения RTC от LSE.
4. Прошиваем.

Из вашего описания я ничего не понял.
У вас есть микроконтроллер с пустой флешкой. Каким-то образом вы включаете в нем RTC. Потом что-то в него заливаете.
Теперь немного меняете исходники. Снова что-то заливаете в контроллер.
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Jan 18 2017, 19:07
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(uriy @ Jan 18 2017, 21:26) *
Из вашего описания я ничего не понял.
У вас есть микроконтроллер с пустой флешкой. Каким-то образом вы включаете в нем RTC. Потом что-то в него заливаете.
Теперь немного меняете исходники. Снова что-то заливаете в контроллер.


Имеем:
IAR, ST-LINK, STM8L-DISK....
Минимальный код:
CLK_LSEConfig(CLK_LSE_ON);
while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET);
CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);
.... инициализация RTC или LCD не важно( CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); )

Далее убираю:
CLK_LSEConfig(CLK_LSE_ON);
while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET);
CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);

Снова заливаю...


Go to the top of the page
 
+Quote Post
amiller
сообщение Jan 19 2017, 04:50
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(phenixs @ Jan 18 2017, 17:57) *
Где может быть разгадка ?

Сразу оговорюсь, что на STM8 не приходилось поднимать LSE, работал с теми процами, где LSE нет.
Но не понимаю, что Вас смутило в описании ситуации.
Вы запустили LSE. Теперь он должен работать, пока Вы его принудительно не выключите или пока не исчезнет питание (включая батарейку).
Иначе получилось бы, что часы останавливались по каждому ресету.
А когда Вы выключаете питание (а батарейки видимо нет), то генератор благополучно останавливается.
При каждом старте надо проверять, работает ли генератор. Если уже работает - укороченная процедура инициализации часов.
А если стоит, то пытаемся запустить, ждём готовности, и только потом продолжаем инициализацию.
Go to the top of the page
 
+Quote Post
uriy
сообщение Jan 19 2017, 05:00
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Читаем ref man например на STM8L151 (RM0031) страница 92
The LSE crystal is switched on and off using the LSEON bit in the external clock register
(CLK_ECKCR). It is also automatically switched on when it is selected as RTC, CCO, Beep
or system clock source.

Ваш случай?
Ни и как сказал amiller здравый смысл подсказыает что так и должно быть.
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Jan 19 2017, 07:55
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Да, но при сбросе все регистры STM устанавливаются в дефолт, т.е. LSE и вся периферия отключены...
Так почему должны работать LCD или RTC ?

-The LSE crystal is switched on and off using the LSEON bit in the external clock register
(CLK_ECKCR). It is also automatically switched on when it is selected as RTC, CCO, Beep
or system clock source.
Это как раз не тот случай т.к. - CLK_ECKR_LSEON = 0, а CLK_ECKR_LSERDY = 1 !!!
Т.е. регистр показывает что LSE OFF но по факту он работает...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th April 2024 - 05:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016