TODOPIC
Microcontroladores PIC => Pic32 => Mensaje iniciado por: afelio en 10 de Octubre de 2012, 15:37:26
-
Buenas a todos,
Estoy peleandome con el reloj (Los relojes) del PIC32MX534F064H.
Por lo que he logrado entender es que hay 5 osciladores. 2 Osciladores internos, y 3 usan cristal
De los relojes principales dentro del PIC:
SYSCLK usado por CPU y algunos periféricos (Se puede generar por cualquiera de las 5 fuentes de reloj)
PBCLK usado por la mayoría de periféricos.
....
....
....
Me gustaría generar 80 MHz en SYSCLK con la fuente de reloj del Oscilador interno de Alta velocidad (FRC).
Y con el Timer1, para comprobar que genero los 80MHz correctamente enciendo y apago un LED (supuestamente cada segundo)
sería con el siguiente código para generar los 80MHz??
#include <stdio.h>
#include <stdlib.h>
#include <p32xxxx.h>
#include <plib.h>
//Bits configuración
#pragma config POSCMOD = OFF
#pragma config FNOSC = FRCPLL
#pragma config FPLLIDIV = DIV_2
#pragma config FPLLMUL = MUL_20
#pragma config FPLLODIV = DIV_1
//#pragma config FPBDIV = DIV_1
#define T1_TICK 312500
int main (void)
{
AD1PCFG = 0xFFFF;
_TRISF3=0;
OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_256, T1_TICK);
IPC1bits.T1IP = 2;
IPC1bits.T1IS = 1;
IFS0bits.T1IF = 0;
INTEnableSystemMultiVectoredInt();
IEC0bits.T1IE = 1;
while(1);
}
void __ISR(_TIMER_1_VECTOR, ipl2) Timer1Handler (void)
{
_LATF3 = ~_LATF3;
IFS0bits.T1IF = 0;
}
Muchas gracias.
Un saludo.
-
El timer 1 es de 16-bits, entonces no podes colocarle 312500 en PR1 ;-) Los demás si podes combinarlos para formar un timer de 32-bits.
Saludos!
-
Gracias Suky,
Cambiado el código y ahora si que me va a 1 Segundo. Utilizando el Timer23. Un fallo bastante tonto.
Un saludo.