-
- А что делать при неудачном включении тактирования? - Леонид Иванович(07.11.2013 00:03)
- Уж точно не подключать внешний генератор и перешивать фьюзы! Достаточно ресет и убрать неудачный код. Снова получите голый HSI - _keil(07.11.2013 00:19)
- это от функционала прибора зависит. Если Вы о БП, то там можно работать от HSI на 8МГц и вообще не трогать тактирование. Для работы UART кварц не нужен, стабильности внутреннего генератора достаточно koyodza(136 знак., 07.11.2013 00:06)
- Если PLL тактировать от HSI, тогда, вроде, достаточно этого: Леонид Иванович(461 знак., 07.11.2013 01:35)
- Только я бы писал CFGR = (CFGR & ~CFGR_SW) | CFGR_SW_PLL; Так биты SW в регистре CFGR не будут кратковременно сброшены в 0. В данном случае это ничем не грозит, но вообще говоря может стать источником проблемы. - йцукен(07.11.2013 20:22, )
- Можно подробнее, почему в этом случае не грозит, и в других случаях будут проблемы? - Леонид Иванович(07.11.2013 22:44)
- Ну представьте, что вы собирались перейти с HSE на PLL, при этом первой строчкой временно перешли на HSI, а он выключен. Тогда ядро остановится, и до второй строчки дело не дойдёт. В данном случае это мнимая угроза, потому что, если я правильно йцукен(268 знак., 08.11.2013 13:13, )
- В кратковременном переключении на HSI ничего страшного не вижу. Но если Вы решите выполнить полный код более одного раза, возникнет коллизия - PLL уже используется, а Вы принудительно ей пытаетесь поменять множитель. Пусть и кратковременно. - _keil(08.11.2013 05:00)
- Можно подробнее, почему в этом случае не грозит, и в других случаях будут проблемы? - Леонид Иванович(07.11.2013 22:44)
- Понимаю while(77){} - оно специально для посмеяться при чтении, а вот (xxx == 0) под while ненавижу - Vit(07.11.2013 01:52)
- (xxx == 0) гораздо нагляднее, чем (!xxx), хоть и длиннее. - Леонид Иванович(07.11.2013 02:14)
- Это не C# с жесткой типизацией. Никак не нагляднее - просто выпендрёж, но заставляет сломать моск к концу чтения. Ничего личного. Vit(328 знак., 07.11.2013 08:50 - 09:06)
- Никогда не напишу a.b = !!(xxx);, ибо if(xxx) a.b = 1; else a.b = 0; наглядней. Первое - действительно выпендрёжь. - Леонид Иванович(07.11.2013 12:50)
- Для таких вещей можно использовать тернарную условную операцию Ruslan(27 знак., 07.11.2013 16:16)
- Часто использую. Хотя if читабельней. - Леонид Иванович(07.11.2013 16:23)
- false == 0. while((x&y)==false){} это песец моску. конструкция, вызывающая рвотный рефлекс - Vit(07.11.2013 15:32)
- Для таких вещей можно использовать тернарную условную операцию Ruslan(27 знак., 07.11.2013 16:16)
- Никогда не напишу a.b = !!(xxx);, ибо if(xxx) a.b = 1; else a.b = 0; наглядней. Первое - действительно выпендрёжь. - Леонид Иванович(07.11.2013 12:50)
- Это не C# с жесткой типизацией. Никак не нагляднее - просто выпендрёж, но заставляет сломать моск к концу чтения. Ничего личного. Vit(328 знак., 07.11.2013 08:50 - 09:06)
- (xxx == 0) гораздо нагляднее, чем (!xxx), хоть и длиннее. - Леонид Иванович(07.11.2013 02:14)
- Только я бы писал CFGR = (CFGR & ~CFGR_SW) | CFGR_SW_PLL; Так биты SW в регистре CFGR не будут кратковременно сброшены в 0. В данном случае это ничем не грозит, но вообще говоря может стать источником проблемы. - йцукен(07.11.2013 20:22, )
- Если PLL тактировать от HSI, тогда, вроде, достаточно этого: Леонид Иванович(461 знак., 07.11.2013 01:35)
- А что делать при неудачном включении тактирования? - Леонид Иванович(07.11.2013 00:03)