Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 20.05.2020, 23:07   #1
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Запустить PIC32MZ на максимально возможной частоте.

Здравствуйте. При изучении микроконтроллеров столкнулся с некоторыми трудностями, а именно с системой тактирования. Есть PIC32MZ2048EFH064, задача - запустить его на максимально возможной для него частоте в 252 MHz. Думаю, настрою PLL и все. А не тут-то было - PLL не работает ни от внешнего кварца, ни от встроенного генератора.

Далее смотрим схему и таблицу во вложениях.


Допустим, на OSC1 и OSC2 МК повешен кварц с частотой 8 МГц. С кварца частота приходит на PLLICLK и делится на делитель 1, таким образом образуя Fin (по таблице Fin минимум 5 МГц, то есть мы укладываемся - у нас 8). Далее, Fin через PLLMULT я умножаю на 50, получая FVCO = 400 МГц (минимум 350, максимум 700 - попали). И, напоследок, через "PLLODIV = 2" я делю 400 МГц до 200 МГц, которые уже есть SYSCLK.


Прошиваю - ничего не работает. Вообще, как будто все сдохло. Меняю PLLODIV на 32 (и получая итоговый SYSCLK 12.5 МГц - все работает. Меняю PLLODIV на 16 (получается 25 МГц SYSCLK) - все работает. Ставлю PLLODIV меньше 16 - ничего не работает. Из чего я делаю вывод, что во что-то упирается максимальная частота. Вопрос: во что? Заранее спасибо за ответы!



PIC32_clock.jpg
Requirements.jpg
Миниатюры
PIC32_clock.jpg   Requirements.jpg  
Lum1noFor вне форума   Ответить с цитированием
Старый 21.05.2020, 00:52   #2
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

вот... а вы тут все считаете мня старым, пьяным, дебилом...
SergP01 на форуме   Ответить с цитированием
Старый 21.05.2020, 09:14   #3
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,183
Вес репутации: 4655/132
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Lum1noFor Посмотреть сообщение
Здравствуйте. При изучении микроконтроллеров столкнулся с некоторыми трудностями, а именно с системой тактирования. Есть PIC32MZ2048EFH064, задача - запустить его на максимально возможной для него частоте в 252 MHz. Думаю, настрою PLL и все. А не тут-то было - PLL не работает ни от внешнего кварца, ни от встроенного генератора.

Далее смотрим схему и таблицу во вложениях.


Допустим, на OSC1 и OSC2 МК повешен кварц с частотой 8 МГц. С кварца частота приходит на PLLICLK и делится на делитель 1, таким образом образуя Fin (по таблице Fin минимум 5 МГц, то есть мы укладываемся - у нас 8). Далее, Fin через PLLMULT я умножаю на 50, получая FVCO = 400 МГц (минимум 350, максимум 700 - попали). И, напоследок, через "PLLODIV = 2" я делю 400 МГц до 200 МГц, которые уже есть SYSCLK.


Прошиваю - ничего не работает. Вообще, как будто все сдохло. Меняю PLLODIV на 32 (и получая итоговый SYSCLK 12.5 МГц - все работает. Меняю PLLODIV на 16 (получается 25 МГц SYSCLK) - все работает. Ставлю PLLODIV меньше 16 - ничего не работает. Из чего я делаю вывод, что во что-то упирается максимальная частота. Вопрос: во что? Заранее спасибо за ответы!



PIC32_clock.jpg
Requirements.jpg
На 200 от генератора 25 всё работает. От кварца - у них еррата есть.
Давай конфиг.
__________________

Vanizma вне форума   Ответить с цитированием
Старый 21.05.2020, 11:04   #4
Abivan
Member
 
Регистрация: 26.02.2007
Адрес: ближнее замкадье
Сообщений: 85
Вес репутации: 379/52
Abivan is just really niceAbivan is just really niceAbivan is just really niceAbivan is just really nice
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

поставь гармонию, можешь третью, в ней и конфигури. там все частоты в наглядном виде увидишь
Abivan вне форума   Ответить с цитированием
Старый 21.05.2020, 12:34   #5
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Vanizma Посмотреть сообщение
На 200 от генератора 25 всё работает. От кварца - у них еррата есть.
Давай конфиг.

Конфиг:


Код:
// PIC32MZ2048EFH064 Configuration Bit Settings
// DEVCFG3
#pragma config USERID = 0xFFFF          // Enter Hexadecimal value (Enter Hexadecimal value)
#pragma config FMIIEN = ON              // Ethernet RMII/MII Enable (MII Enabled)
#pragma config FETHIO = ON              // Ethernet I/O Pin Select (Default Ethernet I/O)
#pragma config PGL1WAY = ON             // Permission Group Lock One Way Configuration (Allow only one reconfiguration)
#pragma config PMDL1WAY = ON            // Peripheral Module Disable Configuration (Allow only one reconfiguration)
#pragma config IOL1WAY = ON             // Peripheral Pin Select Configuration (Allow only one reconfiguration)
#pragma config FUSBIDIO = OFF           // USB USBID Selection (Controlled by Port Function)

// DEVCFG2
#pragma config FPLLIDIV = DIV_1         // System PLL Input Divider (1x Divider)
#pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (5-10 MHz Input)
#pragma config FPLLICLK = PLL_POSC      // System PLL Input Clock Selection (POSC is input to the System PLL)
#pragma config FPLLMULT = MUL_50        // System PLL Multiplier (PLL Multiply by 50)
#pragma config FPLLODIV = DIV_2         // System PLL Output Clock Divider (2x Divider)
#pragma config UPLLFSEL = FREQ_24MHZ    // USB PLL Input Frequency Selection (USB PLL input is 24 MHz)

// DEVCFG1
#pragma config FNOSC = SPLL             // Oscillator Selection Bits (System PLL)
#pragma config DMTINTV = WIN_127_128    // DMT Count Window Interval (Window/Interval value is 127/128 counter value)
#pragma config FSOSCEN = OFF            // Secondary Oscillator Enable (Disable SOSC)
#pragma config IESO = OFF               // Internal/External Switch Over (Disabled)
#pragma config POSCMOD = HS             // Primary Oscillator Configuration (HS osc mode)
#pragma config OSCIOFNC = OFF           // CLKO Output Signal Active on the OSCO Pin (Disabled)
#pragma config FCKSM = CSDCMD           // Clock Switching and Monitor Selection (Clock Switch Disabled, FSCM Disabled)
#pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
#pragma config WDTSPGM = STOP           // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)
#pragma config WINDIS = NORMAL          // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)
#pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled)
#pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window size is 25%)
#pragma config DMTCNT = DMT31           // Deadman Timer Count Selection (2^31 (2147483648))
#pragma config FDMTEN = OFF             // Deadman Timer Enable (Deadman Timer is disabled)

// DEVCFG0
#pragma config DEBUG = OFF              // Background Debugger Enable (Debugger is disabled)
#pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
#pragma config ICESEL = ICS_PGx2        // ICE/ICD Comm Channel Select (Communicate on PGEC2/PGED2)
#pragma config TRCEN = ON               // Trace Enable (Trace features in the CPU are enabled)
#pragma config BOOTISA = MIPS32         // Boot ISA Selection (Boot code and Exception code is MIPS32)
#pragma config FECCCON = OFF_UNLOCKED   // Dynamic Flash ECC Configuration (ECC and Dynamic ECC are disabled (ECCCON bits are writable))
#pragma config FSLEEP = OFF             // Flash Sleep Mode (Flash is powered down when the device is in Sleep mode)
#pragma config DBGPER = PG_ALL          // Debug Mode CPU Access Permission (Allow CPU access to all permission regions)
#pragma config SMCLR = MCLR_NORM        // Soft Master Clear Enable bit (MCLR pin generates a normal system Reset)
#pragma config SOSCGAIN = GAIN_2X       // Secondary Oscillator Gain Control bits (2x gain setting)
#pragma config SOSCBOOST = ON           // Secondary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
#pragma config POSCGAIN = GAIN_2X       // Primary Oscillator Gain Control bits (2x gain setting)
#pragma config POSCBOOST = ON           // Primary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
#pragma config EJTAGBEN = NORMAL        // EJTAG Boot (Normal EJTAG functionality)

// DEVCP0
#pragma config CP = OFF                 // Code Protect (Protection Disabled)

// SEQ3
#pragma config TSEQ = 0xFFFF            // Boot Flash True Sequence Number (Enter Hexadecimal value)
#pragma config CSEQ = 0xFFFF            // Boot Flash Complement Sequence Number (Enter Hexadecimal value)

#include <xc.h>



Цитата:
поставь гармонию, можешь третью, в ней и конфигури. там все частоты в наглядном виде увидишь

А можно поподробнее, что за "гармония"?
Lum1noFor вне форума   Ответить с цитированием
Старый 21.05.2020, 15:18   #6
Vint
Senior Member
 
Аватар для Vint
 
Регистрация: 08.06.2007
Сообщений: 537
Вес репутации: 838/61
Vint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to beholdVint is a splendid one to behold
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

вы под какой интерфейс делаете устройство?
вот из гармонии проект, можете глянуть здесь.
он для usb девайса.
Вложения
Тип файла: rar src.rar (135.8 Кб, 1 просмотров)
Vint вне форума   Ответить с цитированием
Старый 21.05.2020, 15:52   #7
Abivan
Member
 
Регистрация: 26.02.2007
Адрес: ближнее замкадье
Сообщений: 85
Вес репутации: 379/52
Abivan is just really niceAbivan is just really niceAbivan is just really niceAbivan is just really nice
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Lum1noFor Посмотреть сообщение
А можно поподробнее, что за "гармония"?
https://www.microchip.com/mplab/mplab-harmony

вот так это выглядит для MX для MZ будет немного иначе.

потом генеришь код
Миниатюры
h2.jpg  
Abivan вне форума   Ответить с цитированием
Старый 21.05.2020, 17:34   #8
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

прикольно... он даже по поводу "давайте конфиг" не понял....

а где прерывания?
SergP01 на форуме   Ответить с цитированием
Старый 21.05.2020, 18:26   #9
Sanches
Member
 
Регистрация: 11.12.2007
Сообщений: 47
Вес репутации: 124/47
Sanches will become famous soon enoughSanches will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

+ за гармонию. Если не ошибаюсь гармония и errorata учитывает.
Искать Mplabx harmony
Sanches вне форума   Ответить с цитированием
Старый 21.05.2020, 19:33   #10
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Abivan Посмотреть сообщение
https://www.microchip.com/mplab/mplab-harmony

вот так это выглядит для MX для MZ будет немного иначе.

потом генеришь код

Спасибо! Поставил этот плагин и вот что у меня вышло:


PLL.jpg


Правильно я понимаю, что у меня все уперлось в USB PLL? И отключить эту заразу (USB), даже если он не нужен, невозможно. Из чего вывод такой, что мне подойдет только кристалл на 12 или 24 MHz (в UPLLFSEL есть только два эти варианта) - правильно я понимаю?


Кстати, чтобы не путать людей: эта схема из Harmony отличается от реальной из даташита. В оригинальной схеме НЕТ настройки UPLLEN (смотрите картинку в первом посте). А здесь нарисовали лишнюю опцию, хотя, лучше бы она реально была.
Миниатюры
PLL.jpg  
Lum1noFor вне форума   Ответить с цитированием
Старый 21.05.2020, 22:10   #11
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

В общем, нашел кварц на 12 МГц и настроил вот такую конфигурацию:



PLL2.jpg


Та же самая ситуация: при PLLODIV меньше 16 система тупо не заводится вообще. Стал смотреть осциллографом, что творится на кварце: при PLLODIV больше 16 там красивый ровный синус амплитудой 1.5 вольта. Стоит только поставить PLLODIV меньше 16, то этот синус сильно уменьшается в амплитуде и становится "зашумленным":


1. PLLODIV = 32:
IMG_0341.jpg


2. PLLODIV = 8:
IMG_0340.jpg



Может, я не так кварц подключил? Ниже выкладываю печатную плату макетки, с которой мучаюсь. Может, кто что подскажет.




Maketka_PIC32.zip


P.S. На цепь ресета прошу не ругаться, подтяжку к питанию забыл нарисовать . В железе все есть.
Миниатюры
PLL2.jpg   IMG_0341.jpg   IMG_0340.jpg  
Вложения
Тип файла: zip Maketka_PIC32.zip (54.2 Кб, 6 просмотров)

Последний раз редактировалось Lum1noFor; 21.05.2020 в 22:25.
Lum1noFor вне форума   Ответить с цитированием
Старый 21.05.2020, 22:47   #12
Sanches
Member
 
Регистрация: 11.12.2007
Сообщений: 47
Вес репутации: 124/47
Sanches will become famous soon enoughSanches will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Выложите макетку в жпег или пдф.
Как то не с руки, искать чем открыть ваш файл
Sanches вне форума   Ответить с цитированием
Старый 21.05.2020, 23:45   #13
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,183
Вес репутации: 4655/132
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Lum1noFor Посмотреть сообщение
В общем, нашел кварц на 12 МГц и настроил вот такую конфигурацию:



PLL2.jpg


Та же самая ситуация: при PLLODIV меньше 16 система тупо не заводится вообще. Стал смотреть осциллографом, что творится на кварце: при PLLODIV больше 16 там красивый ровный синус амплитудой 1.5 вольта. Стоит только поставить PLLODIV меньше 16, то этот синус сильно уменьшается в амплитуде и становится "зашумленным":


1. PLLODIV = 32:
IMG_0341.jpg


2. PLLODIV = 8:
IMG_0340.jpg



Может, я не так кварц подключил? Ниже выкладываю печатную плату макетки, с которой мучаюсь. Может, кто что подскажет.




Maketka_PIC32.zip


P.S. На цепь ресета прошу не ругаться, подтяжку к питанию забыл нарисовать . В железе все есть.
так еррату читали? У них там только в последних версиях кварц и то через одно место поддерживается.
2. Module: Oscillator

И как настроен prefetch?
__________________


Последний раз редактировалось Vanizma; 21.05.2020 в 23:54.
Vanizma вне форума   Ответить с цитированием
Старый 22.05.2020, 00:19   #14
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Sanches Посмотреть сообщение
Выложите макетку в жпег или пдф.
Как то не с руки, искать чем открыть ваш файл



lay.zip

Прикрепил в виде картинки.


Цитата:
И как настроен prefetch?
Никак. Я первый раз пытаюсь программировать PIC32, и о таких вещах тупо не знал. Почитал в даташите, мельком что-то понял, но нужно изучать подробнее. Спасибо за информацию.


Цитата:
так еррату читали? У них там только в последних версиях кварц и то через одно место поддерживается.
2. Module: Oscillator
Сегодня уже мозги не варят, завтра утром почитаю. Спасибо!


Вот, если что, полный код "программы", на которой тестирую плату:


Код:
#include <xc.h>
#include <stdio.h>


// DEVCFG3
#pragma config USERID = 0xFFFF          // Enter Hexadecimal value (Enter Hexadecimal value)
#pragma config FMIIEN = ON              // Ethernet RMII/MII Enable (MII Enabled)
#pragma config FETHIO = ON              // Ethernet I/O Pin Select (Default Ethernet I/O)
#pragma config PGL1WAY = ON             // Permission Group Lock One Way Configuration (Allow only one reconfiguration)
#pragma config PMDL1WAY = ON            // Peripheral Module Disable Configuration (Allow only one reconfiguration)
#pragma config IOL1WAY = ON             // Peripheral Pin Select Configuration (Allow only one reconfiguration)
#pragma config FUSBIDIO = ON            // USB USBID Selection (Controlled by the USB Module)

// DEVCFG2
#pragma config FPLLIDIV = DIV_2         // System PLL Input Divider (2x Divider)
#pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (5-10 MHz Input)
#pragma config FPLLICLK = PLL_POSC      // System PLL Input Clock Selection (POSC is input to the System PLL)
#pragma config FPLLMULT = MUL_66        // System PLL Multiplier (PLL Multiply by 66)
#pragma config FPLLODIV = DIV_2         // System PLL Output Clock Divider (2x Divider)
#pragma config UPLLFSEL = FREQ_12MHZ    // USB PLL Input Frequency Selection (USB PLL input is 12 MHz)

// DEVCFG1
#pragma config FNOSC = SPLL             // Oscillator Selection Bits (System PLL)
#pragma config DMTINTV = WIN_127_128    // DMT Count Window Interval (Window/Interval value is 127/128 counter value)
#pragma config FSOSCEN = OFF            // Secondary Oscillator Enable (Disable SOSC)
#pragma config IESO = OFF               // Internal/External Switch Over (Disabled)
#pragma config POSCMOD = HS             // Primary Oscillator Configuration (HS osc mode)
#pragma config OSCIOFNC = OFF           // CLKO Output Signal Active on the OSCO Pin (Disabled)
#pragma config FCKSM = CSDCMD           // Clock Switching and Monitor Selection (Clock Switch Disabled, FSCM Disabled)
#pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
#pragma config WDTSPGM = STOP           // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)
#pragma config WINDIS = NORMAL          // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)
#pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled)
#pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window size is 25%)
#pragma config DMTCNT = DMT31           // Deadman Timer Count Selection (2^31 (2147483648))
#pragma config FDMTEN = OFF             // Deadman Timer Enable (Deadman Timer is disabled)

// DEVCFG0
#pragma config DEBUG = OFF              // Background Debugger Enable (Debugger is disabled)
#pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
#pragma config ICESEL = ICS_PGx2        // ICE/ICD Comm Channel Select (Communicate on PGEC2/PGED2)
#pragma config TRCEN = ON               // Trace Enable (Trace features in the CPU are enabled)
#pragma config BOOTISA = MIPS32         // Boot ISA Selection (Boot code and Exception code is MIPS32)
#pragma config FECCCON = OFF_UNLOCKED   // Dynamic Flash ECC Configuration (ECC and Dynamic ECC are disabled (ECCCON bits are writable))
#pragma config FSLEEP = OFF             // Flash Sleep Mode (Flash is powered down when the device is in Sleep mode)
#pragma config DBGPER = PG_ALL          // Debug Mode CPU Access Permission (Allow CPU access to all permission regions)
#pragma config SMCLR = MCLR_NORM        // Soft Master Clear Enable bit (MCLR pin generates a normal system Reset)
#pragma config SOSCGAIN = GAIN_2X       // Secondary Oscillator Gain Control bits (2x gain setting)
#pragma config SOSCBOOST = ON           // Secondary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
#pragma config POSCGAIN = GAIN_2X       // Primary Oscillator Gain Control bits (2x gain setting)
#pragma config POSCBOOST = ON           // Primary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
#pragma config EJTAGBEN = NORMAL        // EJTAG Boot (Normal EJTAG functionality)

// DEVCP0
#pragma config CP = OFF                 // Code Protect (Protection Disabled)

// SEQ3
#pragma config TSEQ = 0xFFFF            // Boot Flash True Sequence Number (Enter Hexadecimal value)
#pragma config CSEQ = 0xFFFF            // Boot Flash Complement Sequence Number (Enter Hexadecimal value)




void main() {

TRISDbits.TRISD1 = 0;


while (1) {
    LATDbits.LATD1 = 1;
    asm ("nop");
    LATDbits.LATD1 = 0;
    asm ("nop");
}

}
Вложения
Тип файла: zip lay.zip (398.3 Кб, 4 просмотров)

Последний раз редактировалось Lum1noFor; 22.05.2020 в 00:32.
Lum1noFor вне форума   Ответить с цитированием
Старый 22.05.2020, 08:12   #15
SergP01
Senior Member
 
Аватар для SergP01
 
Регистрация: 09.11.2012
Адрес: SPB
Возраст: 52
Сообщений: 1,477
Вес репутации: 725/49
SergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to beholdSergP01 is a splendid one to behold
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

если вы хотите на максимальной частоте ногами дёргать- уберите
asm ("nop");
и всё равно быстрее чем ядро/2 дёргать не сможете...
SergP01 на форуме   Ответить с цитированием
Старый 22.05.2020, 10:16   #16
Vanizma
Senior Member
 
Аватар для Vanizma
 
Регистрация: 30.04.2008
Адрес: Pskov
Сообщений: 4,183
Вес репутации: 4655/132
Vanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond reputeVanizma has a reputation beyond repute
Отправить сообщение для Vanizma с помощью ICQ
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от Lum1noFor Посмотреть сообщение
lay.zip

Прикрепил в виде картинки.


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


Сегодня уже мозги не варят, завтра утром почитаю. Спасибо!


Вот, если что, полный код "программы", на которой тестирую плату:


Код:
#include <xc.h>
#include <stdio.h>


// DEVCFG3
#pragma config USERID = 0xFFFF          // Enter Hexadecimal value (Enter Hexadecimal value)
#pragma config FMIIEN = ON              // Ethernet RMII/MII Enable (MII Enabled)
#pragma config FETHIO = ON              // Ethernet I/O Pin Select (Default Ethernet I/O)
#pragma config PGL1WAY = ON             // Permission Group Lock One Way Configuration (Allow only one reconfiguration)
#pragma config PMDL1WAY = ON            // Peripheral Module Disable Configuration (Allow only one reconfiguration)
#pragma config IOL1WAY = ON             // Peripheral Pin Select Configuration (Allow only one reconfiguration)
#pragma config FUSBIDIO = ON            // USB USBID Selection (Controlled by the USB Module)

// DEVCFG2
#pragma config FPLLIDIV = DIV_2         // System PLL Input Divider (2x Divider)
#pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (5-10 MHz Input)
#pragma config FPLLICLK = PLL_POSC      // System PLL Input Clock Selection (POSC is input to the System PLL)
#pragma config FPLLMULT = MUL_66        // System PLL Multiplier (PLL Multiply by 66)
#pragma config FPLLODIV = DIV_2         // System PLL Output Clock Divider (2x Divider)
#pragma config UPLLFSEL = FREQ_12MHZ    // USB PLL Input Frequency Selection (USB PLL input is 12 MHz)

// DEVCFG1
#pragma config FNOSC = SPLL             // Oscillator Selection Bits (System PLL)
#pragma config DMTINTV = WIN_127_128    // DMT Count Window Interval (Window/Interval value is 127/128 counter value)
#pragma config FSOSCEN = OFF            // Secondary Oscillator Enable (Disable SOSC)
#pragma config IESO = OFF               // Internal/External Switch Over (Disabled)
#pragma config POSCMOD = HS             // Primary Oscillator Configuration (HS osc mode)
#pragma config OSCIOFNC = OFF           // CLKO Output Signal Active on the OSCO Pin (Disabled)
#pragma config FCKSM = CSDCMD           // Clock Switching and Monitor Selection (Clock Switch Disabled, FSCM Disabled)
#pragma config WDTPS = PS1048576        // Watchdog Timer Postscaler (1:1048576)
#pragma config WDTSPGM = STOP           // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)
#pragma config WINDIS = NORMAL          // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)
#pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled)
#pragma config FWDTWINSZ = WINSZ_25     // Watchdog Timer Window Size (Window size is 25%)
#pragma config DMTCNT = DMT31           // Deadman Timer Count Selection (2^31 (2147483648))
#pragma config FDMTEN = OFF             // Deadman Timer Enable (Deadman Timer is disabled)

// DEVCFG0
#pragma config DEBUG = OFF              // Background Debugger Enable (Debugger is disabled)
#pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
#pragma config ICESEL = ICS_PGx2        // ICE/ICD Comm Channel Select (Communicate on PGEC2/PGED2)
#pragma config TRCEN = ON               // Trace Enable (Trace features in the CPU are enabled)
#pragma config BOOTISA = MIPS32         // Boot ISA Selection (Boot code and Exception code is MIPS32)
#pragma config FECCCON = OFF_UNLOCKED   // Dynamic Flash ECC Configuration (ECC and Dynamic ECC are disabled (ECCCON bits are writable))
#pragma config FSLEEP = OFF             // Flash Sleep Mode (Flash is powered down when the device is in Sleep mode)
#pragma config DBGPER = PG_ALL          // Debug Mode CPU Access Permission (Allow CPU access to all permission regions)
#pragma config SMCLR = MCLR_NORM        // Soft Master Clear Enable bit (MCLR pin generates a normal system Reset)
#pragma config SOSCGAIN = GAIN_2X       // Secondary Oscillator Gain Control bits (2x gain setting)
#pragma config SOSCBOOST = ON           // Secondary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
#pragma config POSCGAIN = GAIN_2X       // Primary Oscillator Gain Control bits (2x gain setting)
#pragma config POSCBOOST = ON           // Primary Oscillator Boost Kick Start Enable bit (Boost the kick start of the oscillator)
#pragma config EJTAGBEN = NORMAL        // EJTAG Boot (Normal EJTAG functionality)

// DEVCP0
#pragma config CP = OFF                 // Code Protect (Protection Disabled)

// SEQ3
#pragma config TSEQ = 0xFFFF            // Boot Flash True Sequence Number (Enter Hexadecimal value)
#pragma config CSEQ = 0xFFFF            // Boot Flash Complement Sequence Number (Enter Hexadecimal value)




void main() {

TRISDbits.TRISD1 = 0;


while (1) {
    LATDbits.LATD1 = 1;
    asm ("nop");
    LATDbits.LATD1 = 0;
    asm ("nop");
}

}
по кварцу в errant написано, если в вас свежие релизы кристалла - схема в еррате.
ПС у этих пиков для периферии есть SET/CLR/INV регистры. Используйте их при работе с битами. В хедере пика дефайнами определены все маски
__________________

Vanizma вне форума   Ответить с цитированием
Старый 22.05.2020, 11:42   #17
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Lum1noFor
чтобы узнать частоту - нужно с помощью reference clock output вывести частоту с ножки.

ядром ножку делать не надо.

если Вам не нужна точная частота - используйте fast rc с PLL.
если удача обошла Вас стороной то никакая гармония Вам не поможет.

Sanches
ошибаетесь - гармония никак не может учесть то, что в первой ревизии кварц не работает никак, а в остальных его еще надо ловко подключить.
besogon на форуме   Ответить с цитированием
Старый 22.05.2020, 12:37   #18
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

В общем, почитал еррату и узнал ревизию своего контроллера - у меня последняя ревизия B2. Схема включения кварца из даташита отличалась от моей только наличием последовательного резистора - в плате я разорвал дорожку и впаял его в соответствие с рекомендациями. Кварц у меня на 12 МГц. Биты конфигурации также выставил в соответствие с рекомендациями errata.



Ситуация точно такая же - когда PLLODIV меньше 16, амплитуда синуса на ногах кварца резко падает. При этом импульсы на моей тестовой ноге начинают идти ХАОТИЧНО, то есть их частота становится равной не два "NOPа", а абсолютно случайной! Из чего я делаю вывод, что где-то сбивается генерация. Сейчас попробую с внутреннего генератора запустить PLL...
Lum1noFor вне форума   Ответить с цитированием
Старый 22.05.2020, 14:10   #19
Sanches
Member
 
Регистрация: 11.12.2007
Сообщений: 47
Вес репутации: 124/47
Sanches will become famous soon enoughSanches will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от besogon Посмотреть сообщение
Sanches
ошибаетесь - гармония никак не может учесть то, что в первой ревизии кварц не работает никак, а в остальных его еще надо ловко подключить.
Конечно, внешние хардверные проблемы она не обойдет.


Для ТС, пробуйте запустится и настроится от внутреннего генератора.
Выводите клок на REFCLK. Далее уже можно будет разбираться с кварцем
Sanches вне форума   Ответить с цитированием
Старый 22.05.2020, 16:15   #20
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Значит, попробовал я вывести выход PLL на REFCLK, как мне тут посоветовали. Написал вот такой код:


Код:
void main() {

RPD3Rbits.RPD3R          = 0b1111;               // RPD3 as REFCLKO1

REFO1CONbits.ON         = 0;                 // Disable Reference Oscillator module
REFO1CONbits.ROSEL      = 0b0111;            // REFCLKO1 input is System PLL output
REFO1CONbits.RODIV      = 0b00;              // No input devider

REFO1TRIMbits.ROTRIM    = 0b00;            // 0 divisor added to RODIV value

REFO1CONbits.OE         = 1;               // Enable REFCLKO1 output
REFO1CONbits.ON         = 1;               // Start Reference Oscillator module!


while (1) {

}

 }
Вход PLL- внутренний Fast RC 8 MHz. Далее, умножение на 50 и деление на PLLODIV. Получившееся значение выводится на ногу RD3 (REFCLK). Далее, что у меня вышло:


Случай 1 - PLLODIV = 32:


8Mhz*50/32=12.5 MHz


На REFCLK импульсы ровно нужной частоты.


IMG_0343.jpg





Случай 2 - PLLODIV = 16:


8Mhz*50/16=25 MHz


На REFCLK импульсы ровно нужной частоты.



IMG_0344.jpg




Случай 3 - PLLODIV = 8:


8Mhz*50/8=50 MHz


И тут начинается туфта - импульсы становятся корявые, и, такое ощущение, что сигнал становится переодичным - мусор-синус-мусор. Причем сигнал железно "стоит" на экране осциллографа, то есть он не случайный, а идеально повторяющийся!



IMG_0345.jpg


Случай 4 - PLLODIV = 4:


8Mhz*50/4=100 MHz


Сигнал на REFCLK пропал вовсе. На этом же этапе пропадают импульсы, даже если просто "дергать ногой". Такое ощущение, что программа тупо перестает выполняться вовсе, поэтому контроллер не может настроить REFCLK.

IMG_0346.jpg




Есть у кого-то еще идеи? Самое интересное, что у той же Микроэлектроники есть макетная плата на этом камне, то есть у кого-то он все-таки работает. Грешу на свое незнание и неопытность.
Миниатюры
IMG_0343.jpg   IMG_0344.jpg   IMG_0345.jpg   IMG_0346.jpg  
Lum1noFor вне форума   Ответить с цитированием
Старый 22.05.2020, 16:56   #21
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Lum1noFor
выводите частоты не более 10MHz с ножки. смотреть частоты больше контрпродуктивно.

в настройках вывода частоты с ножки сделайте деление так, чтобы с ножки не выходила частота более 10 MHz.

в регистре refocon есть поле rodiv.
besogon на форуме   Ответить с цитированием
Старый 22.05.2020, 17:02   #22
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от besogon Посмотреть сообщение
Lum1noFor
выводите частоты не более 10MHz с ножки. смотреть частоты больше контрпродуктивно.

в настройках вывода частоты с ножки сделайте деление так, чтобы с ножки не выходила частота более 10 MHz.

в регистре refocon есть поле rodiv.



Да, уже вычитал про это на офффоруме Микрочипа. Поставил деление на 4 - результат тот же.


В любом случае простейший код, приведенный ниже, должен всегда выполняться.


Код:
void main() {

TRISDbits.TRISD1 = 0;

LATDbits.LATD1 = 1;

while (1) {

}

 }
В случае если я ставлю делитель PLLODIV меньше 8 - уровень на ноге RD1 вообще не появляется, из чего я делаю вывод, что контроллер "не завелся" вообще.
Lum1noFor вне форума   Ответить с цитированием
Старый 22.05.2020, 17:23   #23
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,317
Вес репутации: 4401/96
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Lum1noFor
Вы в pll правильно все промежуточные частоты выставили? Все там попадает в заданные рамки?
besogon на форуме   Ответить с цитированием
Старый 22.05.2020, 17:32   #24
геннадий75
Member
 
Регистрация: 05.02.2012
Адрес: г.Саяногорск
Возраст: 44
Сообщений: 85
Вес репутации: 255/33
геннадий75 is a jewel in the roughгеннадий75 is a jewel in the roughгеннадий75 is a jewel in the rough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Зачем вы упёрлись в периферию. Не может она работать на частоте более 50 МГц. На 252 МГц работает только ядро процессора.
Миниатюры
pic.png  
геннадий75 вне форума   Ответить с цитированием
Старый 22.05.2020, 17:35   #25
Lum1noFor
Member
 
Регистрация: 25.12.2012
Сообщений: 81
Вес репутации: 148/29
Lum1noFor will become famous soon enoughLum1noFor will become famous soon enough
По умолчанию Re: Запустить PIC32MZ на максимально возможной частоте.

Цитата:
Сообщение от геннадий75 Посмотреть сообщение
Зачем вы упёрлись в периферию. Не может она работать на частоте более 50 МГц. На 252 МГц работает только ядро процессора.



Да, это я уже понял, спасибо. Добавил делитель чтобы частота REFCLK не выходила за пределы 10 МГц.


besogon, да, с этого я начал. В первом своем посту я это описал и сравнил с таблицей.
Lum1noFor вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу запустить аппаратный I2C на PIC18F258 CocuckuH Вопросы начинающих 12 05.11.2015 17:26
подключение магнитолы Sergey1 Общетехнические вопросы 10 27.12.2007 22:39
Помогите, пожалуйста, найти ошибку в коде Катя Микроконтроллеры других производителей 26 08.12.2007 14:58
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 12:27.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot