Easyelectronics.ru

Электроника для всех
Текущее время: 09 дек 2019, 15:30

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с настройкой генератора dsPIC33E
СообщениеДобавлено: 23 окт 2014, 19:35 
Только пришел

Зарегистрирован: 14 сен 2012, 00:44
Сообщения: 14
Здравствуйте.
Осваиваю 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. Что я делаю не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с настройкой генератора dsPIC33E
СообщениеДобавлено: 23 окт 2014, 19:46 
Старожил

Зарегистрирован: 18 фев 2013, 14:22
Сообщения: 512
А если так?
Код:
   whle(1)
   {
      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;

      _LATB9=1;
      _LATB9=0;
   }



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с настройкой генератора dsPIC33E
СообщениеДобавлено: 23 окт 2014, 20:27 
Только пришел

Зарегистрирован: 14 сен 2012, 00:44
Сообщения: 14
Пробовал, всеравно ширина импульса 30нс. Собственно в дизассемблере:
Код:
      _LATB9=1;
      _LATB9=0;

представлены тоже двумя идущими командами подряд:
Код:
bset.b 0x0e15,#1
bclr.b 0x0e15,#1

т.е. между двумя командами 1 такт. Я понял что Вы хотели сказать. Между _LATB9=0; и _LATB9=1; действительно 2 такта т.к. 2 команды:
Код:
bset.b 0x0e15,#1
bclr.b 0x0e15,#1
bra 0x000328

но я меряю ширину импульса. А между передним фронтом (_LATB9=1;) и задним (_LATB9=0;) всего 1 такт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с настройкой генератора dsPIC33E
СообщениеДобавлено: 24 окт 2014, 17:48 
Только пришел

Зарегистрирован: 14 сен 2012, 00:44
Сообщения: 14
Вопрос снят. Настроил таймер на тактирование от внутреннего генератора, а в прерывании уже дергал вывод _RB9. ширина импульса соответствовала расчетной. Т.е. если бы системная частота была бы в 2 раза меньшей, то и таймер (судя по схеме тактирования) работал бы в 2 раза медленее. А вот почему работает не так как надо если дергать из main на предельной скорости для меня осталось загадкой.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB