Autor Tema: El pic16f877a no ejecuta los tiempos como es debido.  (Leído 4052 veces)

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

Desconectado ELECTROSWALDO

  • PIC10
  • *
  • Mensajes: 14
El pic16f877a no ejecuta los tiempos como es debido.
« en: 10 de Julio de 2009, 00:31:10 »
Que tal, tengo un problema con un programa en 16f877a, es la primera vez que lo uso. He notado que el pic funciona lento, ya que cuando escribe un texto en el lcd se puede notar como se escribe caracter por caracter. Por ejemplo el retardo que tengo ahi en el codigo es de 500ms, sin embargo dura como 10seg. Cual creen que sea el problema.

El cristal que le pongo es de 4Mhz y hace lo mismo con uno de 12Mhz.

Por cierto, como informacion adicional: lo mismo me pasa en ensamblador pero peor, ahi nisiquera escribe el mensaje en el LCD solo lo inicializa. Una instruccion en ensamblador a 4Mhz se ejecuta en 1uS normalmente, sin embargo con el osciloscopio pude ver que cada instruccion se ejecuta en 25uS.

Ah y algo que me sorprendio, cuando alimento el circuito aunque no le ponga el cristal al PIC funciona igual que si se lo pusiera.  ¿como esta eso?. este micro no tiene oscilador interno que yo sepa.

Donde estoy cometiendo el error?

ESTE ES EL CODIGO:


#include<16f877.h>
#fuses nowdt
#fuses noput
#fuses noprotect
#fuses xt

#use delay (clock=4000000)

#include  <flex_lcd.c>



void main()
{
   lcd_init();
   lcd_gotoxy(1,1);
   printf(lcd_putc,"    FCE-BUAP    ");
   delay_ms(500);
   lcd_gotoxy(1,1);
   printf(lcd_putc,"   ELECTRONICA  ");
   
   
}
Solo hay 10 tipos de personas, los que sabemos binario y los que no.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #1 en: 10 de Julio de 2009, 01:58:14 »
Coloca los fuses, posiblemente alli este el error
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #2 en: 10 de Julio de 2009, 16:35:13 »
Prueba declarando el 877a...

#include<16f877a.h>

¿Cómo es el circuito de tu pic y lcd?

Desconectado kcire

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 84
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #3 en: 10 de Julio de 2009, 20:10:47 »
Raro, raro prueba este codigo:

Código: C
  1. #include <16F877A.h>       // PIC a utilizar
  2. #FUSES XT                  // Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
  3. #FUSES NOWDT               // No Watch Dog Timer
  4. #FUSES NOPUT               // No Power Up Timer
  5. #FUSES NOPROTECT           // Code not protected from reading
  6. #FUSES NODEBUG             // No Debug mode for ICD
  7. #FUSES NOBROWNOUT          // No brownout reset
  8. #FUSES NOLVP               // No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  9. #FUSES NOCPD               // No EE protection
  10. #FUSES NOWRT               // Program memory not write protected
  11.  
  12. #use delay(clock=4000000)  // Oscilador a 4MHz
  13.  
  14. #include <flex_lcd.c>           // Libreria para el manejo del LCD a utilizar
  15.  
  16. // FUNCION PRINCIPAL
  17. void main(void){
  18.   lcd_init();                // Iniciamos LCD
  19.   lcd_putc('\f');            // Limpiamos LCD
  20.   while(TRUE){               // Bucle infinito
  21.      lcd_gotoxy(6,1);        // Linea 1 y Columna 6
  22.      lcd_putc("Hola");
  23.      lcd_gotoxy(2,2);        // Linea 2 y Columna 2
  24.      lcd_putc("Foro TodoPIC");
  25.   }
  26. }

Un saludo,  :) y suerte

Erick
"La imaginación es más rica que el lenguaje... sugiere con palabras, la imaginación podrá hacer el resto."

Desconectado ELECTROSWALDO

  • PIC10
  • *
  • Mensajes: 14
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #4 en: 10 de Julio de 2009, 22:26:40 »
Gracias por la ayuda que han brindado. Lamentablemente en este momento no podré aplicar las sugerencias que han hecho pues cometi un error y queme el pic (le meti 17v en Vpp). Pero aprovechando mientras compro el pic, y si no es mucha molestia, podrian despejarme esta duda, que diferencia hay entre estas dos?:

printf(lcd_putc,"texto");

y

lcd_putc("texto");


Saludos.
Solo hay 10 tipos de personas, los que sabemos binario y los que no.

Desconectado ralcesar

  • PIC10
  • *
  • Mensajes: 16
    • Ayuda Electronica
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #5 en: 11 de Julio de 2009, 12:04:33 »
Para mi que tenes configurado usar el oscilador interno del PIC, ideam a la respuesta anterior fijate en los fuses

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #6 en: 11 de Julio de 2009, 13:12:04 »
pero aprovechando mientras compro el pic, y si no es mucha molestia, podrian despejarme esta duda, que diferencia hay entre estas dos?:

printf(lcd_putc,"texto");

y

lcd_putc("texto");


Saludos.

La segunda no te va a servir porque solo envía un caracter a la vez y en la primera, printf envía caracter por caracter a lcd_putc.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #7 en: 11 de Julio de 2009, 20:42:25 »
Coloca los fuses, posiblemente alli este el error
Que burrada en tu primer post estan los fuses  :mrgreen:, chekea que los cristales sean del valor real, es decir 4Mhz y/o 12 Mhz, hubo una vez que me vendieron unos disque de 4Mhz y al final no funcionó por el cristal.

saludos
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado moronilehi

  • PIC10
  • *
  • Mensajes: 17
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #8 en: 17 de Julio de 2009, 00:08:20 »
te recomiendo que user pic wizard para comenzar a usar tu nuevo proyecto
luego seleccionas los driver lcd o despues de crear los archivos lo puedes modificar el directorio del c. o h. para tu lcd o usas tu propios, luego colocas todo lo que necesite para tu programas y evitas otros errores  :-/ espero que te sirva  :D y esto puede solucionar tu problema

Desconectado ELECTROSWALDO

  • PIC10
  • *
  • Mensajes: 14
Re: El pic16f877a no ejecuta los tiempos como es debido.
« Respuesta #9 en: 17 de Julio de 2009, 22:19:37 »
Que tal, una disculpa por la demora, compre un pic nuevo pues el anterior se me quemo, copie el codigo que puso Kcire y funciono. Para hacer pruebas quite los fuses que puso Kcire y deje los que habia puesto iniciamente para ver si ese era el problema y pues siguio funcionando bien, el codigo es el mismo, incluso le quite el #include<16f877A.h> por el #include<16f877.h> (como lo habia puesto por error) y funciona en ambos casos. Es decir, el mismo programa que no jalaba bien ahora jala bien, solo hize otro proyecto y con un pic nuevo.

Les agradezco a todos por su ayuda, el pic estaba mal o no cree bien el proyecto, en fin, debere ser cuidadoso al respecto como recomiendan.

Un saludo.
Solo hay 10 tipos de personas, los que sabemos binario y los que no.