TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: antrax en 18 de Agosto de 2007, 16:42:26

Título: problema con pin 3 del micro 12f629
Publicado por: antrax en 18 de Agosto de 2007, 16:42:26
no me prende uno led en proteus usando el micro 12f629 especificamente el que esta conectado a pin 3 del micro
este es mi codigo

Código: [Seleccionar]
#include <12F629.h>

#fuses NOWDT,NOPROTECT,NOCPD,NOMCLR,NOPUT,INTRC_IO,NOBROWNOUT
#use delay(clock=4000000)

void main() {

  int contador;

  set_tris_a(0);           //// declaramos el puerto como salidas
  OUTPUT_A(0x00);

  while (true) {           //// bucle infinito
  //OUTPUT_A(0x00);
  OUTPUT_HIGH(PIN_A3);
  delay_ms(100);
  //OUTPUT_A(0xFF);
  OUTPUT_LOW(PIN_A3);
  delay_ms(100);

     };        //// apaga todos los pins del puerto

}

no le veo nada extraño al codigo esta configurado con oscilador interno 
de verdad no se donde meti la pata si alguien me puede ayudar me seria de mucha utilidad

los pines estan conectado a un led en serie con una  resistencua y esa resistencia a tierra.... algo tonto pero asi se empiesa
Título: Re: problema con pin 3 del micro 12f629
Publicado por: navaismo en 18 de Agosto de 2007, 16:43:34
Uno de sus pines de este micro es solo entrada fijate que no sea ese. en su Datasheet
Título: Re: problema con pin 3 del micro 12f629
Publicado por: antrax en 18 de Agosto de 2007, 17:53:59
pues no el Datasheet dice que tiene 6 pines de entrada salida es decir que sus 6 pines son bidirecuinales

gracias por la respuesta navaismo
Título: Re: problema con pin 3 del micro 12f629
Publicado por: Rulo en 18 de Agosto de 2007, 18:18:37
  Fijate bien en      TABLE 1-1: PIC12F629/675 PINOUT DESCRIPTION  pagina 6

            donde describen al pin GP3     TTL               Input port w/ interrupt-on-change
     y los demas  Bi-directional I/O w/ programmable pull-up and interrupt-on-change


  el pin es solo de entrada.

        Saludos :-/
Título: Re: problema con pin 3 del micro 12f629
Publicado por: antrax en 18 de Agosto de 2007, 18:43:31
gracias de verdad disculpas interprete mal el Datasheet

pido disculapa a navaismo por poner en duda tu palabra

bueno ya que tengo todo esta a jugar con ese perolito
Título: Re: problema con pin 3 del micro 12f629
Publicado por: antrax en 18 de Agosto de 2007, 21:21:36
para no crear otor tema

porque no puedo hacer una interupcion por el pin GP3

aqui tengo el codigo que estoy implementando

Código: [Seleccionar]
#include <12F629.h>
//////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,CPD,NOCPD,PROTECT,NOPROTECT,NOMCLR
//////// Fuses: MCLR,PUT,NOPUT,INTRC_IO,INTRC,RC_IO,RC,BROWNOUT,NOBROWNOUT

#fuses INTRC_IO,NOWDT,NOPROTECT,PUT,MCLR,BROWNOUT
#use delay(clock=4000000)

int contador;
#INT_RA
void INTRA3()
{
contador ++;
IF(contador > 7) contador = 0;
}


void main() {

  //int contador;
  enable_interrupts(INT_RA3);
  enable_interrupts(GLOBAL);
  set_tris_a(0x00);
  //set_tris_a(0);
  OUTPUT_A(0x00);


switch  (contador){
  CASE 1:  while (true) {
           OUTPUT_A(0x00);
           delay_ms(100);
           OUTPUT_A(0xFF);
           delay_ms(100);
  };
  CASE 2:  while (true) {
           OUTPUT_A(0x00);
           delay_ms(10);
           OUTPUT_A(0xFF);
           delay_ms(100);
  };
  CASE 3:  while (true) {
           OUTPUT_A(0x00);
           delay_ms(100);
           OUTPUT_A(0xFF);
           delay_ms(10);
    };
  CASE 4:  while (true) {
           OUTPUT_A(0x05);
           delay_ms(100);
           OUTPUT_A(0xF0);
           delay_ms(100);
             };
  CASE 5:  while (true) {
           OUTPUT_A(0x66);
           delay_ms(100);
           OUTPUT_A(0x37);
           delay_ms(100);
             };
  CASE 6:  while (true) {
           OUTPUT_A(0x02);
           delay_ms(10);
           OUTPUT_A(0b1010101);
           delay_ms(10);
  };
  default: while (true) {
           OUTPUT_A(0x00);
  };

}
}
Título: Re: problema con pin 3 del micro 12f629
Publicado por: Rulo en 18 de Agosto de 2007, 22:49:37
  Todos tus casos los tienes en un bucle infinito, tal vez por eso no notas la interrupcion

             prueba poniendo algo como while(contador==X)


        y esto

               
Código: [Seleccionar]
default: while (true) {
           OUTPUT_A(0x00);
  };
  no se para que lo pones?'''

 Suerte .