hOLA!!!!, de nuevo acá quiero mostrarles hasta donde estamos con esto.
Por ahí alguien puede ayudar, como explique arriba, el efecto es el siguiente, el circuito debe encender dos lamparas de 220 volt, de manera intermitente o sea primero una y luego la otra pero con el siguiente efecto, una de las dos se ira encendiendo primero de manera paulatina (como si se subiera la intensidad con un dimmer, alcanzar el máximo brillo mantenerse encendida 15 segundos a máximo brillo y comenzar a apagarse, mientras se va encendiendo la segunda, hasta su máximo brillo , mantenerse 15 segundos y repetir el efecto,
los 15 segundos son fijos pero el tiempo de la secuencia se debe poder regular con un pot o sea que desde cero luz a máximo brillo se regule de 5 seg a 1 min, por ejemplo.
AHORA quiero decir que he contado con la ayuda de un compañero del foro, MARTIN CNC, quien me ha dado una gran mano, con un empeño que me ha dejado sin palabras, como dije soy un total inexperto en pic, y quisiera compartir lo que hasta aquí tengo, la causa de este circuito es personal y no comercial , y funcionado estara a disposicion de todos .
agradecería toda ayuda posible pidiendo disculpas a todos ya que nunca he pedido que me resuelvan nada, pero aquí necesito de su ayuda ya que no tengo los conocimientos como para resolverlo , toda ayuda, sugerencia, links, paginas o lo que me puedan aportar se los voy a agradecer.
Este es el código que tengo, es una primera versión en donde con el pote debería ir seleccionando una u otra lampara y esta debería realizar el efecto, Hasta aquí no he conseguido nada ni que parpadee, este es
********************************************************************************************
; Generador de angulo de disparo de triacs con PIC12F675 - MARTINCNC
;********************************************************************************************
list p=12f675
#include "p12f675.inc"
radix hex
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
bandera equ 0x20 ;registro de interrupciones
contador equ 0x21 ;contador de interrupciones de TMR0
periodo equ 0x22 ;contador de interrupciones de TMR0
estado equ 0x23 ;registro division de periodo
posicion_1 equ 0x28 ;registro de posicion de salida 1
posicion_2 equ 0x29 ;registro de posicion de salida 2
adc_temp equ 0x2C ;registro de byte alto de adc
auxiliar_temp equ 0x2E ;registro de proposito general
w_temp equ 0x2F ;copia de respaldo de W
status_temp equ 0x30 ;copia de respaldo de STATUS
;********************************************************************************************
org 0x00
goto _inicio
org 0x04
goto _interrupcion
;********************************************************************************************
_tabla
addwf PCL, 1
retlw 0x01 ;d'1'
retlw 0x02 ;d'2'
retlw 0x03 ;d'3'
retlw 0x04 ;d'4'
retlw 0x05 ;d'5'
retlw 0x06 ;d'6'
retlw 0x07 ;d'7'
retlw 0x08 ;d'8'
retlw 0x09 ;d'9'
retlw 0x0A ;d'10'
retlw 0x0B ;d'11'
retlw 0x0C ;d'12'
retlw 0x0D ;d'13'
retlw 0x0E ;d'14'
retlw 0x0F ;d'15'
retlw 0x10 ;d'16'
retlw 0x11 ;d'17'
retlw 0x12 ;d'18'
retlw 0x13 ;d'19'
retlw 0x14 ;d'20'
retlw 0x15 ;d'21'
retlw 0x16 ;d'22'
retlw 0x17 ;d'23'
retlw 0x18 ;d'24'
retlw 0x19 ;d'25'
retlw 0x1A ;d'26'
retlw 0x1B ;d'27'
retlw 0x1C ;d'28'
retlw 0x1D ;d'29'
retlw 0x1E ;d'30'
retlw 0x1F ;d'31'
retlw 0x20 ;d'32'
;********************************************************************************************
_interrupcion ;vector de interrupciones
movwf w_temp
movf STATUS, 0
movwf status_temp ;respaldo de W y registro STATUS
movlw 0xFF
movwf TMR0
btfsc INTCON, T0IF
call _tmr0int
btfsc PIR1, CMIF
call _changeint
; btfsc PIR1, ADIF
; call _adcint
movf status_temp, 0
movwf STATUS
movf w_temp, 0
retfie
_tmr0int
bcf INTCON, T0IF
incfsz contador, 1
nop ;seguridad contra desbordamiento de contador (FREC < 30Hz)
return
_changeint
clrf GPIO
bcf INTCON, GPIF
bsf bandera, GPIF
return
;_adcint
; bcf PIR1, ADIF
; bsf bandera, ADIF
; return
;********************************************************************************************
_inicio ;inicio del programa
bcf STATUS,RP0 ;banco 0
clrf GPIO ;inicializacion de puerto GPIO
clrf INTCON ;inicializacion de configuracion de interrupciones
clrf PIR1 ;inicializacion de banderas deinterrupciones perifericas
clrf T1CON ;desactivo interrupciones por TMR1
clrf ADCON0 ;desactivo conversiones adc; entrada AN0 <3:2>; VREF=VDD <6>
movlw b'00000111'
movwf CMCON ;desactivo comparadores analogicos, entradas digitales
bsf STATUS, RP0 ;banco 1
movlw b'00100001' ;FOSC=1/32 (1,6 us @ 20 MHz) <6:4>; GP0 entrada adc ANSEL<0>
movwf ANSEL
movlw b'00001000' ;activo la interrupcion por cambio de estado en GP3, IOC<3>
movwf IOC
movlw b'00001001'
movwf TRISIO ;configuracion de puerto GP; GP0 entrada ADC; GP3 entrada GPIE
movlw b'01000000'
movwf PIE1 ;activo interrupcion de conversor adc ADIE<6>
movlw b'10000111'
movwf OPTION_REG ;pull-ups desactivadas; pre-escalador para TMR0 en 1:256 (PS2:PS0 = 111)
bcf STATUS, RP0 ;banco 0
clrf bandera ;inicializacion de bandera
clrf contador ;inicializacion de contador
bsf INTCON, GPIE ;activo interrupciones de cambio de estado en GP3 <3>
bsf INTCON, GIE ;activo interrupciones globales <7>
_cruce_inicial
btfss bandera, GPIF
goto _cruce_inicial
bcf bandera, GPIF
bsf INTCON, T0IE ;activo interrupciones por TMR0
_cruce_siguiente
btfss bandera, GPIF
goto _cruce_siguiente
bcf bandera, GPIF
movf contador, 0
clrf contador
movwf periodo
movwf auxiliar_temp
bsf ADCON0, 0 ;activo conversiones adc <0>
bsf ADCON0, 1 ;comienzo conversion adc <1>
_conversion ;conversion adc; 1,6us @ 20MHz (11 instrucciones)
btfsc ADCON0, 1 ;ADCON0 GO/!DONE
goto _conversion
bcf ADCON0, 0 ;desactivo conversiones adc <0>
movf ADRESH, 0
clrf ADRESH
_division
sublw 0x08
btfss STATUS, C
goto _niveles
incf estado, 1
goto _division
_niveles
movf estado, 0
pagesel _tabla
call _tabla
movwf posicion_1
movf estado, 0
sublw 0x20
pagesel _tabla
call _tabla
movwf posicion_2
clrf estado
_salida
btfsc bandera, GPIF
goto _cruce_siguiente
nop
nop
nop
decfsz auxiliar_temp, 1 ;retardo de aux_temp * 8 instrucciones
goto _salida
movf periodo, 0
sublw 0x0E ;compensacion de retardo 14 * (8 * 32) instruccioness (_gpio_1 a _gpio_6 + isr_tmr0)
movwf auxiliar_temp
;********************************************************************************************
_gpio_1
btfsc GPIO, 1
goto _gpio_2
decf posicion_1, 1
btfsc STATUS, C
bsf GPIO, 1
_gpio_2
btfsc GPIO, 2
goto _gpio_salida
decf posicion_2, 1
btfsc STATUS, C
bsf GPIO, 2
_gpio_salida
movf GPIO, 0
xorlw b'00000110'
btfss STATUS, Z
goto _salida
goto _cruce_siguiente
end
les adjunto circuito y codigo en asm y .hex
GRACIAS MARTIN CNC POR TU GRAN AYUDA!!!!
Y gracias a todo el foro
un saludo!!