Сегодня я начал проект, чтобы попробовать несколько вещей с PIC18F45K22. У меня были некоторые проблемы с синхронизацией с ранее написанным кодом для других контроллеров. Оказалось, что что-то не так с тактовой частотой контроллера.PIC18F45K22 внутренний генератор частоты выпуск
Как указано в таблице, у меня должна быть частота тактовых импульсов 1 МГц при использовании внутреннего генератора. По моему осциллографу я измерил тактовую частоту 250 кГц на выводе OSC2 (RA6). Поэтому я начал обнюхивать в таблице данных и столкнулся с таблицей 2-3 из таблицы. В этой таблице говорится, что вывод OSC2 будет «Clock/4», когда контроллер находится в режиме SLEEP, который может быть источником моей проблемы как 1MHz/4 = 250kHz. В соответствии с главой 3.0 контроллер начнет работу с режима PRI_RUN, когда устройство будет сброшено, если не включен двухскоростной запуск. Таким образом, чтобы убедиться, что я отключил этот режим с помощью следующей конфигурации линии:
#pragma config IESO = OFF
Эта строка отключает внутренний/внешний генератор переключения бит, который отключит Двухскоростной Пусковой в соответствии с пунктом 2.12.1.
В настоящее время я пробовал несколько настроек регистров OSCCON, OSCCON2, OSCTUNE, которые все провалились. На данный момент я не могу думать ни о чем другом, что вызывает эту «проблему». Я надеюсь, что кто-то обнаружит мою ошибку, чтобы я мог запустить устройство на указанных тактовых частотах.
В настоящее время я установить эти биты конфигурации:
#pragma config WDTEN = OFF
#pragma config FOSC = INTIO7 // Make clock visible on OSC2 pin
#pragma config LVP = OFF
#pragma config DEBUG = OFF
#pragma config IESO = OFF // Disable Two-speed Start-up
// Entry of application
int main(int argc, char** argv)
{
OSCCONbits.IRCF = 0b011; // default frequency
// Tried different OSCCON; OSCCON2; OSCTUNE settings, without succes
}
Листки (1): http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf
Как указано в разделе 2.6.1 таблицы, CLKOUT будет Fosc/4 при использовании с внутренним осциллятором. Если вы сконфигурировали генератор на 1 МГц, тогда вы должны ожидать увидеть 250KHz на CLKOUT, который представляет скорость, с которой выполняются инструкции (4 тактовых цикла для каждой команды на этих ПОС). Все работает так, как ожидалось. –
@RogerRowland, я полностью пропустил эту важную информацию! Спасибо, что указали, что часы действительно правильные. При этом я заметил еще одну ошибку, которую я сделал при преобразовании ранее написанного кода, который я пробовал на этом контроллере, и решил, что все работает сейчас. – WonderTiger