Autor Tema: Este 16f877a está bien configurado? Fácil solución a mi entender  (Leído 1560 veces)

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

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Hola tengo un 16877a que simulado funciona correctamente, pero al probarlo en la realidad no hace lo que debería así que os pregunto qué puede ser que tenga mal? A mi entender es cuestion o de fuses o de configuración. He leído que la RA4 es open drain así que si yo la tengo como entrada haría falta poner algo en la configuración o físicamente un pull up? o eso es sólo para cuando sea salida?



Código: [Seleccionar]

#include <16F877A.h>      //libreria para el manejo del pic16f877a       
#use delay(clock=12000000)      //declara  la frecuencia del cristal
#include <string.h>      //para usar los string (textos)
#include <stdlib.h>      //biblioteca estándar de propósito general
#fuses HS,PUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT,NOWRT    //palabra de configuración PUESTO "--"PUT Y NOWRT
#use standard_io(a)      //Esta directiva afecta al código que el compilador genera para las instrucciones de entrada                             
#use standard_io(b)      // y salida. El método standar de hacer I/O causará que el compilador genere
#use standard_io(c)      //código para hacer que un pin de I/O sea entrada o salida cada vez que se utiliza
#use standard_io(d)
#use standard_io(e)
#define use_portb_lcd TRUE      //utiliza el port b para lcd
#include <ds1307mod.c>      //libreria ds1307 modificada
#include <flex_lcd.c>      //libreria de lcd

void main(void){

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_counters(RTCC_INTERNAL,RTCC_DIV_256);      //configuracion interrupcion TMR0
   /*setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);*/
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   
   set_tris_a (0xff);      //configuramos los puertos
   set_tris_d (0x01);
   set_tris_b (0x00); 
   set_tris_c (0x00);
   set_tris_e (0xff);
     
   output_low(PIN_D6);
   output_low(PIN_D7);

Como véis tengo dudas en la configuración está puesta correctamente? Necesitaré cai todo los pines y lo único que empleo son entradas, salidas, una LCD en el B y el I2C para el DS1307. Vuelvo a preguntar, hay algo mal en la configuración? En setup de los timers si utilizo el timer0, qué pongo? esto?
Código: [Seleccionar]
setup_timer_0(RTCC_INTERNAL,RTCC_DIV_256);      //configuracion interrupcion TMR0
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);*/

Está bien especificado el 0 para mi temporización que no puse el código y los otros deshabilitados?
Espero que alguien con experiencia me aconseje sobre la configuración en la realidad para este pic ya que dispongo de poco tiempo. Muchísimas grácias y si hay algo que no tenga en cuenta háganmelo saber

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Este 16f877a está bien configurado? Fácil solución a mi entender
« Respuesta #1 en: 01 de Marzo de 2010, 11:23:46 »
Parece que los fuses están correctos. Primero que nada, verifica que las conexiones estén correctas. No se si lo que sigue ya lo hiciste: Coloca una capacitor de 100nf bien cerca entre los pines VCC y GND del pic. Verifica que el pin de reset este conectado a VCC. Te aconsejo que si tienes entradas sin usar las conectes a GND. Colócale los capacitores al cristal, del valor que te aconsejen en la hoja de datos. Verifica que la fuente te esté entregando el voltaje correcto y esté bien filtrada y regulada.
Verifica en tu programa quemador, que los fuses sean los que en realidad le quieres quemar.
Como verás en la simulación hay muchas cosas que no hace falta verificar y en  la realidad si.
« Última modificación: 01 de Marzo de 2010, 11:26:27 por pablomanieri »

Desconectado venerable13

  • PIC10
  • *
  • Mensajes: 45
Re: Este 16f877a está bien configurado? Fácil solución a mi entender
« Respuesta #2 en: 01 de Marzo de 2010, 18:01:55 »
muchas grácias si no llega a ser por ti... verifiqué las conexiones y había un error de conexionado, además le puse esos fuses y los setups que más o menos ves y el pic fue, al no estar las cosas bien conectadas el pic se volvía loco, lo fuerte es que habían cosas que iban y otras no, pero tus consejos son muy buenos que pueden ayudar a alguien ya que las demás cosas que comentas las tuve en cuenta, sólo era que había una mala conexión

Muchas grácias