TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Cryn en 31 de Diciembre de 2006, 00:28:13

Título: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 31 de Diciembre de 2006, 00:28:13
Hola saludos he tenido mala suerte con los cristales de 20 MHz, ya que he configurado los fuses como creo que deberia haberlo hecho para dicho cristal:
#fuses HS
#use delay(clock=20000000)

pero con ninguno d elos dos micros me ha funcionado, he usado como siempre la configuración de los capacitores de 22pF como la hoja de datos, y nada

si lo hago para 4MHz funciona de maravilla, pero con 20MHz, no me ha funcionado hasta ahora, talvez algo extra qeu deba hacer y no lo he hecho, o talvez haya cometido algun error ayuda porfavor.

ahh y de paso en el 16f84a dice 16f84a-20I/P pero el 16f877a dice 16f877a-I/P
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Chaly29 en 31 de Diciembre de 2006, 08:50:36
Hola Cryn, ambos micros pueden funcionar perfectamente a 20MHz

El 16f84A-20I/P, con el 20 te lo está indicando y el 16f877A-I/P al no tener dicho número te indica que cumple con la máxima frecuencia para la que a sido diseñado ese micro que en este caso es de 20MHz.

Pero quiero hacerte unas preguntas ¿Como sabes que no funcionan? ¿Que pruebas les has realizado?

Un saludo.

Atte. CARLOS.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: vszener en 31 de Diciembre de 2006, 11:19:10
¿Has probado siempre con el mismo cristal de 20MHz? a ver si está malo el cristal.


Suerte!!! ;)
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 31 de Diciembre de 2006, 11:43:54
con el 16f877a hice un programa que despliega numeros aleatorios en un display, al presionar un pulsador, lo hice primeramente con un cristal de 4 MHz y funciona correctamente, pulso y veo  un numero aleatorio, pulso de nuevo y cambia, y asi, osea va bien, cambio el fuse y el clock en el ccs, lo compilo y lo vulevo a pasar al pic, le doy energia y no da, pulso y nada, y nada y nada.

con el 16f84a igual pruebo en un programa que lo hice con 4 MHz que funcionaba bien (un teclado creo), lo cambio a 20 MHz y naa.

pues si he probado siempre con el mismo cristal, y pues era nuevo, todas las veves que lo probe era el mismo, no creo que de fabrica me lo hayan vendido mal, justo ese, verda? aunque talvez, tratare de comprar otro cristal y probare y les comentare, pero no creo hacerlo hoy, porque es fin de año, asi que sera despuecillo.

gracias, feliz fin de año!
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: vszener en 31 de Diciembre de 2006, 11:47:19
Puede ser que el cristal esté malo, o que en el grabador, esté configurado los 4MHz y por eso no te funciona.


Suerte!!! ;)
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 31 de Diciembre de 2006, 12:58:44
comprare un cristal al año, jejeje ademas que mi casa queda lejisimos de la tienda electronica, y hare la prueba con otro cristal y les comentare, pero mientras... como esta eso de en el grabador? en el winpic?, pues ahi me fije y esta en HS, o a que te refieres? y si talvez fuera algo de eso pues no lo creo ya que una vez programado, pruebo con el de 20MHz y nada, le cambio por el de 4 (en el mismo pic ya grabado con 20) y nada, asi que creo que se puede descartar ello, verdad?
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: vszener en 31 de Diciembre de 2006, 13:19:59
Exactamente, me referia a que en tú grabador, la opción de fuses, el oscilador no fuese la indicada, pero si es la correcta, el problema debe venir del cristal en sí.

PD: También puedes probar el cristal de 20MHz en otro pic que lo soporte que tengas por ahí.



Suerte!!! ;)
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 31 de Diciembre de 2006, 13:57:57
cuando un codigo medianamente complejo (como manejo de lcd) no anda hay que volver al led blinker para descartar que sea hardware.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: electronando en 05 de Enero de 2007, 23:18:08
bueno si puedo ayudar en algo , soy mas asiduo a lo de pic basic y me paso algo parecido con el cristal de 20 con el pic 16f877a i/p al comienzo configure xtal 20 todo bien grabado con hs etc etc , pero seguia el problema pense q era el pic basic asi q hice el mismo programa en el proton , lo mismo , cual fue el problema :en basic hay rutinas q generan por ejemplo retardos ejemplo pause 1(1mseg) supuse q estos retardos de alto nivel pudieran ser la causa fue una corazonada y realize los retardos con hardware usando el tmr0 y se soluciono el problema y otra forma fue usando retardos en asm , y funciono de maravillas con este cristal, lo sacudia tocaba cables en el proto y chevere seguia funcionando bien , asi q prueben en caso tengan una sentencia de alto nivel en c , solucionarla incrustando rutinas de asembler o usando el tmr0 o sentencias q usen hardware ,espero les sirva , si desean pueden verificar puse un ejemplo de programa en la parte de pic basic (sub foro ) se llama cuidado con cristal de 20mhz, dense un paseo por alli y de paso me pueden hacer consultas  :-/
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: flacoclau en 06 de Enero de 2007, 03:34:14
Como dice electronando puede ser que los tiempos de manejo del display estén programados
para utilizarse con un reloj de 4MHz en tu programa y que al correrlo con uno de 20MHz el display no te responda.
El tiempo de escritura de los displays alfanuméricos es de aproximadamente 1microsegundo, lo que es igual a un ciclo de instrucción del micro a 4Mhz, osea solo lo escribís y listo, pero si trabajas a 20MHz tenés que ponerle un retardo de 5 ciclos de instrucción para que llegues al uS, probá de ponerle unas 4 intrucciones NOP en el envío de datos al display para darle tiempo a que te los tome.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 06 de Enero de 2007, 21:50:07
umm serai bueno probar, pero como le introduzco a mi programa un retardo en asm?? hago una funcion:

void delay()
{
delay_ms(500);
}

y la invoco cada vez qeu lo necesite en mi programa principal:

void main()
{
...
delay();
...
}

como introduzco el codigo en ensamblador?? me ayudan??
ahh creo que no fui muy especifico, disculpen; uso displays de LEDs (de siete segmentos); no creo que sean necesarios los lretardos que menciona flacoclau, verda?

weno gracias, adios!
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: flacoclau en 07 de Enero de 2007, 11:36:37
ahhhh listooo  :D y no te va a hacer falta el retardo, bueno suerte!!
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 07 de Enero de 2007, 21:49:51
pues no me ha funcionado, ya me volvi a fijar los fuses en el soft de programacion (el winpic800) y pues se me paso, jeje, y estaba en XT aunqeu en el programa del ccs le puse HS, bueno lo cmabie y nada, ademas he cambiado los delays de ccs por mis propias rutinas calculadas con el programa PDEL:

void delay_250u()
{
#asm
DEMORA  movlw     .249      ; 1 set numero de repeticion
        movwf     PDel0     ; 1 |
PLoop0  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 ciclo delay
        decfsz    PDel0, 1  ; 1 + (1) es el tiempo 0  ?
        goto      PLoop0    ; 2 no, loop
        return              ; 2+2 Fin.
#endasm
}

void delay_20m()
{
#asm
        movlw  .110      ; 1 set numero de repeticion  (B)
        movwf     PDel1     ; 1 |
PLoop1  movlw     .181      ; 1 set numero de repeticion  (A)
        movwf     PDel2     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 ciclo delay
        decfsz    PDel2 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel1,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2  goto PDelL3         ; 2 ciclos delay
PDelL3  clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.
#endasm
}

tampoco ha funcionado, que hago? tengo la maldicion de los 20 MHz, porque tb os cuento que he probado un programa para el 18f4550 que estaba diseñado para HS, y los fuses en el soft de programacion (tb winpic) iban bien, y pues como me lo esperaba tampoco funciono, pues nose que hago mal ya he seguido sus instrucciones como me lo dicen, que pasa?

gracias adios.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: vszener en 13 de Enero de 2007, 08:08:59
¿Has probado ya con otro cristal de 20MHz?


Suerte!!! ;)
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 13 de Enero de 2007, 23:45:12
si he probadoc con otro cristal, disculpas por no haberlo dico me he comprado otro, no creo que un segunto cristal este mal, ademas he comprado tb otro de 4 mhz y funciona bien, no creo que los dos de 20 hayan estado dañados, uno talvez si pero dos, no creo; como se puede probarlo mejor, como se arruinan? pues ya creo que me dejare los cristales de 4 mhz namas, y botare pa la basura todos los HS, por cierto tbprobe con 10 mkz y 12 mhz y nada, a partir de hs se friega y no me funciona, alguna sugerencia? esta algo mal el ccs?? o debo hacer algo extra???

gracias, adios
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 14 de Enero de 2007, 18:52:12
insisto que deberias de probar hacer parpadear un led para descartar cualquier otro problema
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: tithanae en 15 de Enero de 2007, 22:13:41
como dice psykhon si comenzas con algo sencillo como esto lo unico que hace es que lo que entra por el RB4 sale por RB5 no utiliza retardos ni nada es el mas elemental que puede hacer; aveses utilizo algo como esto para saber si mi hard esta bien
Código: [Seleccionar]
#include <16F877A.h>
#device adc=8

#FUSES WDT                      //Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)
#FUSES PUT                      //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=20000000)



#BIT  RB4     = 0x06.4
#BIT  TRIS_RB4= 0X86.4
#BIT  RB5     = 0x06.5
#BIT  TRIS_RB5= 0X86.5
void main()
{

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

   // LO QUE ENTRA POR RB4 SALE POR RB5
   TRIS_RB4=1;
   TRIS_RB5=0;
   RB5=RB4;
}
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 16 de Enero de 2007, 16:58:09
weno, lo probare asi sin retardos y os comentare, muchas gracias.

Pero no entiendo porqeu no funcionan los retardo, creo que es lo mas importante y siempre se usa, en un simple parpadeo se usan retrados a cada momento, es la base, y pues si tengo que limitarme a no usar retardos me tendre que quedar toda la vida con 4 MHz, porque supongo que el compilador no me da 20MHz, o porque no he configurado bien algo, hice los fuses y el clock, hay algo mas que hacer, para qeu funcionen 20 MHz? o talvez el grabador? uso un JDM con winpic.

disculpas si he hablado tonterias, esque nunca he visto un circuito a 20 MHz. gracias
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 17 de Enero de 2007, 16:41:28
si ahces parpadear un led podes exper¡mentar con los retardos hasta hartarte
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 17 de Enero de 2007, 18:48:38
pero no entiendo la finalidad de hacer un parpadeo, si ya en mi programa hecho hago bastantes de ellos, muchos retardos que no funcionan, y nose si funcionaria el del retardo solamente, pues no creo, ya que si en un circuito que se usan varios retardos no funcionan, en uno de parpadfeo si funcionara, talvez si, pero eso no hara que mi circuito con muchos retardas, el del display de numeros aleatorios funcione correctamente, o si??
si he dicho tonteria disculpen ustedes, muchas gracias, pero si, te hare caso y armare el circuito de parpadeo, gracias, adios.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 17 de Enero de 2007, 19:36:51
la idea es que con los mas sencillo posible puedas dedicarte a buscar el problema
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 17 de Enero de 2007, 23:06:51
holas saludos, algo raro pasa, aca le dejo el codigo que escribi en el pic:

#include<16F648A.h>
#FUSES HS,NOWDT,PUT,NOPROTECT,BROWNOUT,MCLR,NOLVP,NOCPD
#use delay(clock=20000000)
void main()
{
   set_tris_b(0xef);
   output_b(0);
   while(1)
   {
      output_toggle(PIN_B3);
      delay_ms(1000);
   }
}

y pues como me lo esperaba no ha funcionado, le puse el cristal y ha dado un parpadeo muy muy rapido, mucho menos de un segundo, talvez unnos dos o tres parpadeos por segundo, y tb algo muy extraño, tocaba el cristal de 20 y recien daba, lo soltaba y se apagaba completamente el led en RB3, pues no entiendo, y le cambie el cristal por 4 mhz, y daba igual de rapido y aca no hacia falta tocar el cristal, pues ustedes me diran, ya hice el famoso parpadeo y fue como me lo esperaba; qeu me sugieren?
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: tithanae en 18 de Enero de 2007, 18:18:30

Si dices que tocas el cristal y quiere funcionar te cuento que me paso algo parecido a mi con un cristal pero era manejando un RTC y no funcionaba hasta le puse un frecuencimetro para ver si el cristal estaba andando a la frecuencia que tenia que trabajar y cuando colocaba el frecuencimetro para medir recien funcionaba lo quitaba y se fregaba asi que pense que era algo con la conexion del proto no se tal ves estaba sucio o no apretaba lo suficiente no eran tan viejos pero si un poco enpolvados, cambie el circuito en una PBC que crees funciono al toke asi que te puede estar pasando lo mismo que te parece si cambias de proto o pasas el circuito a una placa y si te funciona me dejas el PIC a 15 dolares.

PD: se me fue el dedo hace rato y publique dos letras sera que lo borran los moderadores
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 19 de Enero de 2007, 13:24:56
fijate que a veces por mas que establezcas los fuses algunos programas de grabacion no lo toman en cuenta y hay que configurar todo manualmente, por otro lado tambien tuve problemas raros con protoboards sucias
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 19 de Enero de 2007, 18:19:39
umm, pues ta raro, weno lo que paso fue que dio mal cuando toque el cristal, porque debio parpadear una vez por segundo y parpadeo como 5 veces jaajaj, osea mal, y le cambie por un cristal de 4 y dio sin tocarlo, pero dio asi de mal tb, jaja 5 veces por segundo mas o menos, y pues nose, algo mal en el codigo hice?? o en el programador, use el winpic y em fije los fuses e iban muy bien, y pues ya nose que hacer, pero seguire sus consejos y lo armare en otro proto, pues os comentare, muchas gracias. adios.



pd: tithanae, disculpa pero no vi el post ayer desde las 4 mas o menos tenia dos examens hoy, y estudie, pues disculpa ya se lo di a la persona que me dijiste, estabas de acuerdo, sera para otra, ok??
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 19 de Enero de 2007, 20:17:23
por las dudas, probaste con otro pic?
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 20 de Enero de 2007, 17:09:03
haber haber, he probado con el 16f84a con el 16f648a con el 16f877a y con el 18f4550, ninguno me ha funcionado con 20 MHz, ah y todos con 4 funcionan una belleza, gracias, chao, ahora intentare con el 16f88 con el dimmer controlado por mando de nocturno, pues os comento, adios.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 20 de Enero de 2007, 21:10:11
de esta pagina
http://www.voti.nl/blink/index_1.html (http://www.voti.nl/blink/index_1.html)
podes bajarte codigo para hacer parpadear un led, la idea es que esta precompilado y yo mismolo probe en varios pics. Te aconsejaria que lo grabes con otro programa como el ic-prog para descartar al maximo cualquier falla.
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 22 de Enero de 2007, 23:54:30
saludos, muchas gracias por toda la ayuda que me han dado, ya hasta tema candente se puso, jeje, disculpas, y van a decir que soy un tonto, y hasta talvez quieran echarme del foro, jeje, disculpen, es que no me he fijado el pequeño grafico de la hoja de datos que dejo adjunto, para frecuencias mas altas se exige mas en niveles de tensión, debe ser mas proximo a 5 voltios para frecuencias elevadas, y como es el caso de que el pic que use es la maxima frecuencia (20 MHz) pues, mucho mas proximo a 5 voltios debe ser el VDD; y ahi estaba mi error, le colocaba directo con un adaptador y este no llegaba ni a 4.5 voltios, que para 4 MHz da bien, tons con un regulador le di los 5 exactos y que creen, vi mi primer ciruito a 20 MHz, jaja, y me gusto ver el cristal grandotre de 20 MHz, y el led parpadeando.

pues espero que a alguien le sirva es hilo para no cometer el mismo error, y pues creo que debo escribir en el hilo de castigos: "Debo leer las hojas de datos con mas cuidado" unas 100 veces, jajaja

ustedes disculparan, weno, creo que asunto cerrado; gracias por los emnsajes, adios!!
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: psykhon en 23 de Enero de 2007, 00:17:15
jua jua jua, que buen dato para tener en cuenta nos diste. me alegro. saludos
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: MGLSOFT en 23 de Enero de 2007, 08:43:02
La verdad es que es muy bueno el dato!! :mrgreen: :mrgreen:

A mi me ha tocado que no anduviera un micro con el cristal cambiado a 20 Mhz y lo que menos hubiera buscado es esto!!! :lol: :lol: :lol:

En vez de expulsarte creo que hay que prestarte mas atencion, je..je.. :P :P
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: Cryn en 23 de Enero de 2007, 14:45:34
 :) gracias, :oops: pues debemos hacer caso los consejos de los maestros de la pagina que siempre recomiendan leer la hoja de datos, de verda que ahi esta todo, solo a tener un buen traductor, y mucha paciencia, o sabre ingles, jajaja, yo d elos dos no tengo asi que debo hacer muhco esfuerzo para entender un poco, pues gracias por las palabras me haceis sonrojar  :oops:

adios!
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: MGLSOFT en 23 de Enero de 2007, 15:40:58
Hay que aplicar la norma inglesa RTFM... :D :D :D :D :D


Read The Fucking Manual  !! :mrgreen: :mrgreen: :mrgreen:
Título: Re: Cristal 20 MHz para 16f84a y 16f877a
Publicado por: tithanae en 23 de Enero de 2007, 18:36:33
Sip tenia que ser algo asi porque no tiene mucho misterio trabajar con los 20 MHZ son pocos y vos te topaste creo que con el unico y de verdad si te paso a vos ten por seguro que gracias a ti muchos evitaremos semanas de pensar por que no da un circuito nuestro.

un amigo de otro foro dice algo parecido a lo de MGLSOFT

Cuando Todo Lo Demas Falla Lee El Manual  !!!!