Autor Tema: Ayuda Con Pics 16f877a y 16f877  (Leído 6260 veces)

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

Desconectado ElessarT07

  • PIC10
  • *
  • Mensajes: 11
Ayuda Con Pics 16f877a y 16f877
« en: 25 de Octubre de 2010, 20:37:55 »
Bueno Hola, buenas a todos:

tengo un problemita con unos pics que acabo de adqurir y no se cual es el problema. aun soy novato asi que disculpen si me veo medio Noob jajajja

´perdon si no es el lugar para postear pero vi que aqui ponen post de ayuda, asi que me anime.
pa empezar
por ejemplo tengo un programa: este programa hace que prendan los leds de un puerto asi mas o menos
10000000
11000000
11100000
11110000
11111000
11111100
11111110
11111111
11111110
11111100
11111000
11111000
11110000
11100000
11000000
10000000

#include <16f877A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#use delay(clock=4000000)
#byte port_b=0x06
#byte port_c=0x07
#byte port_d=0x08
int contador,x[9]={0,1,3,7,15,31,63,127,255};
main()
{
   set_tris_b(0);
   set_tris_c(0);
   set_tris_d(0);

  //<>

   while (true)
   {
   for(contador=0;contador<9;contador++)
   {
      port_b=x[contador];
      delay_ms(50);
      port_c=255;
      port_d=255;
   }
   for(contador=8;contador>0;contador--)
   {
      port_b=x[contador];
      delay_ms(50);
      port_c=0;
      port_d=0;
   }
   }
}


El problema es que: tengo 3 pics dos 877a y un 877, el 877 me funciona perfecto, pongale lo que le ponga pero los A no funcionan, por ejemplo en este programa, los pics A solo hacen la primera parte y se brincan al inicio de nuevo
11000000
11100000
11110000
11111000
11111100
11111110
11111111
00000000

y tambien tengo otro problema que solo uno de los pics A tiene un problema cone l cristal, que a vece tengo que tocarlo pa que arranque o siga,

tambien tengo otro problema

EL motivo de los 3 pics esq estoy haciendo un globo terraqueo con estos, como? en un aro aun lado solamente hay muchos leds, al girrar y con la programacion qu etiene, deberia mostrar el globo terraqueo, pero los pics A solo hacen 11 lineas de las 60 que deberian hacer, :S el pic 877 lo hace todo

asi que no se si es problema de los FUSES o que onda,

como lo tengo conectado?!!!
el mrcl esta con una resistencia de 4.7k a poder, vdd directo a poder, vss tierra, el cristak esta conectado con dos capacitores de 22pico, y esta alimentado por 5 volts

ESpero me puedan ayudar a qu elos PICS funcionen como deberian :(

GRACIAs de antemano
« Última modificación: 25 de Octubre de 2010, 22:55:05 por ElessarT07 »

Desconectado martincnc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 352
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #1 en: 25 de Octubre de 2010, 20:55:08 »
Hola ElessarT07, bienvenido al foro!

La verdad es que no uso C para microcontroladores y no soy el mas indicado para darte una mano, pero me llamo la atención que mencionaras que los capacitores junto al cristal son de 12 uF. Esto es así o fue una simple equivocación?. De todas formas te digo que los capacitores junto al cristal deben ser de entre 15pF a 27pF, generalmente se usan de 22pF.

Saludos!

Desconectado ElessarT07

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #2 en: 25 de Octubre de 2010, 21:12:45 »
UPS! error de dedo :D

efectivamente esta conectado a uno de 22microF perdon :D

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #3 en: 25 de Octubre de 2010, 21:17:57 »
No veo por ningún lado la configuración del puerto A. Yo lo configuraría como salida también, al menos de momento. Para que no esté generando ninguna interrupción erróneamente. También deshabilitaría los conversores AD y los comparadores.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado ElessarT07

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #4 en: 25 de Octubre de 2010, 21:38:57 »
Ya lo hice y nop, sigue igual! es el mismo problema!

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #5 en: 25 de Octubre de 2010, 22:13:02 »
Hola ElessarT07, tienes en el cristal capacitores de 22uF?

... esta conectado a uno de 22microF perdon :D

Mira lo que te dice martincnc:

... generalmente se usan de 22pF...

Saludos!

Desconectado ElessarT07

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #6 en: 25 de Octubre de 2010, 23:47:57 »
perdon por las tantas equivocaciones ya corregi ahhahaha...

ya probe el programa con mlab, pero es lo mismo entonces no se si son los FUSES o es el circuito o de plano los pci que estan fallando

Desconectado dom124

  • PIC10
  • *
  • Mensajes: 42
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #7 en: 25 de Octubre de 2010, 23:57:30 »
Hola Elessar, primero como dicen los demas,,, los capacitores deben ser de 22pF,,, asegurate de tener esos valores... y la otra es una pregunta, cuando pones el 877a volves a crear un proyecto desde cero no??? ya que si solo cambias en el include probablemente no funcionen aunque tengan la misma distribucion de pines y demas siimilitudes.

otro error no se ve a simple vista. deberia funcionar con ambos.. insisto en que aclares si creas 2 proyectos diferentes para cada micro nose si lo haces o no. probablemente esa sea una causa de este tipo de problemas.

Saludos

Carlos

Desconectado ElessarT07

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #8 en: 26 de Octubre de 2010, 01:00:46 »
tienen la misma distribucion de pines que ocupo... y no, utilizo el mismo archivo .hex
ya revise la programacion ye l ciercuito ya me ayudaron a revisarlo al parecer esta bien, si era de 22pf jejeje

ahora no se si loq ue falla es la config o son los pics,
debo aclarar que ambos pics (lo acabo de notar) tienen una como especia de quemadura pequeña cerca de los pines 21 y 20, entonces me hace dudar de que sean los pics.

Ya utilice otro compilador y nomas no :(

Desconectado martincnc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 352
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #9 en: 26 de Octubre de 2010, 03:16:59 »
Hola ElessarT07

Ademas de lo que dice AngelGris sobre las entradas analógicas, fijate también si los dos micros soportan el cristal que estas usando, ya que la terminación del modelo, o la ausencia de la misma, determinan la frecuencia máxima de reloj que es soportada por el micro.

Para mas información sobre el cambio de un modelo a otro te dejo este documento sobre la Migración de PIC16F87X a PIC16F87XA, que si bien dice que ademas de que son compatibles pin a pin entre ambos y que no es necesario hacer cambios en el programa para uno u otro modelo, puede llegar a ser de utilidad.

Saludos!

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #10 en: 26 de Octubre de 2010, 04:43:11 »
Hola, no soy muy bueno en C, ya que estoy empezando en programación, pero prueba con lo siguiente,
Código: C
  1. int contador,x[9]={0,1,3,7,15,31,63,127,255};  //El x[9] este no me gusta... (y no entiendo para que es)
  2.  
  3.    while (true)
  4.    {
  5.    for(contador=0;contador<9;contador++)
  6.    {
  7.       port_b=[contador];
  8.       delay_ms(50);
  9.       port_c=255;
  10.       port_d=255;
  11.    }
  12.    for(contador=8;contador>0;contador--)
  13.    {
  14.       port_b=[contador];
  15.       delay_ms(50);
  16.       port_c=0;
  17.       port_d=0;
  18.    }
  19.    }
  20. }

Espero que te sirva de ayuda  ;-)

Saludos f-traxx

Desconectado ElessarT07

  • PIC10
  • *
  • Mensajes: 11
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #11 en: 26 de Octubre de 2010, 13:55:37 »
es un 8, lo que pasa esq le estuve cambiando para ver si funcionaba y esas cosas...

f-traxx no se que me cambiaste, m estuve fijandoi que si cambiaba los FUSES el 877 seguia funcionando pero los 877a no servian o simplemente no encendian!

:( ya no se que hacer

EDIT!!!!--------------------------------------
al parecer era un error e el voltaje, Los pics estaban dañados pero funcionan :S, tube que usar un DRIMER para ver a que voltaje trabajaban los pics.
resulta que ambos 877a trabajan a diferente voltaje jajajja

estaban dañados :S

creo que se soluciono, muchas gracias a todos enserio :D
« Última modificación: 26 de Octubre de 2010, 18:30:27 por ElessarT07 »

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #12 en: 26 de Octubre de 2010, 14:37:15 »
Hola ElessarT07, estuve usando el PIC_Wizard del CCS con ambos PICs y este es el resultado:

PIC16F877:
Código: [Seleccionar]
#include <16F877.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NODEBUG                  //No Debug mode for ICD

#use delay(clock=4000000)

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);

}

PIC16F877A:
Código: [Seleccionar]
#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=4000000)

void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_psp(PSP_DISABLED);
   setup_spi(SPI_SS_DISABLED);
   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);

}

Como puedes ver no hay diferencia en los FUSES, pero si hay algunas diferencias en los encabezados para cada PIC, por lo que yo haría una compilación aparte para cada tipo de PIC usando los encabezados correspondientes.  Sobre todo en el caso del PIC16F877A, veo que la diferencia en el encabezado tiene mucho que ver con lo que te dice AngelGris.

Saludos!

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #13 en: 26 de Octubre de 2010, 15:54:26 »
es un 8, lo que pasa esq le estuve cambiando para ver si funcionaba y esas cosas...

f-traxx no se que me cambiaste, m estuve fijandoi que si cambiaba los FUSES el 877 seguia funcionando pero los 877a no servian o simplemente no encendian!

:( ya no se que hacer

lo unico que he cambiado es la forma que tenias de llamar a contador, que significa la x de: int contador,x[9]={0,1,3,7,15,31,63,127,255};

Has copiado el trozo de codigo que te he puesto y lo has probado?

Desconectado dom124

  • PIC10
  • *
  • Mensajes: 42
Re: Ayuda Con Pics 16f877a y 16f877
« Respuesta #14 en: 26 de Octubre de 2010, 20:44:57 »
Elessar insisto en que pruebes generar 2 hex cada uno correspondiente a cada micro... los micros son compatibles y todo pero a veces el que genera el error es el compilardor... prueba generar 2 proyectos con sus respectivos micros...

A mi me ha pasado algo similar con el 873 y el 873a y era lo que te comente antes.