ZEbr 0 12 мая, 2014 Опубликовано 12 мая, 2014 · Жалоба Есть кварц 16MHz. Настраиваю тактовую частоту PIC32 следующим образом: #pragma config FWDTEN = OFF #pragma config POSCMOD = HS, FNOSC = PRI, FPBDIV = DIV_8 #define SYS_FREQ (80000000L) ......... main() { SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE); ....... while(1) { PORTD=1; PORTD=0; } } Смотрю частоту дерганий ножки проца на осциллографе, и вижу ,что время между передним фронтом 1-го и 2-го включения составляет 870нс . Это явно не 80MHz. Помогите пожалуйста настроить тактовую частоту! Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evc 0 12 мая, 2014 Опубликовано 12 мая, 2014 · Жалоба Есть кварц 16MHz. ... Смотрим конфигурацию осцилятора (стр.3). Видим, что для того, что бы на входе PLL была частота 4 .. 5MHz, нужно сначала разделить эти 16 на 4. Так что должна быть директива в прагме: FPLLIDIV = DIV_4. Потом эти 4 (которые получаем на входе PLL) нужно умножить на 20, значить FPLLMUL = MUL_20. Дальше, эту частоту без изменений нужно подавать дальше, т.е. FPLLODIV = DIV_1: #pragma config FPLLODIV = DIV_1, FPLLMUL = MUL_20, FPLLIDIV = DIV_4, POSCMOD = HS, FPBDIV = DIV_1, FNOSC = PRIPLL А потом, что бы "выжать" максимальную частоту, нужно пользоваться не "PORTX =", а "PORTXINV =": while(1){ PORTDINV = 1; } При такой конфигурации, частота на выводе получается около 16МГц. Это из-за того, что цикл, организованный С инструкцией while, тоже занимает несколько машинных циклов. На самом деле самую высокую частоту можно увидеть вот таким кодом: while(1){ PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; PORTDINV = 1; .... } конечно, только во время исполнения тела цикла. ПП Некоторые образцы 32-го допускают небольшой (без экстремизма, конечно) "оверклокинг"... но это отдельная тема. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ZEbr 0 12 мая, 2014 Опубликовано 12 мая, 2014 (изменено) · Жалоба То есть как я понял конфигурационные биты которые вы написали соответствуют тактовой частоте проца в 80MHz. Я пробовал так писать но при выставление FNOSC = PRIPLL девайс не определяется (MPLAB_ICD3). Я обязательно еще так попробую! А как насчет альтернативной установки частоты? Изменено 12 мая, 2014 пользователем ZEbr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 5 июля, 2014 Опубликовано 5 июля, 2014 · Жалоба А что pic умеет дергать ножками с частотой 80 мгц? P.s. а чего это старые сообщения повылезали в непрочтенные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
becopt 0 17 июля, 2014 Опубликовано 17 июля, 2014 · Жалоба А что pic умеет дергать ножками с частотой 80 мгц? P.s. а чего это старые сообщения повылезали в непрочтенные. Максимальная частота переферии 50 МГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться