Autor Tema: Ayuda con setup basico de 18f2550 c18  (Leído 3696 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado noalone

  • PIC10
  • *
  • Mensajes: 5
Ayuda con setup basico de 18f2550 c18
« en: 04 de Julio de 2011, 14:13:03 »
Hola muy buenas.

Estoy migrando parte de mi codigo desde ccs a c18 y para entender bien el funcionamiento del dispositivo. Estoy haciendo prueba en base a un temporizador y un led en RC6 y un cristal de 20Mhz.

La configuracion es la siguiente

Código: [Seleccionar]
/*Configuracion del pic*/
#pragma config PWRT=ON, BOR=OFF, BORV=0
#pragma config WDT=OFF, WDTPS=32768
#pragma config MCLRE=ON, LPT1OSC=OFF, PBADEN=OFF, CCP2MX=OFF
#pragma config STVREN=OFF, LVP=OFF, XINST=OFF /*DEBUG=OFF*/

#pragma config CP0=OFF, CP1=OFF, CP2=OFF, CPB=OFF, CPD=OFF
#pragma config WRT0=OFF, WRT1=OFF, WRT2=OFF
#pragma config WRTB=OFF, WRTC=OFF, WRTD=OFF
#pragma config EBTR0=OFF, EBTR1=OFF, EBTR2=OFF, EBTRB=OFF

#pragma config FOSC=HSPLL_HS, FCMEN=OFF, IESO=OFF
#pragma config USBDIV=1, PLLDIV=5, CPUDIV=OSC1_PLL2
#pragma config VREGEN=ON

y la configuracion del timer0 es la siguiente

Código: [Seleccionar]
/* 4*Prescaler*(65535-Valor)
Tp=--------------------------
cristal(hz) */

OpenTimer0(T0_16BIT||T0_SOURCE_INT||T0_EDGE_RISE||
T0_PS_1_8||TIMER_INT_ON);
WriteTimer0(0x0bdb);


INTCONbits.TMR0IE=1;
INTCONbits.GIEL = 1;
INTCONbits.GIEH = 1; /*Habilitamos interrupciones*/


Segun la formula tenemos un Tiempo de desborde = 4*8*65535/20.000.000 = 0,104856s=104.86 ms

Como quiero contar intervalos de 100ms, cargo en el registro del Timer0 el valor 3035 (0x0bdb) y asi cuenta de 100 en 100.

Bueno la duda reside en lo siguiente: en la interrupcion del timer0 tengo un contador que incremento hasta 10 (1 segundo) donde los 5 primeros esta encendido y los 5 segundos esta apagado, pues cuando lo hecho a correr, va sensiblemente mas rapido de lo que debiera.

os pego el codigo completo

Código: [Seleccionar]
#include <p18f2550.h>
#include <timers.h>
#include <delays.h>

#include "config_lib.h"

/*Configuracion del pic*/
#pragma config PWRT=ON, BOR=OFF, BORV=0
#pragma config WDT=OFF, WDTPS=32768
#pragma config MCLRE=ON, LPT1OSC=OFF, PBADEN=OFF, CCP2MX=OFF
#pragma config STVREN=OFF, LVP=OFF, XINST=OFF /*DEBUG=OFF*/

#pragma config CP0=OFF, CP1=OFF, CP2=OFF, CPB=OFF, CPD=OFF
#pragma config WRT0=OFF, WRT1=OFF, WRT2=OFF
#pragma config WRTB=OFF, WRTC=OFF, WRTD=OFF
#pragma config EBTR0=OFF, EBTR1=OFF, EBTR2=OFF, EBTRB=OFF

#pragma config FOSC=HSPLL_HS, FCMEN=OFF, IESO=OFF
#pragma config USBDIV=1, PLLDIV=5, CPUDIV=OSC1_PLL2
#pragma config VREGEN=ON

#define TRUE 1


void low_isr(void);

#pragma code low_vector=0x18
void interrupt_at_low_vector(void)
{
_asm GOTO low_isr _endasm
}
#pragma code


volatile int cnt=0;
volatile int flag=0;

void main(void)
{
GpioSetup(); /*Configuracion pines*/

/* 4*Prescaler*(65535-Valor)
Tp=--------------------------
cristal(hz) */

OpenTimer0(T0_16BIT||T0_SOURCE_INT||T0_EDGE_RISE||
T0_PS_1_8||TIMER_INT_ON);
WriteTimer0(0x0bdb);


INTCONbits.TMR0IE=1;
INTCONbits.GIEL = 1;
INTCONbits.GIEH = 1; /*Habilitamos interrupciones*/

while(TRUE)
{
if(cnt<=5)
{
LATCbits.LATC6=1;
}else if(cnt>5&&cnt<=10)
{
LATCbits.LATC6=0;
}
}
}

#pragma interruptlow low_isr
void low_isr (void)
{
if(INTCONbits.TMR0IF==1)
{ /*Interrupcion del timer0*//*Se da cada 100ms*/
cnt++;

if(cnt>10)
{
cnt=0;
}

/*Reiniciamos la cuenta*/
WriteTimer0(3035);
/*Limpiamos la bandera*/
INTCONbits.TMR0IF=0;
}
}


Saludos

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda con setup basico de 18f2550 c18
« Respuesta #1 en: 04 de Julio de 2011, 16:02:45 »
A simple vista, el problema está que los cálculos los realizas como si trabajaras a 20 MHz, pero tienes habilitado el PLL y la frecuencia es 48MHz.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado noalone

  • PIC10
  • *
  • Mensajes: 5
Re: Ayuda con setup basico de 18f2550 c18
« Respuesta #2 en: 04 de Julio de 2011, 16:45:51 »
A simple vista, el problema está que los cálculos los realizas como si trabajaras a 20 MHz, pero tienes habilitado el PLL y la frecuencia es 48MHz.


Saludos!

Gracias, mientras estaba dando un paso con mi novia, me di cuenta del error.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Ayuda con setup basico de 18f2550 c18
« Respuesta #3 en: 04 de Julio de 2011, 19:10:27 »
Gracias, mientras estaba dando un paso con mi novia, me di cuenta del error.

 :D :D Que no se de cuenta que tenes la cabeza en otro lado porque...  :z)   :D :D
No contesto mensajes privados, las consultas en el foro

Desconectado fuente

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 571
Re: Ayuda con setup basico de 18f2550 c18
« Respuesta #4 en: 05 de Julio de 2011, 03:40:23 »
Sobre todo si "vas sensiblemente más rápido de lo que debieras..."