Перейти к содержанию
    

Satellite2000

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Вопрос снят. Настроил таймер на тактирование от внутреннего генератора, а в прерывании уже дергал вывод _RB9. ширина импульса соответствовала расчетной. Т.е. если бы системная частота была бы в 2 раза меньшей, то и таймер (судя по схеме тактирования) работал бы в 2 раза медленее. А вот почему работает не так как надо если дергать из main на предельной скорости для меня осталось загадкой.
  2. Здравствуйте. Осваиваю 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. Что я делаю не так?
  3. Разобрался. Причина была в формуле, по которой вычисляется код, для задания выходной частоты. По ошибке пользовался формулой из даташита AD5934. А так как в AD5933 АЦП в 4 раза быстрее, то выходная частота по той формуле получалась в 4 раза больше.
  4. Кто работал с этой микросхемой - прошу помочь. Проблема следующая – модуль импеданса резисторов микросхема измеряет отлично, а вот при подключении индуктивности или емкости модуль импеданса получается больше или меньше (в зависимости от того, подключена емкость или индуктивность) в 4 раза.
×
×
  • Создать...