Satellite2000
-
Постов
4 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные Satellite2000
-
-
Здравствуйте.
Осваиваю dsPIC33EP128MC504. Первым делом нужно настроить генератор. Генератор работает от кварца на 8МГц. По даташиту максимальная частота генератора после PLL 140МГц при этом процессор выполняет 70MIPS. Набросал исходник тестовой прошивки - настройка генератора, включение PLL по даташиту и в бесконечном цикле переключение выхода RB9. Скомпилировал, прошил, запустил, к RB9 подключил осциллограф. На осциллографе ширина импульса ~30нс. Хотя по идее должен быть 14нс т.к. одна команда выполняется за 1 машинный такт (1 Tcy). В дизассемблере тоже одна команда на включение выхода одна на выключение.
Исходный код:
#include <p33ep128mc504> _FICD( ICS_PGD3 & // Communicate on PGEC3 and PGED3 JTAGEN_OFF // JTAG is disabled ) _FOSC( POSCMD_XT & // XT Crystal Oscillator Mode IOL1WAY_OFF & // Allow multiple reconfigurations FCKSM_CSECMD // Clock switching is enabled,Fail-safe Clock Monitor is disabled ) _FOSCSEL( FNOSC_PRI & // Primary Oscillator (XT, HS, EC) IESO_OFF // Start up with user-selected oscillator source ) _FGS( GWRP_OFF & // General Segment may be written GCP_OFF // General Segment Code protect is Disabled ) void main (void) { // Configure PLL prescaler, PLL postscaler, PLL divisor PLLFBD=68; // M=70 CLKDIVbits.PLLPOST=0; // N2=2 CLKDIVbits.PLLPRE=0; // N1=2 // Initiate Clock Switch to Primary Oscillator with PLL (NOSC=0b011) __builtin_write_OSCCONH(0x03); __builtin_write_OSCCONL(OSCCON | 0x01); // Wait for Clock switch to occur while (OSCCONbits.COSC!= 0b011); // Wait for PLL to lock while (OSCCONbits.LOCK!= 1); _TRISB9=0; whle(1) { _LATB9=1; _LATB9=0; } }
Компилятор Microchip C30. Что я делаю не так?
-
Опубликовано · Изменено пользователем Satellite2000 · Пожаловаться
Я работал, только давненько. Индуктивности измерял, было нормально.Возможно, индуктивность садит выход.
Разобрался. Причина была в формуле, по которой вычисляется код, для задания выходной частоты. По ошибке пользовался формулой из даташита AD5934. А так как в AD5933 АЦП в 4 раза быстрее, то выходная частота по той формуле получалась в 4 раза больше.
-
Кто работал с этой микросхемой - прошу помочь. Проблема следующая – модуль импеданса резисторов микросхема измеряет отлично, а вот при подключении индуктивности или емкости модуль импеданса получается больше или меньше (в зависимости от того, подключена емкость или индуктивность) в 4 раза.
Проблема с настройкой генератора dsPIC33E
в PIC
Опубликовано · Пожаловаться
Вопрос снят. Настроил таймер на тактирование от внутреннего генератора, а в прерывании уже дергал вывод _RB9. ширина импульса соответствовала расчетной. Т.е. если бы системная частота была бы в 2 раза меньшей, то и таймер (судя по схеме тактирования) работал бы в 2 раза медленее. А вот почему работает не так как надо если дергать из main на предельной скорости для меня осталось загадкой.