Autor Tema: Consulta para los conocedores de dsPIC...  (Leído 2864 veces)

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

Desconectado agauss

  • PIC16
  • ***
  • Mensajes: 147
Consulta para los conocedores de dsPIC...
« en: 28 de Febrero de 2011, 16:49:29 »
Bueno, pues resulta que ahora estoy iniciandome a los dsPIC30F; tengo ya algunos programas hechos tanto en assembler como en CCS (cosillas muy basicas para empezar). Andando por el foro m entero que CCS no es la mehor opcion (en cuanto a C se refiere) para la programacion de los dsPIC, sin embargo como ha sido el compilador de cabecera para mi no me decido aun a migrar al C30 del cual escucho que es lo mejor para estos menesteres. En fin tengo este programa escrito en CCS, el cual emula un contador de 0-59 con salida a display de 7 segmentos multiplexado cada 25ms para visualizarlo por 0.5 segundos aproximadamente usando el puerto B del dsPIC30F4013 con un cristal de 4Mhz, el problema esta en que sin el delay despues de escribir el dato bcd al puerto y antes de activar el bit de permiso del display el puerto permanece en ceros. Hace correctamente la accion de multiplexor pero siempre se visualiza cero sobre los display. Intente utilizando #use fast_io(port) pero el resultado es el mismo, entonces la unica solucion fue colocar ese delay_us(10) que aparece deshabiltado en el codigo. Si alguien sabe de alguna otra forma de corregir esto podria compartirlo con el foro. De igual forma si tienen alguna sugerencia respecto a la plantilla sobre la cual genero el programa (si hay algo raro o que parezca poco eficiente) acepto la critica constructiva.

Cabe mencionar que el programa funciona perfectamente con los delay_us(10); esto esta probado fisicamente sobre PROTOBOARD al igual que al menos otros 10 ejemplillos mas que me gustaria mas adelante publicar para aquellos que quieran iniciar con algo sencillisimo con estos dsPIC.

Saludos a los compañeros del foro...

Código: [Seleccionar]
#include <30F4013.H>
#fuses XT,PR,NOCKSFSM, NOWRT, NOPROTECT, NODEBUG, NOWDT, PUT16, BORV27, NOBROWNOUT, MCLR
#use delay(clock=4000000)

#byte portb = 0x02C8

int16 x,y,z;
#locate x = 0x0800
#locate y = 0x0802
#locate z = 0x0803


void main(void)
{
   set_tris_b(0xFFC0);
   setup_adc_ports(NO_ANALOGS);
   
   while(TRUE)
   {
      for(x=0;x<6;x++)
      {
         for(y=0;y<10;y++)
         {
            for(z=0;z<10;z++)
            {
               portb = y;
       //delay_us(10);
               
               bit_set(portb,4);
               delay_ms(25);
               bit_clear(portb,4);
               
               portb = x;
       //delay_us(10);
               
               bit_set(portb,5);
               delay_ms(25);
               bit_clear(portb,5);
            }
         }
      }   
   }
}
No es el conocimiento, sino el acto de aprendizaje, y no la posesión, sino el acto de llegar allí, que concede el mayor disfrute.
"Carl Friedrich Gauss"

El tacto es el arte de hacer un punto sin hacer un enemigo.
"Isaac Newton"

Desconectado agauss

  • PIC16
  • ***
  • Mensajes: 147
Re: Consulta para los conocedores de dsPIC...
« Respuesta #1 en: 14 de Marzo de 2011, 00:49:10 »
El mismo programa pero editado y compilado en mikroC para dsPIC no tiene el problema antes mencionado, en asm30 tambien funciona perfectamente, simplemente extraño, no se si soy yo o algun bug del CCS. Aqui esta el programa en mikroC.

Código: [Seleccionar]
char raccu,raccd;
char i absolute 0x0800;

void main(void)
{
   LATB   = 0x0000;
   TRISB  = 0xFFC0;
   ADPCFG = 0xFFFF;
   
   raccu = 0;
   raccd = 0;
   
   while(1)
   {
      for(i=0;i<=9;i++)
      {
         LATB = raccu;
         LATBbits.LATB4 = 1;
         Delay_ms(25);
         LATBbits.LATB4 = 0;

         LATB = raccd;
         LATBbits.LATB5 = 1;
         Delay_ms(25);
         LATBbits.LATB5 = 0;
      }
     
      raccu++;
      if(raccu>9)
      {
         raccu = 0;
         raccd++;
         if(raccd>5)
            raccd = 0;
      }
   }
}

saludos...
No es el conocimiento, sino el acto de aprendizaje, y no la posesión, sino el acto de llegar allí, que concede el mayor disfrute.
"Carl Friedrich Gauss"

El tacto es el arte de hacer un punto sin hacer un enemigo.
"Isaac Newton"


 

anything