TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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
#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
-
Uno de sus pines de este micro es solo entrada fijate que no sea ese. en su Datasheet
-
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
-
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 :-/
-
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
-
para no crear otor tema
porque no puedo hacer una interupcion por el pin GP3
aqui tengo el codigo que estoy implementando
#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);
};
}
}
-
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
default: while (true) {
OUTPUT_A(0x00);
}; no se para que lo pones?'''
Suerte .