Autor Tema: pregunta facil sobre dsPIC30F2010  (Leído 4803 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado pablo_chile

  • PIC10
  • *
  • Mensajes: 6
pregunta facil sobre dsPIC30F2010
« en: 29 de Diciembre de 2008, 13:29:30 »
Hola a todos. Primera vez en TODOPIC, finalmente me pude inscribir. Qué bueno que exista este foro.

Estoy programando un dsPIC30F2010 y estoy teniendo algunos problemas que me hacen pensar que el pic está dañado. Alguien me podría decir a qué frecuencia debería encenderse y apagarse el puerto RE0 si uso un cristal de 10 MHz. El programa lo pego abajo. Gracias.

#include "p30f2010.h"

_FOSC(CSW_FSCM_OFF & XT_PLL4)
_FWDT(WDT_OFF)
_FBORPOR(MCLR_EN & RST_PWMPIN & PBOR_OFF & PWRT_OFF)

int main (void)
{
TRISE = 0x0000;
PORTEbits.RE0 = 0;

while(1)
{
PORTEbits.RE0 = !PORTEbits.RE0;
}//end while

}//end main

Desconectado pablo_chile

  • PIC10
  • *
  • Mensajes: 6
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #1 en: 29 de Diciembre de 2008, 13:53:19 »
el compilador es el C30. El problema es que mido con un osciloscopio la frecuencia a la cual se enciende y apaga el puerto RE0 y es de 60 KHz  :S  eso me parece que es muy malo, no?. O será un problema de configuración?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #2 en: 29 de Diciembre de 2008, 15:23:36 »
En teoría, con cristal de 10MHz y PLLx4 vas a ir a 10MIPS.
Habría que ver cómo se compila tu programa para analizar cuántos ciclos consume: ¿puedes pegar el listado de instrucciones de la ventana "Disassembly Listing"?

Desconectado pablo_chile

  • PIC10
  • *
  • Mensajes: 6
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #3 en: 29 de Diciembre de 2008, 15:38:43 »
---  C:\Documents and Settings\Pablo Jimenez\Desktop\Trabajo Dirigido\Programas\main.c  ----------
1:                 #include "p30f2010.h"
2:                 
3:                 _FOSC(CSW_FSCM_OFF & XT_PLL4)
4:                 _FWDT(WDT_OFF)
5:                 _FBORPOR(MCLR_EN & RST_PWMPIN & PBOR_OFF & PWRT_OFF)
6:                 
7:                 int main (void)
8:                 {
  0188  FA0000     lnk #0x0
9:                 TRISE = 0x0000;
  018A  EB0000     clr.w 0x0000
  018C  8816C0     mov.w 0x0000,0x02d8
10:               
11:                PORTEbits.RE0 = 0;
  018E  A902DA     bclr.b 0x02da,#0
12:               
13:                while(1)
14:                {
15:                PORTEbits.RE0 = !PORTEbits.RE0;
  0190  BFC2DA     mov.b 0x02da,0x0000
  0192  A20400     btg 0x0000,#0
  0194  604061     and.b 0x0000,#1,0x0000
  0196  604061     and.b 0x0000,#1,0x0000
  0198  604061     and.b 0x0000,#1,0x0000
  019A  604161     and.b 0x0000,#1,0x0004
  019C  202DA1     mov.w #0x2da,0x0002
  019E  784091     mov.b [0x0002],0x0002
  01A0  B3CFE0     mov.b #0xfe,0x0000
  01A2  60C000     and.b 0x0002,0x0000,0x0000
  01A4  704002     ior.b 0x0000,0x0004,0x0000
  01A6  B7E2DA     mov.b 0x0000,0x02da
16:                }
  01A8  37FFF3     bra 0x000190

Desconectado pablo_chile

  • PIC10
  • *
  • Mensajes: 6
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #4 en: 29 de Diciembre de 2008, 15:39:13 »
segun yo deberia tener una frecuencia mucho mayor, no?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #5 en: 29 de Diciembre de 2008, 20:29:37 »
Por lo que veo, dentro del bucle tienes 14 ciclos de instrucción (12 instrucciones de 1 ciclo + el BRA que usa 2)

Si vas a 10MIPS deberías ver el parpadeo a una frecuencia de:
10MHz / 14 / 2 = 357KHz

¿Y dices que lo ves a 60KHz?, ¿estás seguro?

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #6 en: 30 de Diciembre de 2008, 16:21:56 »
Hola!

Algunas veces me ha pasado en C30  pongo todo el encabezado de configuracion de bits en el código; sin embargo, en la ventana de configuration bits estan marcados otras opciones ...

Verifica si en CONFIGURATION -> CONFIGURATION BITS está marcado la opcion de CONFIGURATION BITS SET IN CODE.

Control Automático, DSP & Microcontroladores

Desconectado pablo_chile

  • PIC10
  • *
  • Mensajes: 6
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #7 en: 30 de Diciembre de 2008, 23:12:03 »
si blackCat, esta marcada esa opcion.

Y estoy seguro que parpadea a 60 KHz, que podra ser? Lo otro, si estoy usando PLL4 no deberia ser 4*10 MHz/14/2 ???

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #8 en: 31 de Diciembre de 2008, 00:38:46 »
Hola!

Simulé el programita con MPLAB SIM tengo que un ciclo del while dura 15 ciclos de instrucción ... eso a 10MIPS (40MHz) significa 1.5us ... es decir la salida esta en 0 lógico 1.5us y en 1 lógico 1.5us, lo que seria una señal de 333.3kHz.

Que marca o tipo de osciloscopio estás usando? Ya intentaste con otro cristal?  Hace el intento con uno más pequeño 8MHz o 4MHz? Podes poner algún diagrama de tu circuito? Como esta conectado el pin de MCLR?

Me gustaría que hicieras el intento con el siguiente programa:

Código: C
  1. #include "p30f2010.h"
  2.  
  3. _FOSC(CSW_FSCM_OFF & XT_PLL4)
  4. _FWDT(WDT_OFF)
  5. _FBORPOR(MCLR_EN & RST_PWMPIN & PBOR_OFF & PWRT_OFF)
  6.  
  7. int main (void)
  8. {
  9.  
  10.         TRISE = 0x0000;
  11.         PORTEbits.RE0 = 1;
  12.         PORTEbits.RE1 = 1;
  13.  
  14.         T1CON = 0;
  15.         TMR1 = 0;                              
  16.         PR1 = 5000;                            
  17.         IFS0bits.T1IF = 0;                     
  18.         IEC0bits.T1IE = 1;             
  19.  
  20.         T1CONbits.TON = 1;
  21.  
  22.         while(1)
  23.         {
  24.  
  25.                 PORTEbits.RE0 = !PORTEbits.RE0;
  26.  
  27.         }
  28.  
  29. }
  30.  
  31. void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)
  32. {
  33.  
  34.         IFS0bits.T1IF = 0;
  35.  
  36.         PORTEbits.RE1 = !PORTEbits.RE1;
  37.  
  38. }

Es básicamente la misma idea; pero, esta vez estamos usando el timer 1 con interrupción cada 0.5ms, dando asi una salida de 1kHz sobre RE1.

Observa bien que está RE0 con tu programa original y yo añadí RE1.


Saludos!


« Última modificación: 31 de Diciembre de 2008, 00:53:40 por blackcat »
Control Automático, DSP & Microcontroladores

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #9 en: 31 de Diciembre de 2008, 03:51:55 »
si blackCat, esta marcada esa opcion.

Y estoy seguro que parpadea a 60 KHz, que podra ser? Lo otro, si estoy usando PLL4 no deberia ser 4*10 MHz/14/2 ???

Cada instrucción necesita 4 ciclos de reloj, por lo que tendrías que dividir otra vez por 4.

La prueba que te ha sugerido Blackcat será definitiva. Yo sospecho que el problema está en la medición de la frecuencia.

Desconectado Renatox_

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 541
    • máquinas cnc
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #10 en: 31 de Diciembre de 2008, 04:03:47 »
hola, y prueba también cambiando

PORTEbits.RE0
por
_LATE0

suerte,
control de movimiento

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #11 en: 31 de Diciembre de 2008, 16:55:30 »
Si yo tambien sospecho que la medición de frecuencia .... supongo que el osciloscopio no tiene buena resolución para medir frecuencias relativamente altas

Creo que el LAT es mas seguro ...
« Última modificación: 31 de Diciembre de 2008, 16:57:49 por blackcat »
Control Automático, DSP & Microcontroladores

Desconectado pablo_chile

  • PIC10
  • *
  • Mensajes: 6
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #12 en: 03 de Enero de 2009, 19:31:28 »
Estimados,

Gracias por la ayuda y Feliz 2009!!. El lunes voy a probar los programas que Uds. me sugieren y les cuento.

Saludos,


Pablo.

Desconectado stevengalindom

  • PIC10
  • *
  • Mensajes: 18
Re: pregunta facil sobre dsPIC30F2010
« Respuesta #13 en: 19 de Agosto de 2011, 16:47:38 »
como es la ecuacionn de los MIPS?????


 

anything