HOla gente!
Me llego un Home 2.1 de la marca mencionada en el titulo del post, que no encendia, no hacia nada... Le cambie el tda y ahora enciende pero se queda congelado en modo StandBy... lo que hice fue levantar el panel de control y probar la etapa amplificadora puenteando el Mode a la alimentacion del TDA con lo cual logre encender y comprobar de que ahora si funciona la etapa de potencia... Luego encontre un integrado tipo peine "D1403N" calcinado y buscando y leyendo pdfs llegue a la conclusion de que este es igual al "KA2284" esto lo que hace es excitar el display para la animacion del vumetro... pero ese no es tanto el tema el microcontrolador maneja el volumen, el control de bass y el standby y creo que este ultimo es el que falla ahora y me congela el aparato en standby... Alguien sabe de la programacion de esto? yo encontre un codigo para el pic16f84 y creo que es algo similar, aqui adjunto fotos y el codigo, para el que este interesado en ayudarme...
El equipo tiene un microcontrolador CF745-04/p y comparando creo que es lo mismo o casi lo mismo que el 16f84a-04/p
Me llego un Home 2.1 de la marca mencionada en el titulo del post, que no encendia, no hacia nada... Le cambie el tda y ahora enciende pero se queda congelado en modo StandBy... lo que hice fue levantar el panel de control y probar la etapa amplificadora puenteando el Mode a la alimentacion del TDA con lo cual logre encender y comprobar de que ahora si funciona la etapa de potencia... Luego encontre un integrado tipo peine "D1403N" calcinado y buscando y leyendo pdfs llegue a la conclusion de que este es igual al "KA2284" esto lo que hace es excitar el display para la animacion del vumetro... pero ese no es tanto el tema el microcontrolador maneja el volumen, el control de bass y el standby y creo que este ultimo es el que falla ahora y me congela el aparato en standby... Alguien sabe de la programacion de esto? yo encontre un codigo para el pic16f84 y creo que es algo similar, aqui adjunto fotos y el codigo, para el que este interesado en ayudarme...
El equipo tiene un microcontrolador CF745-04/p y comparando creo que es lo mismo o casi lo mismo que el 16f84a-04/p
Código:
;************************************ 1995.asm **************************************
;Proy. 1995 Control de tonos HI-FI mediante el chip TDA8425 por bus I2C
;====================================================================================
;Version V.2.25 Por Aritz Lozano 13-02-2007
;====================================================================================
; Mediante el Pic 16f84a a 4Mhz se contolara el procesador da audio HI-Fi tda8425 de
; Philips iterconectados con bus I2C, y controlado por 3 pulsadores e indicando el
; estado mediante leds. Guarda valores en la eeprom de Vol,bass,treble,mode y si se
; deja pulsado PCIONES se reinicia el valor
; ZONA DE DATOS *********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A>
;Define registros
CBLOCK 0x0C
V_MIN
V_MAX
wer
ENDC
;Nombra a las entradas y salidas
#DEFINE PULS_MAS PORTB,7 ;IN- Pulsador de mas
#DEFINE PULS_MENOS PORTB,4 ;IN- Pulsador de menos
#DEFINE PULS_OPC PORTB,6 ;IN- Pulsador de opccion
#DEFINE IR PORTA,4 ;IN- Entrada de Ir
#DEFINE LED_AUX_0 PORTB,3 ;OUT-Led indicador de Linea 0
#DEFINE LED_AUX_1 PORTB,2 ;OUT-Led indicador de Linea 1
#DEFINE LED_BASS PORTB,0 ;OUT-Led indicador de modo graves
#DEFINE LED_TREBLE PORTB,1 ;OUT-Led indicador de modo agudos
#DEFINE LED_ON PORTA,0 ;OUT-Led o salida de encendido para Stam-by del amplificador.
#DEFINE PULS_ON PORTB,5 ;IN- Pulsador de encendido
#DEFINE STBY_AMP PORTA,0 ;Stanby del amplificador
;carga los datos en los registros
ORG 0x2100
DE 0x00
; ZONA DE CÓDIGOS *******************************************************************
;-Vector de interrupcion
ORG 0 ; El programa comienza en la dirección 0.
goto Inicio
ORG 4 ;si ahy un reset
goto P_mas_V
;-----------------------------------------------------------------------------------
;Configuracion de las patillas del pic
Inicio
bsf STATUS,RP0 ; Acceso al Banco 0.
bsf PULS_MAS ;IN- Pulsador de mas
bsf PULS_MENOS ;IN- Pulsador de menos
bsf PULS_OPC ;IN- Pulsador de opccion
bsf IR ;IN- Entrada de Ir
bcf LED_AUX_0 ;OUT-Led indicador de Linea 0
bcf LED_AUX_1 ;OUT-Led indicador de Linea 1
bcf LED_BASS ;OUT-Led indicador de modo graves
bcf LED_TREBLE ;OUT-Led indicador de modo agudos
bcf LED_ON ;OUT-Led o salida de encendido para Stam-by del amplificador.
bsf PULS_ON ;IN- Pulsador de encendido
bcf STBY_AMP ;Stanby del amplificador
bcf STATUS,RP0 ; Acceso al Banco 0.
clrf PORTB
;test de inicio
TEST
bsf LED_BASS
call Retardo_100ms
bsf LED_TREBLE
call Retardo_100ms
bsf LED_AUX_0
call Retardo_100ms
bsf LED_AUX_1
call Retardo_100ms
bsf STBY_AMP
Principal ;Inicializa el tda8425,pon variables por defecto.
movlw .02 ;volumen a -40dB
call EEPROM_LeeDato
movwf VOLUME
movlw .03 ;volumen a -40dB
call EEPROM_LeeDato
movwf BASS
movlw .04 ;volumen a -40dB
call EEPROM_LeeDato
movwf TREBLE
movlw .01 ;volumen a -40dB
call EEPROM_LeeDato
movwf MODE
call tda8425_ESCRIBE
clrf PORTB;bora portB
goto T_AUX
;----------------------------------------------------------------------------------------------------------
;Pulsadores Volumen. MODO NORMAL
P_mas_V
bcf LED_TREBLE
bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
btfss PULS_MAS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_menos_V ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MAS ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_mas_V ;si no esta a 1 pasa al siguiente pulsador
movfw VOLUME ;mueve el volumen al acumulador
sublw b'11111111' ;Ahora para saber si el molumen esta al maximo resta le volumen ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0 (Z=1), es decir, si el volumen esta al maximo
goto LED_VMX ;si esta al maximo no incrementa y pasa a otra cosa. Acabaria este bloque.
incf VOLUME,1 ; incrementa el volumen y lo deja en el registro
call tda8425_ESCRIBE ;Escribe en el TDA8425
movlw .02
movwf EEADR
movf VOLUME,W
call EEPROM_EscribeDato
goto P_menos_V
LED_VMX bsf LED_TREBLE
call Retardo_100ms
bcf LED_TREBLE
P_menos_V
bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
btfss PULS_MENOS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_opciones ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MENOS ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_menos_V ;si no esta a 1 pasa al siguiente pulsador
movfw VOLUME ;mueve el volumen al acumulador
sublw b'11000000' ;Ahora para saber si el molumen esta al minimo resta le volumen ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0, es decir, si el volumen esta al minimo
goto LED_VMI ;si esta al maximo no incrementa y pasa a otra cosa. Acabaria este bloque.
decf VOLUME,1 ; decrementa el volumen y lo deja en el registro
call tda8425_ESCRIBE ;Escribe en el TDA8425
movlw .02
movwf EEADR
movf VOLUME,W
call EEPROM_EscribeDato
goto P_opciones
LED_VMI bsf LED_BASS
call Retardo_100ms
bcf LED_BASS
P_opciones
;Pulsador de opcion
; call Retardo_100ms ;si esta mas de un segundo salta a opciones
btfss PULS_OPC ;Antirebote por software, comprueba q el pulsador este a 1
goto P_mas_V ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;si esta mas de un segundo salta a opciones
btfsc PULS_OPC ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto C_AUX_0 ;si no esta a 1 pasa a OPCIONES
goto OPCIONES
;Seleccion de entrada de linea: si esta PULS_OPC mas PULS_MAS la entrada sera por AUX_0, y si esta
;PULS_OPC mas PULS_MENOS la entrada sera por AUX_1
C_AUX_0
call Retardo_10ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MENOS ;Antirebote por software, comprueba q el pulsador este a 1
goto C_AUX_1 ;si no esta a 1 pasa al siguiente pulsador
btfss PULS_OPC ;Antirebote por software, comprueba q el pulsador este a 1
goto C_AUX_1
movlw b'11001110' ;Canal 0 Stereo
movwf MODE
call tda8425_ESCRIBE
movlw .01
movwf EEADR
movf MODE,W
call EEPROM_EscribeDato
bcf LED_AUX_1
bsf LED_AUX_0
C_AUX_1
call Retardo_10ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MAS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_mas_V ;si no esta a 1 pasa al siguiente pulsador
btfss PULS_OPC ;Antirebote por software, comprueba q el pulsador este a 1
goto P_mas_V
movlw b'11001111' ;Canal 1 Stereo
movwf MODE
call tda8425_ESCRIBE
movlw .01
movwf EEADR
movf MODE,W
call EEPROM_EscribeDato
bcf LED_AUX_0
bsf LED_AUX_1
goto P_mas_V
;FIN DEL BLOQUE DE ESTADO NORMAL
;---------------------------------------------------------------------------------------------------
;BLOQU DE OPCIONES= 1_BASS, 2_TREBLE
OPCIONES
bcf LED_AUX_0
BCF LED_AUX_1
P_mas_BASS
bsf LED_BASS
bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
btfss PULS_MAS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_menos_BASS ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MAS ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_mas_BASS ;si no esta a 1 pasa al siguiente pulsador
movfw BASS ;mueve el volumen al acumulador
sublw b'11111111' ;Ahora para saber si el molumen esta al maximo resta le volumen ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0, es decir, si el volumen esta al maximo
goto LED_BMX ;si esta al maximo no incrementa y pasa a otra cosa. Acabaria este bloque.
incf BASS,1 ; incrementa el volumen y lo deja en el registro
call tda8425_ESCRIBE ;Escribe en el TDA8425
movlw .03
movwf EEADR
movf BASS,W
call EEPROM_EscribeDato
goto P_menos_BASS
LED_BMX bsf LED_AUX_1
call Retardo_100ms
bcf LED_AUX_1
P_menos_BASS
bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
btfss PULS_MENOS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_opciones_BASS ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MENOS ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_menos_BASS ;si no esta a 1 pasa al siguiente pulsador
movfw BASS ;mueve el volumen al acumulador
sublw b'11110000' ;Ahora para saber si el molumen esta al minimo resta le volumen ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0, es decir, si el volumen esta al minimo
goto LED_BMI ;si esta al maximo no incrementa y pasa a otra cosa. Acabaria este bloque.
decf BASS,1 ; decrementa el volumen y lo deja en el registro
call tda8425_ESCRIBE ;Escribe en el TDA8425
movlw .03
movwf EEADR
movf BASS,W
call EEPROM_EscribeDato
goto P_opciones_BASS
LED_BMI bsf LED_AUX_0
call Retardo_100ms
bcf LED_AUX_0
P_opciones_BASS
;Pulsador de opcion
call Retardo_100ms ;si esta mas de un segundo salta a opciones
btfss PULS_OPC ;Antirebote por software, comprueba q el pulsador este a 1
goto P_mas_BASS ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;si esta mas de un segundo salta a opciones
btfsc PULS_OPC ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_mas_BASS ;si no esta a 1 pasa a OPCIONES
bcf LED_BASS
P_mas_TREBLE
bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
bsf LED_TREBLE
btfss PULS_MAS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_menos_TREBLE ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MAS ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_mas_TREBLE ;si no esta a 1 pasa al siguiente pulsador
movfw TREBLE ;mueve el volumen al acumulador
sublw b'11111111' ;Ahora para saber si el molumen esta al maximo resta le volumen ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0, es decir, si el volumen esta al maximo
goto LED_TMX ;si esta al maximo no incrementa y pasa a otra cosa. Acabaria este bloque.
incf TREBLE,1 ; incrementa el volumen y lo deja en el registro
call tda8425_ESCRIBE ;Escribe en el TDA8425
movlw .04
movwf EEADR
movf TREBLE,W
call EEPROM_EscribeDato
goto P_menos_TREBLE
LED_TMX bsf LED_AUX_1
call Retardo_100ms
bcf LED_AUX_1
P_menos_TREBLE
bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
btfss PULS_MENOS ;Antirebote por software, comprueba q el pulsador este a 1
goto P_opciones_TREBLE ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;hace un rtardo para q se estabilize el puerto
btfss PULS_MENOS ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_menos_TREBLE ;si no esta a 1 pasa al siguiente pulsador
movfw TREBLE ;mueve el volumen al acumulador
sublw b'11110000' ;Ahora para saber si el molumen esta al minimo resta le volumen ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0, es decir, si el volumen esta al minimo
goto LED_TMI ;si esta al maximo no incrementa y pasa a otra cosa. Acabaria este bloque.
decf TREBLE,1 ; decrementa el volumen y lo deja en el registro
call tda8425_ESCRIBE ;Escribe en el TDA8425
movlw .04
movwf EEADR
movf TREBLE,W
call EEPROM_EscribeDato
goto P_opciones_TREBLE
LED_TMI bsf LED_AUX_0
call Retardo_100ms
bcf LED_AUX_0
P_opciones_TREBLE
; bcf LED_TREBLE
;Pulsador de opcion
call Retardo_100ms ;si esta mas de un segundo salta a opciones
btfss PULS_OPC ;Antirebote por software, comprueba q el pulsador este a 1
goto P_mas_TREBLE ;si no esta a 1 pasa al siguiente pulsador
call Retardo_100ms ;si esta mas de un segundo salta a opciones
btfsc PULS_OPC ;y si despues de estabilizarse esta a uno pasa a ejecutar el programa
goto P_mas_TREBLE
;pone el led que corresponda en aux_1 o aux_0, pq al salir de bass o treble borra el led.
T_AUX bcf STATUS,Z ;borra flag Z (si una resta es 0 este flag se pone a 1)
movfw MODE ;mueve el MODE al acumulador
sublw b'11001110' ;Ahora para saber si MODE esta en AUX0 resta le MODE ln el valor maximo
btfsc STATUS,Z ;Comprueva si la resta es 0
goto LST_1
bsf LED_AUX_1
goto P_mas_V
LST_1 bsf LED_AUX_0
goto P_mas_V
;Librerias utilizadas_________________________________________________
INCLUDE <EEPROM>
INCLUDE <tda8425>
INCLUDE <BUS_I2C>
INCLUDE <RETARDOS>
END ; Fin del programa.
; ===================================================================