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

Temas similares

19/07/2011 #1

Avatar de johncaro12

Salidas del PIC 12f675
Saludos, tengo un problema no se si es con el mikro c o con el proteus,
Lo que pasa es que nunca me enciende ni la salida GP5 ni la GP4...
Intente probando con este programa y nada:

Código:
void main() {
ANSEL = 0; // Configure AN pins as digital
CMCON = 7; // Turn off the comparators
TRISIO = 0; // designate GPIO as output
GPIO = 0x00; // initialize GPIO

do {
GP5_bit = 1; // *********************
delay_ms(100); // *********************
GP5_bit = 0; // si le cambio por GP0_bit, GP1_bit o GP2_bit si funciona!
delay_ms(100); // *********************
} while(1);
}
Me podrian ayudar a ver que es lo que esta mal o que es lo que le falta?

Les agradezco de antemano!
19/07/2011 #2

Avatar de electroconico

Revisa el tipo de oscilador.

Para usar esos pines como Entrada/Salida general debes usar oscilador interno.Definelo en tu programa.

Saludos!
19/07/2011 #3

Avatar de johncaro12

Segun yo, vienen predefinidos de fabrica, y tengo entendido que para usar otro oscilador eso si hay que definir...
Ademas que tiene que ver el oscilador interno con el uso de las I/O GP4 o GP5????
y por que si funciona con las demas Gp0 GP1 y GP2?

Saludos..
Gracias
19/07/2011 #4

Avatar de electroconico

Primero.

deberias especificar antes si las pruebas eran en fisico o en simulador.

----------------

Ahora que dices que con proteus funcionan los pines ,excepto gp4 y gp5.

GP4 y GP5 estan multiplexadas con el oscilador.
En la hoja de especificaciones del pic , viene toda esta info que te digo.

Si en tu programa no defines que vas a utilizar el oscilador interno esos pines no tendran otra funcion más que Osc_In y Osc_Out.
19/07/2011 #5

Avatar de luis dominguez

mejor utiliza el micro code estudio que es mas facil de programar

Ejm. este es el programita para subir y bajar el seguro de un automovil,(micro code estudio)estos pic no nesesita tienen ya osilador interno


;Práctica con el PIC12F629 0 12F675
CMCON=%111 ;apaga comparadores de voltaje
ANSEL=%0000 ;apaga C.A/D todos los pines del GPIO digitales
sube var byte
baja var byte

encen:
if gpio.0 =0 then subuseguros
GOSUB encen
subuseguros:

for sube =1 TO 1
high gpio.4: pause 200
low gpio.4 : pause 200
next
encen1:
if gpio.1 =0 then bajaseguros
goto encen1

bajaseguros:
for baja =1 TO 2
high gpio.5: pause 200
low gpio.5 : pause 200
next
goto encen
end
Imágenes Adjuntas
Tipo de Archivo: jpg subir seguros.JPG (54,5 KB (Kilobytes), 45 visitas)
05/08/2011 #6

Avatar de johncaro12

electroconico dijo: Ver Mensaje
Primero.
GP4 y GP5 estan multiplexadas con el oscilador.
En la hoja de especificaciones del pic , viene toda esta info que te digo.

Si en tu programa no defines que vas a utilizar el oscilador interno esos pines no tendran otra funcion más que Osc_In y Osc_Out.
Creo que por default se asigna el oscilador interno,
es mas, creo que ya lo estoy usando porque ya lo he probado en el protoboard, un programa que hice, uso casi todos los pines:
TRISIO = 0b011010;
ANSEL = 0b001010;

GP1 y GP4 como entradas analogicas.
GP0 y GP2 como salidas digitales.
GP3 lo uso como MCLR

hasta ahi me funciono bien!... lo probe y todo, GP4 funciona como entrada analogica muy bien, en proteus y en proto...
Ahora necesito usar GP5 para generar una onda cuadrada
segun yo GP5 con esas configuraciones esta como salida digital,
intento prender y nada... en proteus me sale el puntito gris

Alguna sugerencia?
08/08/2011 #7


Ver si ayuda:



Código:
void main() {
  CMCON  = 7;    // Comparador OFF.
  ANSEL  = 0;    // Convertidor A/D OFF. Ahora tenemos operaciones en el IO digital.
  TRISIO = 0x08; // Todos los pines son las salidas, excepto GP3.
  GPIO  = 0x00; // Todos los pines se apagan inicialmente.

   while (1) {
    
        GPIO = 55;
         delay_ms(2000);
        
        GPIO = 0;
         delay_ms(2000);
        
        GPIO = 1;
         delay_ms(2000);
        
        GPIO = 2;
         delay_ms(2000);
        
        GPIO = 4;
         delay_ms(2000);
        
        GPIO = 16;
         delay_ms(2000);
        
        GPIO = 32;
         delay_ms(2000);
         
         GPIO = 33;
         delay_ms(2000);
         
         GPIO = 20;
         delay_ms(2000);
        
        GPIO = 0;
         delay_ms(2000);
   }
}
Proyecto

Otro código para el mismo proyecto:

Código:
void main() {
  CMCON  = 7;  
  ANSEL  = 0;   
  TRISIO = 0x08; 
  GPIO    = 0x00; 

   while (1) {
   
       GPIO.F0 = 1;        //Liga GP0.
        Delay_ms(200);     //Aguarda 200ms.
         GPIO.F0 = 0;      //Desliga GP0.
          Delay_ms(200);   //Aguarda 200ms.

       GPIO.F1 = 1;        // lo mismo con GP1.
        Delay_ms(200);
         GPIO.F1 = 0;
          Delay_ms(200);

       GPIO.F2 = 1;        // lo mismo con GP2.
        Delay_ms(200);
         GPIO.F2 = 0;
          Delay_ms(200);

       GPIO.F4 = 1;       // lo mismo con GP4.
        Delay_ms(200);
         GPIO.F4 = 0;
          Delay_ms(200);

       GPIO.F5 = 1;       // lo mismo con GP5.
        Delay_ms(200);
         GPIO.F5 = 0;
          Delay_ms(200);

   } 
}
Enlace del proyecto:
http://picforum.forumeiros.com/t194-...dicas-valiosas

Algunas aclaraciones sobre el oscilador interno del modelo de microcontrolador:
http://picprojects.org.uk/projects/piccal.htm

Saludos.
09/08/2011 #8

Avatar de johncaro12

Shunt dijo: Ver Mensaje
Ver si ayuda:




http://picforum.forumeiros.com/t194-...dicas-valiosas

Algunas aclaraciones sobre el oscilador interno del modelo de microcontrolador:
http://picprojects.org.uk/projects/piccal.htm

Saludos.
Gracias... muchas gracias... y aunque copie literalmente el codigo y genere el archivo hex, no me salia, me salia unos puntitos grises, en donde deberia haber puntitos rojos o azules (proteus)...

En cambio con tu .hex funciona perfectamente!!!!

La verdad es que no se porque sucede esto...

Llegue al punto de revisar detalladamente cada uno de los archivos .hex letra por letra... y los dos eran igualitos, excepto por dos digitos:
en el tuyo estaba:
:02400E00F4318B (en la penultima linea)

en el mio habia:
:02400E00F2318D (en la penultima linea)

cambie estos dos digitos en mi .hex y ahi si funciono!

Que raro... sera por la forma en que creamos los proyectos?
como tu creas los proyectos en mikro C?

Una vez mas, gracias por la ayuda!
09/08/2011 #9


johncaro12 dijo: Ver Mensaje
como tu creas los proyectos en mikro C?
Espero que esto ayude (En portugués de Brasil).
https://rapidshare.com/files/4039024080/Programação_de_PIC.doc
Saludos.
09/08/2011 #10

Avatar de johncaro12

muchas gracias... aunque estaba en portugues lo entendi por las imagenes...

Al parecer eran los bits de configuracion... Gracias!
05/11/2013 #11


Shunt dijo: Ver Mensaje
Ver si ayuda:

http://www.turbohide.com/browse.php?...pwZw%3D%3D&b=5

Proyecto

Enlace del proyecto:
http://picforum.forumeiros.com/t194-...dicas-valiosas

Algunas aclaraciones sobre el oscilador interno del modelo de microcontrolador:
http://picprojects.org.uk/projects/piccal.htm

Saludos.
Buen día hermano. Mire estoy empezando en el mundo de los microcontroladores y quisiera hacer un tacómetro digital + shif light con leds y quisiera que me oriente algo.
Respuesta
¿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.