Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

30/07/2009 #1

Avatar de Rijiru

Microcontrolador de 8 pines
gente, pss... soy nuevo con esta onda de la programacin con PIC's, hace poco, cargue unos programas de prueba en unos PIC12F509, deshabilitando el MCLR, y activando el reloj interno. Pero al momento de mandar GP3 a voltaje(es el PIN MCLR) habia cambios en el PIC, pero no los deseados.
30/07/2009 #2

Avatar de alexus

que cambios?
05/08/2009 #3

Avatar de Rijiru

No hace lo que le corresponde al programa, de ehcho ya logre deahabilitar el MCLR, ahora el problema es que el pin GP2 es quien condiciona que el PIC ejecute una accion si es "1" si es "0" otra, pero, este siempre se queda en tercer estado como que el PIC no detecta la entrada, lo programo como salida y tampoco funciona, cual podria ser el problema?
05/08/2009 #4

Avatar de alexus

podes subir el circuito?
05/08/2009 #5

Avatar de Rijiru

Aqui esta adjunto el circuito con el que hice una prueba

en esta seccion esta el programa hecho en CCS

Código:
#include <12F509.h>
#fuses INTRC, NOWDT, NOPROTECT, NOMCLR
#use delay(clock=4000000)

void main(void)
{
         do
         {
          SET_TRIS_B(0x0F);
          delay_ms(1000);
          output_low(PIN_B5);
          output_high(PIN_B0);
          delay_ms(1000);
          output_high(PIN_B1);
          output_low(PIN_B0);
          delay_ms(1000);
          output_high(PIN_B2);
          output_low(PIN_B1);
          delay_ms(1000);
          output_high(PIN_B4);
          output_low(PIN_B2);
          delay_ms(1000);
          output_high(PIN_B5);
          output_low(PIN_B4);
         }
         while(1);
}
En resumen lo que hace es un corrimiento cada segundo de LED's, pero GP2 nunca enciende, aun cuando hice una prueba para hacerlo entrada, era como si no existiera, ni como entrada ni salida.[/img][/code]
Imágenes Adjuntas
Tipo de Archivo: jpg prueba1_866.jpg (50,5 KB (Kilobytes), 46 visitas)
06/08/2009 #6

Avatar de alexus

carga el programa en otro pic, para descartar una averia del primero.
06/08/2009 #7

Avatar de Rijiru

De hecho postee esto, debido a que lo probe en tres de ellos, el pin GP2, siempre se queda en tercer estado, no se cual sea la causa. No se si usted ha trabajado con este PIC, seria de mucha ayuda sus experiencias con este dispositivo.

Saludos
06/08/2009 #8

Avatar de alexus

con ninguno. no se de pic.

el simulador no da ningun error?
06/08/2009 #9

Avatar de Rijiru

No, ninguno, es lo extraño en el compilador no marca ni siquiera warnings
06/08/2009 #10

Avatar de El_gocho

Salu2!

Generalmente cuando ocurre esto en los pic's (nivel lógico ni alto ni bajo) es porque el pin puede estar trabajando como analógico y no digital, pero ese no seria el caso, ya que este micro no tiene convertidor A/D. Lo que creo pudiera pasar es que el pin esté configurado para trabajar con una resistencia de pull-up aunque esto se hace para GP0,GP1,GP3 y GP4 al mismo tiempo, por lo que ninguna de estas salidas deberia colocarse en alto, de ser este el detalle. El registro donde configuras eso es en OPTION REGISTER.

Otra cosa, tu dices que GP2 controla que hace el programa, osea, es una entrada que dependiendo de su valor le indica al programa que hacer, verifica eso y que todos los pines sean salidas. Por último el puerto GP3 aun deshabilitado el MCLR solo puede funcionar como entrada.
06/08/2009 #11

Avatar de Rijiru

Exacto.... aun con la resistencia pull-up, se GP2 se queda en tercer estado
06/08/2009 #12

Avatar de El_gocho

Estoy confundido. GP2 es entrada o salida?

Yo te recomiendo que uses GP3 como entrada, ya que si no funciona como MCLR solo puede funcionar como entrada. Y el resto de los pines los uses como salidas para prender los led's.

Otra cosa,se me olvidó mencionarte la corriente que le estas sacando al micro. Verifica que la corriente total que pasa por los led's no sea superior a la que el micro puede entregar.
06/08/2009 #13

Avatar de Rijiru

En cualquier caso, no me funciona como ninguna, lo he probado con varios programas y se queda en tercer estado
06/08/2009 #14

Avatar de Ardogan

Me puse a mirar la hoja de datos del pic, fijate en la página 22 del pdf, dice

Código:
If the T0CS bit is set to ‘1’, it will override
the TRIS function on the T0CKI pin.
T0CS es un bit del registro option.
Está por default (después de un reset) con valor = 1. Con ese valor se selecciona GP2 como fuente de reloj del temporizador.
Y como dice la cita, si está a 1 se ignora lo que dice el TRIS.

Por lo tanto, en el programa deberías poner que ese bit T0CS esté con valor 0.
No uso CCS, pero me imagino que lo podrás hacer con un fuse, o directamente con una instrucción que escriba el registro option al inicio del programa.

Otra recomendación, metiste SET_TRIS_B(0x0F); dentro del bucle del programa.
Uno configura las patas al inicio, y después si no precisa cambiarlas ese registro siempre queda con el mismo valor.
Por lo tanto sería más correcto ponerlo antes del bucle do.

Comentanos si te funciona poniendo T0CS=0.

Saludos
07/08/2009 #15

Avatar de Rijiru

Como dijo el de Matrix: "Ya sé kung-fu", eso era, el comando SET_TRIS_B debe ir antes del bucle, muchas gracias por tu ayuda ardogan, en los que les pueda ayudar, ya saben.


saludos
07/08/2009 #16

Avatar de Ardogan

Ah mira vos, yo creí que el problema era el T0CS.
Puse lo del TRIS como un detalle y al final eso era el principal problema, jajaja.
Saludos
07/08/2009 #17

Avatar de Rijiru

Quiesiera saber que ondas con T0CKI, por que acabo de hacer una prueba para configurar GP2 como salida y no funciona. En el datasheet no me hace mucha referencia sobre ello, solo me dice que Puede funcionar como el pulsador de un contador interno o como entrada bidireccional.
07/08/2009 #18

Avatar de Ardogan

Bueno, lo mismo que te puse en el mensaje anterior (4 para arriba), si no lo entendiste decime que parte no esta clara y lo repasamos.
10/08/2009 #19

Avatar de Rijiru

Disculpa la tardanza, pero estuve haciendo pruebas y aun en PCW no encuentro como hacer que GP2 actue verdaderamente como salida, por que el compilador no me registra ningun error en los programas de prueba ni warnings, ademas en el archivo de cabecera del dispositivo nomas hace referencia de cuando activar el contador interno, es decir, para que T0CKI se habilite.
Muchas gracias por susu aportaciones.

saludos
12/08/2009 #20

Avatar de Ardogan

Esta bien que no registre errores ni warnings, despues de todo es una instrucción válida el hacer que el TMR0 trabaje con GP2.

No uso el CCS, me imagino que para el registro OPTION se usa #fuses pero desconozco como se especifica T0CS=0.

Vamos a ver si algun forista sabe como hacer eso. Por mi parte no puedo aportar más al respecto.

Saludos.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.