TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: Doohan en 04 de Mayo de 2011, 07:32:50

Título: Problema con simulación de puertos en MPLAB (solucionado)
Publicado por: Doohan en 04 de Mayo de 2011, 07:32:50
Hola a todos.

Estoy empezando a programar dsPics e intentándolo simular con la herramienta MPLAB SIM.
Hace tiempo estuve programando PICS en ASM y no tuve ningún problema, pero ahora al hacerlo en C el simulador no me simula los puertos por algo que debo hacer mal.

Para que entendais el problema he hecho un programa muy básico siguiendo este tutorial (http://ww1.microchip.com/downloads/en/DeviceDoc/70094a.pdf) para ver si vosotros apreciais qué hago mal:


Si os fijais el puerto A no cambia cuando le asigno el valor del contador.
A partir del segundo 49 sí que cambia pero es porque le doy a "Run" y lo vuelvo a parar con "Halt", pero no toma el mismo valor que el contador

He probado con el puerto B y tampoco. También he buscado por el foro temas parecidos y no he encontrado nada.

Por si no lo apreciais en el vídeo el programa es el siguiente:
Citar
#include "p30f6014.h"

int counter;

int main (void)
{
   counter = 1;
   TRISA = 0;
   PORTA = 0;

   while(1) // do forever
   {
      PORTA = counter;
      counter++;
   }
   return 0;
}

Espero que alguien pueda ayudarme.

Un saludo y gracias de antemano
Título: Re: Problema con simulación de puertos en MPLAB (vídeo explicativo)
Publicado por: Doohan en 04 de Mayo de 2011, 10:53:39
Sigo aquí dándole al tema y he descubierto que ese mismo código usando el puerto F funciona perfectamente, asique deduzco que es cuestión de la configuración de los puertos A y B

Citar
#include <p30f6011A.h>

//_CONFIG1( JTAGEN_OFF && GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF &ICS_PGx2
//& FWDTEN_OFF & WINDIS_OFF & FWPSA_PR128 & WDTPS_PS32768);
//_CONFIG2( FNOSC_PRI & FCKSM_CSDCMD & POSCMOD_HS);

#define FCY 10000000UL

int counter = 0;

main(int argc, char * argv[]){
   
   TRISF=0x0000;

   PORTF=0;

   while(1){
      PORTF = counter;
      counter++;
   }
}

He cambiado el Pic y he usado el dsPIC30F6011 que es el que usaré en la realidad.
Ahora me surge una duda: ¿que pic sería el eqivalente a este en la serie 33F? Lo pregunto para poder simularlo en proteus

Un saludo!
Título: Re: Problema con simulación de puertos en MPLAB (vídeo explicativo)
Publicado por: Leon Pic en 04 de Mayo de 2011, 11:48:39
No tengo a mano, el data sheet del pic con que trabajás.
Para no perder tiempo, te respondo mientras lo descargo.

¿Te aseguraste que en el puerto A no hay entradas analógicas? Si tiene, tienes que configurar los pines como digitales.
Título: Re: Problema con simulación de puertos en MPLAB (vídeo explicativo)
Publicado por: Doohan en 04 de Mayo de 2011, 14:28:34
No tengo a mano, el data sheet del pic con que trabajás.
Para no perder tiempo, te respondo mientras lo descargo.

¿Te aseguraste que en el puerto A no hay entradas analógicas? Si tiene, tienes que configurar los pines como digitales.

Gracias por la respuesta León Pic. Creo que por ahí van los tiros porque justamente son unos pines los que no cambian su valor

En cuanto encuentre la solución lo pondré por aquí junto con el código. Seguro que a más de uno le sirve.

Un saludo
Título: Re: Problema con simulación de puertos en MPLAB (vídeo explicativo)
Publicado por: Doohan en 04 de Mayo de 2011, 15:16:59
Efectivamente el problema venía por la configuración de los pins. Bueno más bien el problema era que YO diese por supuesto que la configuración por defecto era en modo digital

Por si alguien le sirve aquí dejo el código:

Citar
#include <p30f6011A.h>


int counter = 0;

int main(){

   ADPCFG = 0xFFFF; //Configura los pines analogicos como digitales
   TRISB = 0x0000;

   PORTB = 0;

   while(1)
   {
      PORTB = counter;
      counter++;
   }
   return 0;
}
Título: Re: Problema con simulación de puertos en MPLAB (solucionado)
Publicado por: Leon Pic en 05 de Mayo de 2011, 15:06:00
Excelente :-/ :-/
Título: Re: Problema con simulación de puertos en MPLAB (solucionado)
Publicado por: vicpoweriz en 22 de Mayo de 2011, 14:24:08
Gracias por el post, y por completar el hilo de tus investigaciones cuando has dado con la solución. Justamente probé en el simulador el mismo código y noté que no se cargaba bien el valor del contador al puerto. No le di importancia pero agradezco saber porqué pasaba.
Un saludo