SolTech + TDA7377 congelado en StandBy

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

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.

;   ===================================================================
 

Adjuntos

  • 0189_181.jpg
    0189_181.jpg
    141.2 KB · Visitas: 64
  • 01897_174.jpg
    01897_174.jpg
    130.3 KB · Visitas: 60
  • 01898_778.jpg
    01898_778.jpg
    160.2 KB · Visitas: 70
  • 01903_198.jpg
    01903_198.jpg
    128.7 KB · Visitas: 63
  • 01904_187.jpg
    01904_187.jpg
    139.2 KB · Visitas: 60
Atrás
Arriba