Привет!
Я использую: dsPIC33CH512MP508, MPLAB X v5.50, MCC v5.0.3, XC16 v1.70.
Создал три проекта с помощью MCC: Master, Slave, boot (bootloader).
Каждый из них использует Primary Oscilator (8 МГц) и PLL.
1. Когда прошиваю Master через ICSP (без boot) - всё работает (master LED и slave LED мигают).
2. Когда прошиваю boot через ICSP, затем заливаю Master через UART - работает только Master ядро (master LED мигает, slave LED просто горит).
3. Когда отключаю PLL в Slave проекте и повторяю действия из пункта 2, то всё работает.
PLL мне необходим. В чём может быть проблема?
Благодарю.
PS Slave code:
Код:
|
void CLOCK_Initialize(void)
{
// FRCDIV FRC/1; PLLPRE 1; DOZE 1:8; DOZEN disabled; ROI disabled;
CLKDIV = 0x3001;
// PLLFBDIV 150;
PLLFBD = 0x96;
// POST1DIV 1:3; VCODIV FVCO/4; POST2DIV 1:1;
PLLDIV = 0x31;
// APLLEN disabled; FRCSEL FRC; APLLPRE 1:1;
ACLKCON1 = 0x101;
// APLLFBDIV 150;
APLLFBD1 = 0x96;
// APOST1DIV 1:4; APOST2DIV 1:1; AVCODIV FVCO/4;
APLLDIV1 = 0x41;
// ROEN disabled; ROSWEN disabled; ROSLP disabled; ROSEL FOSC; ROOUT disabled; ROSIDL disabled;
REFOCONL = 0x00;
// RODIV 0;
REFOCONH = 0x00;
// ROTRIM 0;
REFOTRIMH = 0x00;
// IOLOCK disabled;
RPCON = 0x00;
// ADC1MD enabled; T1MD enabled; U1MD enabled; SPI1MD enabled; QEIMD enabled; PWMMD enabled; I2C1MD enabled;
PMD1 = 0x00;
// CCP2MD enabled; CCP1MD enabled; CCP4MD enabled; CCP3MD enabled;
PMD2 = 0x00;
// REFOMD enabled;
PMD4 = 0x00;
// DMA1MD enabled; DMA0MD enabled;
PMD6 = 0x00;
// CMP3MD enabled; PGA1MD enabled; CMP1MD enabled; CMP2MD enabled;
PMD7 = 0x00;
// CLC3MD enabled; CLC4MD enabled; PGA2MD enabled; PGA3MD enabled; CLC1MD enabled; CLC2MD enabled;
PMD8 = 0x00;
// CF no clock failure; NOSC PRIPLL; CLKLOCK unlocked; OSWEN Switch is Complete;
__builtin_write_OSCCONH((uint8_t) (0x03));
__builtin_write_OSCCONL((uint8_t) (0x01));
// Wait for Clock switch to occur
while (OSCCONbits.OSWEN != 0);
while (OSCCONbits.LOCK != 1);
} |
Master code:
Код:
|
void CLOCK_Initialize(void)
{
// FRCDIV FRC/1; PLLPRE 1; DOZE 1:8; DOZEN disabled; ROI disabled;
CLKDIV = 0x3001;
// PLLFBDIV 135;
PLLFBD = 0x87;
// TUN Center frequency;
OSCTUN = 0x00;
// POST1DIV 1:3; VCODIV FVCO/4; POST2DIV 1:1;
PLLDIV = 0x31;
// APLLEN disabled; FRCSEL FRC; APLLPRE 1:1;
ACLKCON1 = 0x101;
// APLLFBDIV 150;
APLLFBD1 = 0x96;
// APOST1DIV 1:4; APOST2DIV 1:1; AVCODIV FVCO/4;
APLLDIV1 = 0x41;
// CANCLKEN disabled; CANCLKSEL No Clock Selected; CANCLKDIV Divide by 1;
CANCLKCON = 0x00;
// ROEN disabled; ROSWEN disabled; ROSLP disabled; ROSEL FOSC; ROOUT disabled; ROSIDL disabled;
REFOCONL = 0x00;
// RODIV 0;
REFOCONH = 0x00;
// ROTRIM 0;
REFOTRIMH = 0x00;
// IOLOCK disabled;
RPCON = 0x00;
// ADC1MD enabled; T1MD enabled; U2MD enabled; U1MD enabled; SPI2MD enabled; SPI1MD enabled; QEIMD enabled; C1MD enabled; PWMMD enabled; I2C1MD enabled;
PMD1 = 0x00;
// CCP2MD enabled; CCP1MD enabled; CCP4MD enabled; CCP3MD enabled; CCP7MD enabled; CCP8MD enabled; CCP5MD enabled; CCP6MD enabled;
PMD2 = 0x00;
// CRCMD enabled; I2C2MD enabled;
PMD3 = 0x00;
// REFOMD enabled;
PMD4 = 0x00;
// DMA5MD enabled; DMA1MD enabled; DMA2MD enabled; DMA3MD enabled; DMA4MD enabled; DMA0MD enabled;
PMD6 = 0x00;
// PTGMD enabled; CMP1MD enabled;
PMD7 = 0x00;
// DMTMD enabled; CLC3MD enabled; BIASMD enabled; CLC4MD enabled; SENT2MD enabled; SENT1MD enabled; CLC1MD enabled; CLC2MD enabled;
PMD8 = 0x00;
// CF no clock failure; NOSC PRIPLL; CLKLOCK unlocked; OSWEN Switch is Complete;
__builtin_write_OSCCONH((uint8_t) (0x03));
__builtin_write_OSCCONL((uint8_t) (0x01));
// Wait for Clock switch to occur
while (OSCCONbits.OSWEN != 0);
while (OSCCONbits.LOCK != 1);
} |
Код:
|
void SLAVE1_Initialize()
{
//SRSTIE disabled; SLVEN disabled; MTSIRQ disabled; RFITSEL Trigger data valid interrupt when 1st FIFO entry is written by Slave; STMIACK disabled;
MSI1CON = 0x00;
//WFEN enabled; RFEN enabled;
MSI1FIFOCS = 0x8080;
MSI1CONbits.SRSTIE = 1;
MSI1CONbits.SLVEN = 1;
SLAVE1_Program();
SLAVE1_Start();
} |
Не знаю что именно вас интересует, поскольку не знаю где проблема.
Могу полностью исходники скинуть. (в виде архива, например).
PPS Всё три проекта в архиве.