TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: mamsat en 21 de Octubre de 2010, 20:48:17
-
Buenas, a ver si alguien me echa una mano, estoy tratando de hacer un disparador para un cd, lo qeu trato de hacer es qeu si se va la corriente cuando vuelva se inicie solo el play, y he conseguido hacerlo pero cuando se aplica 1 en una entrada.
Habia pensado en puentear el vcc con una resistencia de 330ohm con la entrada GP2 para qeu de automaticamente la señal de iniciar ¿es la forma de hacerlo? o hay alguna instruccion mas sencilla para qeu empiece a funcionar al llegarle la corriente?
Gracias.
-
No entiendo bien la pregunta, ¿qué es la entrada GP2?
-
No entiendo bien la pregunta, ¿qué es la entrada GP2?
Esque aun estoy muy verde en esto de los pic...
Me refiero a la patilla llamada asi en el datasheet.
http://t2.gstatic.com/images?q=tbn:vuNeGz5ZRlaZ9M:http://www.futurlec.com/Pictures/PIC12F629.gif&t=1
Lo qeu me gustaria saber es si hay algun modo de qeu nada mas recibir alimentacion el pic empiece a funcionar sin necesidad de darle ninguna orden.
Supongo qeu esto sera sencillo pero no tengo ni idea de como hacerlo, lo qeu yo tengo hecho una vez le llega la corriente necesito darle una pulsacion para qeu empiece a funcionar, y me gustaria qeu eso fuese automatico tras volver la alimentacion.
-
Ah, ahora lo entiendo. Es que creí que te referías a la patilla GP2 del CD.
Conseguir eso es muy sencillo. ¿En qué lenguaje lo vas a programar?
Si usas CCS es tan fácil como output_high(PIN_A2);
-
Pues nocturno creo que es assembler, te posteo el codigo en realidad he partido de un diseño de diselc.es, qeu me parecio sencillo para empezar, por tanto no era asi en un principio, lo qeu he hecho es hacerme un plaquita con unos led y estoy variando parametros y provando distintas cosillas, vamos... ir aprendiendo a base te toquetear:
;******************************************************************************
;********************************** INICIO **********************************
;******************************************************************************
reset org 0x00 ;El programa comienza en la dirección 0.
goto inicio ;pasa a la posicion de inicio para evitar la int.
org 0x04 ;aqui se atienden las interupciones
DT " INICIADOR DE CD ver.01 ACTIVA CUANDO HAY CORRIENTE "
DT "tecla RANDOM 500ms tecla PLAY 500ms repeticion 5 min "
inicio bsf STATUS,5 ;Banco 1.
call 0x3ff ; CALIBRACION DEL
movwf OSCCAL ; OSCILADOR INTERNO
;movlw b'111110' ;0=salida, 1=entrada
;movwf TRISIO ;lo tranfiere al puerto
bcf RANDOM ; configuro el pin como salida
bcf PLAY ; configuro el pin como salida
bsf puerta ; configuro el pin como entrada
;habilitar resistencias internas
movlw b'00001111'
movwf OPTION_REG
movlw b'00111111' ;selecciono los pines donde quiero las resistencias
movwf WPU
bcf STATUS,5 ;Banco 0.
;instrucciones para poder utilizar GP0 y GP1 como entradas
movlw b'00000111' ; desactiva el comparador
movwf CMCON ; selecciona GPIO en vez de comparador
clrf GPIO ;todas las salidas puestas a 0
;******************************************************************************
;******************************* PRINCIPAL ***********************************
;******************************************************************************
principal clrwdt
sigue call RANDOM
call Retardo_500ms ;tiempo entre RANDON Y PLAY
call PLAY
call Retardo_5m ;tiempo que tarda en volver a iniciar
goto principal
;******************************************************************************
;******************************* RANDON ***********************************
;******************************************************************************
RANDOM clrwdt
bsf llamar ;actuo sobre el pulsador de RANDON
call demora_500ms
bcf llamar ;suelto el pulsador de RANDON
call demora_500ms
return
;******************************************************************************
;******************************* PLAY ***********************************
;******************************************************************************
PLAY clrwdt
bsf colgar ;actuo sobre el pulsador de PLAY
call demora_250ms
bcf colgar ;suelto el pulsador de PLAY
call demora_250ms
return
;******************************************************************************
;**** RETARDOS hasta 24 Horas - cuidado no sobrepasar la PILA *******
;******************************************************************************
Retardo_24h call Retardo_1h
Retardo_23h call Retardo_1h
Retardo_22h call Retardo_1h
Retardo_21h call Retardo_1h
Retardo_20h call Retardo_1h
Retardo_19h call Retardo_1h
Retardo_18h call Retardo_1h
Retardo_17h call Retardo_1h
Retardo_16h call Retardo_1h
Retardo_15h call Retardo_1h
Retardo_14h call Retardo_1h
Retardo_13h call Retardo_1h
Retardo_12h call Retardo_1h
Retardo_11h call Retardo_1h
Retardo_10h call Retardo_1h
Retardo_9h call Retardo_1h
Retardo_8h call Retardo_1h
Retardo_7h call Retardo_1h
Retardo_6h call Retardo_1h
Retardo_5h call Retardo_1h
Retardo_4h call Retardo_1h
Retardo_3h call Retardo_1h
Retardo_2h call Retardo_1h
;******************************************************************************
;**** RETARDOS hasta 1 Hora - cuidado no sobrepasar la PILA *******
;******************************************************************************
Retardo_1h call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_55m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_50m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_45m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_40m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_35m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_30m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_25m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_20m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_15m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_10m call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_5m call Retardo_1m
call Retardo_1m
call Retardo_1m
Retardo_2m call Retardo_1m
;******************************************************************************
;*************************** RETARDO hasta 10seg *******************
;******************************************************************************
Retardo_1m call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_55s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_50s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_45s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_40s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_35s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_30s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_25s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_20s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_15s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_10s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
Retardo_5s call Retardo_1s
call Retardo_1s
call Retardo_1s
call Retardo_1s
;******************************************************************************
;*************************** RETARDO 1seg ***************************
;******************************************************************************
Retardo_1s call demora_250ms
call demora_250ms
call demora_250ms
;******************************************************************************
;***************** demora 250ms ********************
;******************************************************************************
demora_250ms
DEMORA movlw .195 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .213 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;----------------------------------------------------------------------------
org 0x3FF ; OSSCAL --------------------
retlw 0x20 ; VALOR DE CALIBRACION --------------------
;----------------------------------------------------------------------------
END
-
Pues a ver si alguien que sepa ASM te echa una mano, yo no tengo ni pajolera idea.
-
Tu programa se encuentra siempre en este bucle ("PRINCIPAL"), la linea btfss puerta es el que siempre queda
esperando por el pulso en GPIO2 para empezar, pienso que puedes dejar comentadas esas tres lineas de codigo y deberia funcionar, si efectivamente funciona puede eliminar la rutina "RETARDO comprobando la puerta " ya que no es necesaria
;******************************* PRINCIPAL ***********************************
;******************************************************************************
principal clrwdt
btfss puerta ;si es 1 se salta la instruccion, SEÑAL DE ENTRADA
goto principal
goto retardo_puerta ;verifica si es una interferencia
sigue call LLAMAR
call Retardo_500ms ;tiempo entre RANDON Y PLAY
call COLGAR
call Retardo_5m ;tiempo que tarda en volver a iniciar
goto principal
-
ok, gracias a los dos, ya lo he modificado en el post de arriba, voy a provarlo y os comento a ver qeu pasa, un saludo.
-
que es un disparador para CD ? :shock:
-
que es un disparador para CD ? :shock:
Mi padre.. siempre usa CDs viejos para hacer tiro al blanco jajaja :D
Lo que quiere hacer mamsat, es un dispositivo que ponga en play su reproductor de CDs cuando lo enchufas.
saludos!!
-
Efectivamente, es para cuando se vaya la luz no tener qeu volver a darla al play...
Por cierto alguien me podria decir por qeu no puedo compilarlo ¿?
Puede ser qeu yo sea un patan, pero por mas que leo tutoriales, no soy capaz de usar el mplab, la mayoria de los manuales y tutoriales son de versiones anteriores y no me sale bien, no se si es el codigo o qeu soy un patan.
-
.