Nikolay_Po (08.01.2019 02:47 - 02:51, просмотров: 402) ответил MBedder на А почему не через #pragma config? Хоть и выглядит громоздко, зато гораздо читабельнее, и не нужно знать имена фузбайтов - только битов
Не нашёл, как через #prgma config задать одновременно старт на FRC (биты FOS, FPR не влияют) и XT_PLL16 (биты FPR). Получается, нужно, чтобы действовали одновременно две "прагмы": #pragma config FOSFPR = FRC & XT_PLL16
Раньше такое делалось побитовым "И" соответствующих масок. Сейчас маски в p30F6014A.h для этих слов-статусов стали не адекватными и логическое "И" даёт совершенно другой, не верный, результат.
Мне не удалось найти способа задать через #pragma config нужную конфигурацию. Корректные определения масок остались в p30F6014A.inc, но XC16 видите не их, а те, что исковерканные в p30F6014A.h.
Зачем-то создатели #pragma config разбили одно слово FOSC на две разных прагмы, FOSFPR и FCKSMEN. FOSFPR 8-битная, но меняет лишь 5 своих младших разрядов - биты FPR. FCKSMEN вообще двухбитная. Управляет лишь одноимённмыи битами.
Похоже, накосячили разработчики. При установке #pragma config FCKSMEN = 0, кроме зануления битов FCKSMEN, зануляются биты FOS (они в одном байте). Но задать нужное значение битам FOS через прагму FCKSMEN невозможно. При попытке указать любое значение шире двух бит, ругается и требует двухбитное значение.
Завёл "кейс" поддержке XC16, 00371590 "Unable setup FOSC = ( FRC & XT_PLL16 )". Посмотрим, как отреагируют.