Hola a todos por acá, favor si me pueden ayudar con este proyecto que ya me quemo horas y también la única neurona que me queda.
Estoy tratando de adaptar este código para un dimmer con mando, en un micro 12f675. el mismo lo tengo adaptado en un 16f628 y funciona de maravillas en una placa de ensayos que tengo. pero al pasarlo al 12f675 no funciona la parte del dimmer, como que no interrumpe el Tmr1, el mando si funciona por q lo veo en los led. cambie los fuses y solo parpadea algunas veces. el micro no es por que hice un dimmer sesillo con retardos pauseus y funciona de maravillas.
Tendrá que ver los dos pines que tengo flotante sin conexión??? recuerdo que el 16f628 hace lo mismo en esta placa que es la definitiva.
Favor si pueden ayudar este novato!!! les dejo un pedazo del código para que lo Revisen.-
Gracias.
Gracias de todos modos, ya lo hice funcionar y con dos salidas, una para el ventilador y otra para la lámpara. Las dos con Dimmer utilizando los dos Timer, 0 y 1. Pero fracase con la fuente sin Trafo. Queme 5 Pic.
DEVICE 12F675
CONFIG INTRC_OSC_NOCLKOUT, WDT_On, PWRTE_ON, BODEN_on, CP_OFF, MCLRE_OFF
ALL_DIGITAL = TRUE
; 76543210
TRISIO = %00011110 ;1-entrada, 0-salida
CMCON = 7 ;comparator off
;************************************************* ******************************
SYMBOL Venti = GPIO.0 ; ventilador (Dimmer)
; GPIO.1 ; Libre, flotante
syMBOL CruceXCero = GPIO.2 ;Deteccion de cruce por cero
GPIO.3 ; Libre, flotante
SYSYMBOL IRR = GPIO.4 ;Receptor infrarrojo
SYMBOL Luz = GPIO.5 ;Luz del ventilador
Symbol GIE INTCON.7 ' Habilitacion de interrupcion global
'------------RBO INTERRUPT-------------------
Symbol INTEDG OPTION_REG.6
Symbol INTE INTCON.4
Symbol INTF INTCON.1
'--------TIMER1 INTERRUPT-----------------
Symbol TMR1IE PIE1.0
Symbol TMR1IF PIR1.0
Symbol PEIE INTCON.6
Symbol Glitch = 52
Symbol LED_Tijd = 500
Symbol OFF = 0
Symbol Ok = 50
Symbol On = 1
Dim ComByte As Byte
Dim ComByteOud As Byte
Dim SysByte As Byte
Dim SysByteOud As Byte
Dim ToggBit As Bit
Dim LAST_TOGGBIT As Bit
Dim ToggBitOud As Bit
Dim Waarde As Bit
Dim z As Bit
Dim z1 As Byte
Dim TIMER1 As TMR1L.Word
Dim ANGULO As Word
Dim ANGULO1 As Word
Dim VentOn As Bit
Dim Luz_Venti_On As Bit
Clear
TMR1IE=0
TMR1IF=0
INTE=0
INTF=0
T1CON=%01000000
TIMER1=0
DelayMS 100
ON_INTERRUPT FIREFAN
GoTo START
FIREFAN:
IF INTF=1 THEN
INTEDG=INTEDG ^1
IF ANGULO < 1000 THEN
IF vention=1 THEN
VENTI=1
INTF=0
TMR1IF=0
GOTO ESCAPE
ENDIF
ENDIF
TIMER1=65500-ANGULO
T1CON=%01000001
INTF=0
ENDIF
IF TMR1IF =1 THEN
T1CON=%01000000
IF VENTION=1 THEN
VENTI=1
DelayUS 10
DelayUS 10
DelayUS 10
DelayUS 10
DelayUS 10
VENTI=0
ENDIF
TMR1IF=0
ENDIF
ESCAPE:
CONTEXT RESTORE
BitOphalen:
Waarde = 0
If IRR = 1 Then Waarde = 1
z = IRR
z1 = 0
While IRR = z And z1 < Ok
Inc z1
Wend
If Ok = z1 Then GoTo ErrorOntvangst 'Niet binnen de tijd een niveau-verandering
DelayUS 1000 '1600 '800 '900
Return
Start:
ANGULO=1000
VENTION=1
While GIE=1 ' make sure to disable the Global interrupt
GIE=0 ' Disable Global interrupt
Wend
INTEDG =1 ' INTERRUPT ON RISING EDGE ' RB0 INTERRUPT
INTE =1
TMR1IE =1
PEIE=1
GIE = 1 ' Enable global interrupts
INTF=0
' T0IE = 0 ' Enable TMR0 overflow interrupt
'T0IF=0
TMR1IF =0
MAIN:
z1 = 0
While IRR = 1 : Wend
While IRR = 0 And z1 < Glitch
Inc z1
Wend
If z1 < Glitch Then
GoTo MAIN
EndIf
ComByteOud = ComByte
SysByteOud = SysByte
ToggBitOud = ToggBit
DelayUS 600
GoSub BitOphalen
ComByte.6 = Waarde ^ 1
GoSub BitOphalen
ToggBit = Waarde
GoSub BitOphalen
ComByte.0 = Waarde
; Etc, Etc hasta completar los 12 bit, borrados por espacio
If ToggBit <> LAST_TOGGBIT Then
LAST_TOGGBIT=ToggBit
SELECT COMBYTE ' cheQUEO DE LA TECLA PRESIONADA
CASE 2
TOGGLE Luz
CASE 16 ' VOLUMEN +
ANGULO=ANGULO-1000
IF ANGLE < 0 THEN
ANGULO=0
ENDIF
CASE 17 ' VOLUMEN -
ANGULO=ANGULO+1000
IF ANGLE > 8000 THEN
ANGULO=8000
ENDIF
CASE 13 ' MUDO
VENTION=VENTION^1
LUZ=0
CASE 12 ' POWER ON/OFF
IF Luz_Venti_On =0 THEN
Luz_Venti_On =1
VENTI=1
VENTION=1
GOTO LABEL1
ENDIF
IF Luz_Venti_On =1 THEN
VENTI=0
Luz_Venti_On =0
ENDIF
LABEL1:
END SELECT
ENDIF
GOTO MAIN
ErrorOntvangst:
ComByte = ComByteOud
SysByte = SysByteOud
ToggBit = ToggBitOud
GOTO MAIN