Autor Tema: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC  (Leído 4896 veces)

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

Desconectado Azazel_1983

  • PIC10
  • *
  • Mensajes: 10
MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« en: 05 de Mayo de 2005, 14:08:00 »
Wenas, ante todo gracias por leer, si luego respondeis ya seria el sumun xD

A ver, os comento, estamos realizando algunas practicas en la universidad para programar un PIC 16f877. Usamos el Mplab con el Ccs q permite hacerlo en lenguaje C (yo es que de ensamblador tengo poca idea). Hago el programa, lo compilo y genera el *.hex hasta ahi todo perfecto. Pero luego al intentar grabar el PIC siempre me da errores, use el programa que use.

Mi pregunta es, si en el Mplab no me da fallos, es normal q luego si me los de? o esq alguna opcion elegida al grabar es incorrecta?

Si alguien se imagina q pude pasar le agradeceria q dijera algo. Gracias!!!!!!!!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #1 en: 05 de Mayo de 2005, 15:17:00 »
¿Con qué programador intentas programar el PIC?
¿Qué software de programación utilizas?
¿Es un 16F877 o un 16F877A?
¿Qué error te da?

Que MPLAB no te falle compilando, no significa que luego no tengas fallos al programar el micro porque entran en juego otros factores. Y tampoco te garantiza que luego el programa funcione...

Pero no te preocupes. De momento intenta contestar estas preguntas y verás como encontramos solución.

Desconectado Azazel_1983

  • PIC10
  • *
  • Mensajes: 10
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #2 en: 05 de Mayo de 2005, 15:31:00 »
No estoy muy seguro, mañana te respondo con mas exactitud, pero creo que el programa que usamos es mtlv o algo similar (tb hay otro icqpro pero creo q me han dicho q ese lo creo un profesor asi que dudo q lo conozcas).

Hago lo q antes te he dicho, en el Mplab 7.10 con el Ccs pongo el codigo en C y lo compilo. Cojo el *.hex q se crea y en el "mtlv" lo abro, elijo el 16f877 (es este el q usamos, no el A) y le damos a "programar todo" y empieza a grabar el PIC. Todo correcto, hasta que justo al fina, tras termiar de verificar da un error, q si no recuerdo mal es, "error en la dirección 4". Cuando usamos el icqpro el error que da es error en la fila 00001h.

Como te he dicho no estoy seguro de todo esto, mañana te lo pongo mas exactamente pero weno, mas o menos es algo asi por si te uedes llegara hacer una idea.

Gracias!!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #3 en: 05 de Mayo de 2005, 15:59:00 »
En primer lugar te recomiendo que te pases por el subforo de programadores, y verás qué familiar te suena todo lo que hay allí posteado.
Muchas risasMuchas risasMuchas risas Te equivocaste, el que no conozco es ese "mtlv". ICProg es bien famoso y lo usa mucha gente, aunque te recomiendo que utilices winpic800, creado Sispic, por un compañero del foro:
http://siscobf.webcindario.com/winpic800.htm

Por último, ese error que da tu programa, me suena a que no ha programado nada de nada, y que al verificar encuentra el error en la primera celda que lee.

Eso con winpic no pasa, porque si falla se da cuenta al principio.

Desconectado Azazel_1983

  • PIC10
  • *
  • Mensajes: 10
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #4 en: 05 de Mayo de 2005, 16:18:00 »
Ok, muchas gracias, mañana ya probaré el Winpic a ver qué es lo que pasa.

Por ultimo, una pregunta de principiante.....estoy haciendo el código en C, he hecho lo que es todos los if-s, bucles, etc. pero desconozco muy bien qué he de poner antes, me refiero a configurar los puertos como salida o entrada, inicializar las variables.... sabes de algun sitio donde pueda ver eso o podrias ponerme, muy por encima, los pasos principales?

P.D: perdón por mi ignorancia xD

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #5 en: 05 de Mayo de 2005, 16:55:00 »
Pues no tienes más que mirar los ejemplos que trae CCS. O incluso aquí mismo, en este subforo encontrarás multitud de ejemplos de los que copiarte.

Desconectado Azazel_1983

  • PIC10
  • *
  • Mensajes: 10
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #6 en: 06 de Mayo de 2005, 09:05:00 »
Aqui estoy denuevo. EL programa que usamos para grabar el PIC es el winlv. EL programa que tengo hecho ya lo compilamos y lo pasamos al PIC sin ningun problema pero, como era de esperar, no funciona. Lo agrego aqui por si en algun momento en el que estes aburrido lo miras un poco. Es muy sencillo, unicamente hay que encender algunos leds dependiendo de unas condiciones.

#include <16f877.h>
#fuses HS,NOPROTECT,nowdt,nolvp,nobrownout
#use delay(clock=4000000)
int monedas=0;
main ()
{
   while (true)
   {
      output_bit(PIN_C0,1);      
      if (PIN_B0==0)                     
      {
         if (PIN_A4==1)
         {
            while (!PIN_A4==0)
            {}
            monedas = monedas +1 ;
         }
      }
      if (monedas >= 2)
      {
         if (PIN_D7== 1 && PIN_D6== 1)
         {
            output_bit (PIN_D0,1);
            while (!PIN_D7==0 || !PIN_D6==0)
            {}
            output_bit(PIN_D0,0);
         }
         if (PIN_D7==1 && PIN_D6==0)
         {
            output_bit(PIN_D3,1);
            monedas= monedas -2;
            while (PIN_D7==1 || PIN_D6==1)
            {
               if (PIN_D6 == 1)
               {
                  output_bit (PIN_D3,0);
                  output_bit (PIN_D0,1);
               }
            }
            output_bit (PIN_D0,0);
            output_bit (PIN_D3,0);
         }
         
         if (PIN_D7==0 && PIN_D6==1)
         {
            output_bit(PIN_D2,1);
            monedas= monedas -2;
            while (PIN_D7==1 || PIN_D6==1)
            {
               if (PIN_D7 == 1)
               {
                  output_bit (PIN_D2,0);
                  output_bit (PIN_D0,1);
               }
            }
            output_bit (PIN_D0,0);
            output_bit (PIN_D2,0);
         }
      }

      if (PIN_B0==1)
      {
         if (PIN_A4==1 && monedas>=1)
         {
            while (!PIN_A4 == 0)
            {}
            output_bit(PIN_D1,1);
            monedas = monedas-1;
            delay_ms(500);
            output_bit(PIN_D1,0);
         }
      }
   }
}

Las primeras lineas, a parte de lo de la libreria del 16f877 lo demas no tengo ni idea para que es, lo ha puesto el profesor. Si ves algun error gordo o algo que crees que deberia cambiar ponlo cuando puedas. Thanx!!

P.D: vas a tener que darme una direccion para mandarte un par de botellas de vino xD

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #7 en: 06 de Mayo de 2005, 10:33:00 »
No sé qué tiene que hacer tu programa, pero en el encabezado tienes un problema, al menos. Has utilizado el fuse HS para un cristal de 4MHz. Ponle XT y prueba, a ver si es ese el único error.

Y ve enfriando el vino...

Desconectado Azazel_1983

  • PIC10
  • *
  • Mensajes: 10
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #8 en: 10 de Mayo de 2005, 13:50:00 »
Ya he vuelto! perdón por la tardanza, pero es que eran fiestas y.....xD A ver, te comento lo que he descubierto. Tienes razon cuando dices que al usar el reloj de 4MHz debo poner XT, pero segun el "profesor" (cada dia dudo mas de sus aptitudes) con XT daba problemas y por eso ponemos HS. Lo mas gracioso ha sido que si el programa no funcionaba no era solo por el codigo, la placa en la que ponemso el pic para comprobar si funciona estaba mal :S asi que pusieramos lo que pusieramos en el codigo daba igual.

Una dudilla:

if (PIN_B0 == 1)

if (input(PIN_B0))

esas dos instrucciones se supone que harian lo mismo? es q con la primera me da mas errores; en un manual he visto que aconsejan poner el numero al principio, pero sigue igual, no se.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #9 en: 10 de Mayo de 2005, 14:22:00 »
Son tan equivalentes que la primera no tiene porque dar más errores que la segunda. Sencillamente hacen lo mismo.

Desconectado Azazel_1983

  • PIC10
  • *
  • Mensajes: 10
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #10 en: 10 de Mayo de 2005, 14:52:00 »
Ya la ultima y te dejo en paz jeje si pongo:

while(!PIN_B0==0)
{}

se le puede ir la oya? no se, es q es el unico punto critico q veo al programa, lo unico raro.

Desconectado German_Pereira

  • PIC10
  • *
  • Mensajes: 12
RE: MPLAB + CCS + PIC16f877 -> error al pasar el *.hex al PIC
« Respuesta #11 en: 24 de Mayo de 2005, 09:25:00 »
Hola

Un consejo que te puedo dar es que no coloques
#fuses HS,NOPROTECT,nowdt,nolvp,nobrownout
en el codigo, algunos progrmadores no funcionan bien cuando colocas la palabra de configuracion en el mismo hex, no se si ese es el caso por que el programador que usas no lo conzco.

Anula esa linea y configura la palabra de configuracion en el mismo programador, y haber que pasa.

Ahora sobre tu sonsulta:
while(!PIN_B0==0) {}
complementar el pin para luego preguntar su estado, te genera mas codigo, del que necesitas recuerda estas trabajando en C, y este te genera mas codigo que trabajando solo en ASM.

es lo mismo que  while(PIN_B0==1) {}

Haber probalo.

Saludos desde La Paz Bolivia

German



 

anything