ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
894565 Топик полностью
Nikolay_Po (08.01.2019 20:31, просмотров: 527) ответил MBedder на Ты полную ерунду залепил. Одновременно запустить FRC и XT невозможно - этой прагмой/конфигом ты всего лишь управляешь мультиплексором "один-из-N" (FOSC), а не задаешь произвольный битовый паттерн.
Никаких нарушений, ни логики ни документации. Оно де-факто работает так, в железе, сегодня индус проверил. Контроллер dsPIC30F6016A ещё не получил two-speed startup, как более поздние коллеги dsPIC33, но уже получил clock switching. То есть, выбором источника тактового сигнала можно управлять из программы. Особенность в том, что из программы можно управлять лишь тремя битами FOS, точнее, OSCCON COSC. Но нельзя настройкой режима EXT/XT/HS/PLL, биты FPR. Эти биты настраиваются лишь прошивкой конфигурации, слово FOSC. К примеру, чтобы контроллер заработал от внешнего кристалла с 16х ФАПЧ, нужно прошить в конфигурации FPR[4:0]=0b00111. И это жёстко, по ходу выполнения программы не изменить. Так же, для работы XT_PLL16, нужно, чтобы биты COCS регистра OSCCON были установлены в 0b111. Это можно получить путём прошивки бит FOS слова FOSC значением 0b111. Всё это делается штатным интерфейсом MPLAB X, просто выбираешь XT_PLL16 и всё. FOS включают PLL, FPR настраивают генератор в режим XT и коэффициент умножения ФАПЧ. Пока всё по-вашему. Биты FOS выбирают источник тактовой частоты при включении или сбросе. Они задают значение для бит COSC регистра OSCCON. После запуска процессора, генератор можно переключить, изменив COSC спец. процедурой. Верно? Теперь финт ушами: руководство не запрещает прошить FOS в конфигурации значением 0b001, что при старте обеспечивает работу от FRC без PLL. Обратите внимание на картинку. При FOS=0b001, значение, прошитое в FPR, игнорируется. Что не запрещает настроить FPR для XT_PLL16, в то же время оставив FOS 0b001 (FRC). С учётом картинки, верно ведь? Теперь задача: контроллер на 7.3728МГц кварце с PLL16 стартует долго и жрёт много (по паспорту до 250мА, по факту больше 200mA), что является проблемой на этапе включения. Прошиваю FPR значением 0b00111 (XT_PLL16), но FOS значением 0b001 (FPR). Контроллер стартует на FRC без PLL, настройки FPR игнорирует. Стартует быстро, жрёт умеренно (почти в 16 раз меньше). Когда подходит время перехода на максимальную скорость, по процедуре переключения тактовой частоты, меняю биты COSC на 0b111 и, вуаля, контроллер работает на максимальной скорости! Биты FPR уже настроены подходящим для XT_PLL16 образом.
image