//Bits de configuración
_CONFIG2(IESO_OFF & PLLDIV_NODIV & PLL96MHZ_ON & FNOSC_FRCPLL & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_NONE)
_CONFIG1(JTAGEN_ON & GCP_OFF & GWRP_OFF & ICS_PGx1 & FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768)
//Config del oscilador
ODCBbits.ODB8 = 1; //indicamos salidas configuracion open drain
CLKDIVbits.RCDIV = 0b001;
CLKDIVbits.PLLEN = 1; //Activación del PLL del USB
// CLKDIVbits.CPDIV = 0b10; //Fclk a 8MHz (SI ACTIVO ESTA INSTRUCCION NO FUNCIONA EL UART NI EN RX NI EN TX)
//Configuración de la UART
RPINR18bits.U1RXR = 9; //seteamos como RX
RPOR4bits.RP8R = 3; //seteamos como TX
unsigned int U1MODEvalue;
unsigned int U1STAvalue;
ConfigIntUART1(UART_RX_INT_DIS & UART_RX_INT_PR0 & UART_TX_INT_DIS & UART_TX_INT_PR0);
U1MODEvalue = 0b1000100000000000;
U1STAvalue = 0b1010010000001000;
U1STAbits.UTXEN = 1;
baud = 207; //19200 antes 103
OpenUART1(0b1000100000000000, 0b1010010000000000, baud);
//Instrucción de escritura en la UART: (Envía cada vez que pasa por esta instr. un caracter 'a', en el pc no recibo nada)
WriteUART1('a');
//Modificación de IOLOCK
OSCCON = 0x1146;
OSCCON = 0x1157;
OSCCONbits.IOLOCK = 0;
RPINR18bits.U1RXR = 9; //seteamos como RX (RP9)
RPOR4bits.RP8R = 3; //seteamos como TX (RP8)
Note 1: These options are not compatible with USB operation. They may be used whenever the PLL branch is selected and the USB module is disabled.
Ahora con respecto a CPDIV te tengo la solucion:
PIC24F Family Reference Manual”, Section 6. “Oscillator”- Pagina 6-20
http://ww1.microchip.com/downloads/en/DeviceDoc/39700c.pdf
Citar
Note 1: These options are not compatible with USB operation. They may be used whenever the PLL branch is selected and the USB module is disabled.
Se refiere a las opciones para cuando el clock es de 8Mhz y 4 Mhz, es decir CPDIV en 10 y 11 , deberas seleccionar una velocidad mayor, es decir 16Mhz (01) o 32Mhz (00). El cual no veo inconveniente al seleccionar estas velocidades.
Una cosa para aprender de microchip:
Saliendo de los PIC16 y PIC18, es decir:
dsPIC , PIC24, PIC32, el datasheet es un "resumen" del PIC, y cada modulo posee su propio PDF, odio cuando ocurre asi, pero es asi.
Muchas gracias por la información, de verdad! Desconocía que fuese tan complejo este micro.
Utilizo MPLAB 8.92 compilador C30
Disculpa no lo sabia, pero lo podes usar igual:
C30 User Manual - Pagina 154:
http://ww1.microchip.com/downloads/en/devicedoc/c30_users_guide_51284f.pdf
If the bulk of the application is written in C orEntonces se necesitaría o trabajar en ensamblador esa parte del código o aplicar las funciones Built-in. Había entendido mal lo de in-line assembly, pensaba que se refería a asignar directamente un valor al registro completo (en una linea, "in-line") y no ir asignando uno a uno los bits del registro.
another high-level language, the unlock sequence
should be performed by writing in-line assembly.
//UART
RPINR18bits.U1RXR = 9; //TX de pic18 seteamos como RX
RPOR4bits.RP8R = 3; //RX de pic18 seteamos como TX
U1BRG = 207; //19200 antes 51
ConfigIntUART1(UART_RX_INT_EN & UART_RX_INT_PR4 & UART_TX_INT_DIS & UART_TX_INT_PR0);
U1MODEbits.RTSMD = 1;
U1MODEbits.LPBACK = 0; //LOOPBACK mode
U1MODEbits.BRGH = 1;
U1MODEbits.UARTEN = 1; //Enable UART
U1STAbits.UTXEN = 1; //Enable TX
void __attribute__((interrupt, no_auto_psv)) _U1RXInterrupt(void) {
if(IFS0bits.U1RXIF){
guardaByte();
if(LEDON == 1)LEDON = 0;
else LEDON = 1;
IFS0bits.U1RXIF = 0;
}
}