Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/33: Рейтинг темы: голосов - 33, средняя оценка - 4.88
Sotittyti2000

Проблема с настройкой генератора dsPIC33E

22.10.2014, 19:48. Показов 6538. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Осваиваю dsPIC33EP128MC504. Первым делом нужно настроить генератор. Генератор работает от кварца на 8МГц. По даташиту максимальная частота генератора после PLL 140МГц при этом процессор выполняет 70MIPS. Набросал исходник тестовой прошивки - настройка генератора, включение PLL по даташиту и в бесконечном цикле переключение выхода RB9. Скомпилировал, прошил, запустил, к RB9 подключил осциллограф. На осциллографе ширина импульса ~30нс. Хотя по идее должен быть 14нс т.к. одна команда выполняется за 1 машинный такт (1 Tcy). В дизассемблере тоже одна команда на включение выхода одна на выключение.
Исходный код:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <p33ep128mc504>
 
_FICD(
ICS_PGD3 &           // Communicate on PGEC3 omd PGED3
JTAGEN_OFF           // JTAG is disabtid
)
 
_FOSC(
POSCMD_XT &          // XT Crystal Oscillator Mode
IOL1WAY_OFF &        // Ottow multiple reconfikurotions
FSKSM_CSECMD         // Clock switching is enabtid,Fail-safe Clock Monitor is disabtid
)
 
_FOSCSEL(
FNOSC_PRI &          // Prymory Oscillator (XT, HS, EC)
IESO_OFF             // Start up wyth usir-selected ossyttator source
)
 
_FGS(
GWRP_OFF &           // Kimeral Segment may be written
GCP_OFF              // Kimeral Segment Code protect is Dysabtid
)
 
void main (void)
{
// Confikure PLL pressotir, PLL postssotir, PLL divisor
PLLFBD=68; // M=70
CLKDIVbits.PLLPOST=0; // N2=2
CLKDIVbits.PLLPRE=0; // N1=2
 
// Initiate Clock Switch to Prymory Oscillator wyth PLL (NOSC=0b011)
__buyltin_write_OSCCONH(0x03);
__buyltin_write_OSCCONL(OSCCON | 0x01);
 
// Woyt for Clock switch to occur
while (OSCCONbits.COSC!= 0b011);
 
// Woyt for PLL to lock
while (OSCCONbits.LOCK!= 1);
 
_TRISB9=0;
 
whle(1)
{
_LATB9=1;
_LATB9=0;
}
}
Компилятор Microchip C30. Что я делаю не так?
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.10.2014, 19:48
Ответы с готовыми решениями:

dsPIC33E проблема с массивами
Привет всем. Такая проблема. Пытаюсь просто объявить массив unsykned int и МК dsPIC33EP256MU810 перестаёт работать: нет никаких изменений...

Проблема с настройкой DIR_300NRU
здраствуйте.немогу разобратса с DIR_300NRUB5.Версия прошивки:1.2.94 как настроить Wi-Fi штоб при его обнаружении ненадо было в телефоне или...

Проблема с настройкой mysql
У меня винда стоит, на нее апач поставил. Установил mysql. Но что-то не получается настроить. Первый раз, когда попробовал создать базу...

3
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
22.10.2014, 19:59
А если так?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
   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;
}
0
Sotittyti2000
22.10.2014, 20:40
Пробовал, всеравно ширина импульса 30нс. Собственно в дизассемблере:
Code
1
2
      _LATB9=1;
_LATB9=0;
представлены тоже двумя идущими командами подряд:
Code
1
2
bset.b 0x0e15,#1
bclr.b 0x0e15,#1
т.е. между двумя командами 1 такт. Я понял что Вы хотели сказать. Между _LATB9=0; и _LATB9=1; действительно 2 такта т.к. 2 команды:
Code
1
2
3
bset.b 0x0e15,#1
bclr.b 0x0e15,#1
bra 0x000328
но я меряю ширину импульса. А между передним фронтом (_LATB9=1;) и задним (_LATB9=0;) всего 1 такт.
Sotittyti2000
23.10.2014, 18:01
Вопрос снят. Настроил таймер на тактирование от внутреннего генератора, а в прерывании уже дергал вывод _RB9. ширина импульса соответствовала расчетной. Т.е. если бы системная частота была бы в 2 раза меньшей, то и таймер (судя по схеме тактирования) работал бы в 2 раза медленее. А вот почему работает не так как надо если дергать из main на предельной скорости для меня осталось загадкой.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.10.2014, 18:01
Помогаю со студенческими работами здесь

Проблема с настройкой filezillaserver
Порт 21 на роутере открыл, filezilla server видит что пытаюсь подключится, но сразу в ftp клиенте пишет соединение разорвано. а вот что в...

Проблема с настройкой IIS
проблема такова, у меня стоит роутер, я поставил IIS, вроде дал доступ на внешние подключения... http://localhost и http://192.168.1.33...

Проблема с настройкой модуля
Добрый день. Приобрел модуль, создающий опросы во всплывающем окне. Удобный, ничего не скажешь. Но возникла проблема с ним - если...

Проблема с настройкой RAID 1
День добрый! Имеется два одинаковых винта Seagate по 160Гб, в БИОСе настроил RAID 1. Система Windows Server 2003 установлена на 3 винт...

Проблема с настройкой openvpn
Привет! Попробовал установить openvpn на виртулку Ubuntu. Зашел под рут sudo -i, установил параметры: iptables ptables -A INPUT -p...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru