26

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Вот так получилось. http://forum.rcl-radio.ru/uploads/images/2023/05/fad0b4d2fd62e4045adc713942564ea7.jpg


Проверил схему подключения светодиодов, она не соответствует схеме

вот следующая схема

символ g   на   D2 вход 5.1
символ dp на   D3 вход 2.0 или (aux)
символ a   на   D4 выход 5.1
символ f    на   D5 выход 2.1
символ b   на   D8  STBY
символ с   на   D9  MUTE

27

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Тестирование светодиодов, должны поочередно зажигать и гаснуть светодиоды с интервалом 1 сек.


#define MUTE_OUT    0
#define GND5        1
#define SEG_G       2
#define DP          3  
#define SEG_A       4  
#define SEG_F       5  
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8  
#define SEG_C       9  
#define ENC_CLK     10 // энкодер контакт 1
#define ENC_DT      11 // энкодер контакт 2
#define PIN_IR      12 // вход IR
#define PIN_IN      13 // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#define IN51_LED    2
#define IN20_LED    3  
#define OUT51_LED   4  
#define OUT20_LED   5  
#define STBY_LED    8  
#define MUTE_LED    9  


#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h> 
Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK

 int an, segm,i;
 byte a[4];
 long oldPosition  = -999,newPosition; 

 bool mute_led,power_led,in5_1_led,aux_led,out5_1_led,out2_1_led;

  

 
void setup(){  
    Wire.begin();
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
}
 
void loop(){ 

  a[0]=1;
  a[1]=2;
  a[2]=3;
  a[3]=4;

mute_led=1,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 delay(1000);
mute_led=0,power_led=1,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 delay(1000); 
mute_led=0,power_led=0,in5_1_led=1,aux_led=0,out5_1_led=0,out2_1_led=0;
 delay(1000); 
mute_led=0,power_led=0,in5_1_led=0,aux_led=1,out5_1_led=0,out2_1_led=0;
 delay(1000); 
mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=1,out2_1_led=0;
 delay(1000); 
mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=1;
 delay(1000); 
 }// loop



void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,1); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       if(mute_led==1){ch(MUTE_LED,1);}else{ch(MUTE_LED,0);}        // mute led
       if(power_led==1){ch(STBY_LED,1);}else{ch(STBY_LED,0);} // power led
       if(in5_1_led==1){ch(IN51_LED,1);}else{ch(IN51_LED,0);} // in5.1 led
       if(aux_led==1){ch(IN20_LED,1);}else{ch(IN20_LED,0);}   // aux led
       if(out5_1_led==1){ch(OUT51_LED,1);}else{ch(OUT51_LED,0);}   // out5.1 led
       if(out2_1_led==1){ch(MUTE_LED,1);}else{ch(MUTE_LED,0);}   // out2.1 led
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
    
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

28

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Тестирование PT2323 и TDA7448

MUTE активно, не знаю что подавать 0 или 5 В чтобы были активны усилители:
либо так
// digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
или так если не будет звука
digitalWrite(MUTE_OUT,LOW);
//  digitalWrite(MUTE_OUT,HIGH);




#define MUTE_OUT    0
#define GND5        1
#define SEG_G       2
#define DP          3  
#define SEG_A       4  
#define SEG_F       5  
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8  
#define SEG_C       9  
#define ENC_CLK     10 // энкодер контакт 1
#define ENC_DT      11 // энкодер контакт 2
#define PIN_IR      12 // вход IR
#define PIN_IN      13 // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#define IN51_LED    2
#define IN20_LED    3  
#define OUT51_LED   4  
#define OUT20_LED   5  
#define STBY_LED    8  
#define MUTE_LED    9  


#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h>
#include <PT2323.h>             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include <TDA7448.h>            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 PT2323 pt; 
 TDA7448 tda;

 int an, segm,i;
 byte a[4];
 long oldPosition  = -999,newPosition; 

 bool mute_led,power_led,in5_1_led,aux_led,out5_1_led,out2_1_led;

  

 
void setup(){  
    Wire.begin();
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);

    audio_pt();
    audio_tda();
}
 
void loop(){ 

  a[0]=1;
  a[1]=2;
  a[2]=3;
  a[3]=4;

 delay(100); 
 }// loop



void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,1); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       if(mute_led==1){ch(MUTE_LED,1);}else{ch(MUTE_LED,0);}        // mute led
       if(power_led==1){ch(STBY_LED,1);}else{ch(STBY_LED,0);} // power led
       if(in5_1_led==1){ch(IN51_LED,1);}else{ch(IN51_LED,0);} // in5.1 led
       if(aux_led==1){ch(IN20_LED,1);}else{ch(IN20_LED,0);}   // aux led
       if(out5_1_led==1){ch(OUT51_LED,1);}else{ch(OUT51_LED,0);}   // out5.1 led
       if(out2_1_led==1){ch(MUTE_LED,1);}else{ch(MUTE_LED,0);}   // out2.1 led
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
    
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(0); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){
  tda.setAtt(1,10);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,10);
  tda.setAtt(3,10);
  tda.setAtt(4,10);
  tda.setAtt(5,10);
  tda.setAtt(6,10);
  }

29

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Светит один светодиод mute

30

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Давайте все же переключим GND5 на D13

#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2
#define DP          3  
#define SEG_A       4  
#define SEG_F       5  
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8  
#define SEG_C       9  
#define ENC_CLK     10 // энкодер контакт 1
#define ENC_DT      11 // энкодер контакт 2
#define PIN_IR      12 // вход IR
#define PIN_IN      1 // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

// LED
#define IN51_LED    2
#define IN20_LED    3  
#define OUT51_LED   4  
#define OUT20_LED   5  
#define STBY_LED    8  
#define MUTE_LED    9  


#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h>
#include <PT2323.h>             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include <TDA7448.h>            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 PT2323 pt; 
 TDA7448 tda;

 int an, segm,i;
 byte a[4];
 long oldPosition  = -999,newPosition; 

 bool mute_led,power_led,in5_1_led,aux_led,out5_1_led,out2_1_led;

  

 
void setup(){  
    Wire.begin();
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);

    audio_pt();
    audio_tda();
}
 
void loop(){ 

  a[0]=1;
  a[1]=2;
  a[2]=3;
  a[3]=4;

mute_led=1;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000);
mute_led=0;power_led=1;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=1;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=1;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=1;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=1;
 delay(1000); 
 }// loop



void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,1); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       if(mute_led==1){ch(MUTE_LED,1);}else{ch(MUTE_LED,0);}        // mute led
       if(power_led==1){ch(STBY_LED,1);}else{ch(STBY_LED,0);}       // power led
       if(in5_1_led==1){ch(IN51_LED,1);}else{ch(IN51_LED,0);}       // in5.1 led
       if(aux_led==1){ch(IN20_LED,1);}else{ch(IN20_LED,0);}         // aux led
       if(out5_1_led==1){ch(OUT51_LED,1);}else{ch(OUT51_LED,0);}    // out5.1 led
       if(out2_1_led==1){ch(OUT20_LED,1);}else{ch(OUT20_LED,0);}    // out2.1 led
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
    
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(0); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){
  tda.setAtt(1,10);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,10);
  tda.setAtt(3,10);
  tda.setAtt(4,10);
  tda.setAtt(5,10);
  tda.setAtt(6,10);
  }

31

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Проверку не проходит ругается на TDA 7448,    'class TDA7448' has no member named 'setAtt'; did you mean 'setVol'?
С старым кодом проверил на D13, тоже только один светодиод светит(Mute). Зажигал по очереди светодиоды, светят.

32

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Проверку не проходит ругается на TDA 7448,    'class TDA7448' has no member named 'setAtt'; did you mean 'setVol'?

Библиотеку установили?

Зажигал по очереди светодиоды, светят.

???

33

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

case 4: segm = 10; segment();ch(DP,1); an=4; anod();break;   
менял параметры ch(SEG_G,1); an=4; anod();break;   
менял параметры ch(SEG_A,1); an=4; anod();break; 
менял параметры ch(SEG_F,1); an=4; anod();break;
менял параметры ch(SEG_B,1); an=4; anod();break;
менял параметры ch(SEG_C,1); an=4; anod();break; 
По 2 светодиода зажигал менял параметры ch(SEG_G,1);ch(DP,1); an=4; anod();break;

Библиотеку поставил, в конце проверки выходит ошибка

   
http://forum.rcl-radio.ru/uploads/images/2023/05/7851676f4f3310c8b2719d478cb5b4b2.jpg

34

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

У меня компиляция проходит без ошибок

#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10 // энкодер контакт 1
#define ENC_DT      11 // энкодер контакт 2
#define PIN_IR      12 // вход IR
#define PIN_IN      1 // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h>
#include <PT2323.h>             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include <TDA7448.h>            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 PT2323 pt; 
 TDA7448 tda;

 int an, segm,i;
 byte a[4];
 long oldPosition  = -999,newPosition; 

 bool mute_led,power_led,in5_1_led,aux_led,out5_1_led,out2_1_led;

  

 
void setup(){  
    Wire.begin();
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);

    audio_pt();
    audio_tda();
}
 
void loop(){ 

  a[0]=1;
  a[1]=2;
  a[2]=3;
  a[3]=4;

mute_led=1;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000);
mute_led=0;power_led=1;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=1;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=1;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=1;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=1;
 delay(1000); 
 }// loop



void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,1); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       if(mute_led==1){ch(SEG_C,1);}else{ch(SEG_C,0);}        // mute led
       if(power_led==1){ch(SEG_B,1);}else{ch(SEG_B,0);}       // power led
       if(in5_1_led==1){ch(SEG_G,1);}else{ch(SEG_G,0);}       // in5.1 led
       if(aux_led==1){ch(DP,1);}else{ch(DP,0);}         // aux led
       if(out5_1_led==1){ch(SEG_A,1);}else{ch(SEG_A,0);}    // out5.1 led
       if(out2_1_led==1){ch(SEG_F,1);}else{ch(SEG_F,0);}    // out2.1 led
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
    
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(0); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){
  tda.setAtt(1,10);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,10);
  tda.setAtt(3,10);
  tda.setAtt(4,10);
  tda.setAtt(5,10);
  tda.setAtt(6,10);
  }

35 (2023-05-31 19:50:56 отредактировано gidon19880518)

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Заменил библиотеку , компилируется без ошибок, . На сегментах 1234, и светодиод 2.1. выход. Завтра на тестовом стенде попробую с тда

36

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Сейчас должно заработать

#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h>
#include <PT2323.h>             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include <TDA7448.h>            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 PT2323 pt; 
 TDA7448 tda;

 int an, segm,i;
 byte a[4];
 long oldPosition  = -999,newPosition; 

 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;

  

 
void setup(){ 
    Wire.begin();
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);

    audio_pt();
    audio_tda();
}
 
void loop(){ 

  a[0]=1;
  a[1]=2;
  a[2]=3;
  a[3]=4;

mute_led=1;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000);
mute_led=0;power_led=1;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=1;aux_led=0;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=1;out5_1_led=0;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=1;out2_1_led=0;
 delay(1000); 
mute_led=0;power_led=0;in5_1_led=0;aux_led=0;out5_1_led=0;out2_1_led=1;
 delay(1000); 
 }// loop



void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,1); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(0); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){
  tda.setAtt(1,10);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,10);
  tda.setAtt(3,10);
  tda.setAtt(4,10);
  tda.setAtt(5,10);
  tda.setAtt(6,10);
  }

37

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

По схеме mute весит в воздухе, посмотрел дата щит на pt 2322 и tda 7448, в них нет реализации mute. Посмотрел на штекер панели там штекер на 4 пина. +,-, scl, sda. Mute реализовано было самой sg16c57d.

38

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Понял. Светодиоды светят?
Аудиопроцессоры должны быть активны, вход AUX. Должен быть звук.

39

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Сегодня возможности нету, завтра проверю

40

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Проверил звука нету, пробовал разные входы и все выходы, тишина

41

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Загрузите сканер I2C - http://forum.rcl-radio.ru/viewtopic.php?id=64

В мониторе порта должно определится 2 адреса

42

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Тестирование кнопки INPUT, регулировка громкости при помощи энкодера, переключение 2.0IN 5.1IN (должна меняться индикация), при регулировке громкости индикатор должен показывать от 0 до 79.

Тестирование EEPROM - запоминание уровня громкости и выбора входа.

#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h>
#include <PT2323.h>             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include <TDA7448.h>            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
#include <EEPROM.h>
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 PT2323 pt; 
 TDA7448 tda;

 int an, segm,i,menu,input,in,vol_reg;
 byte a[4];
 long oldPosition  = -999,newPosition,times; 
 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 bool w,w1,dp_led;

  

 
void setup(){ 
    Wire.begin();
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
    input = EEPROM.read(0);vol_reg = EEPROM.read(1)-79;
     if(input==0){in=0;}if(input==1){in=4;}
    audio_pt();
    audio_tda();
}
 
void loop(){ 
//// BUTTON + IR ////////////////////////////////////////////////
if(digitalRead(PIN_IN)==LOW && input==1){input=0;in=0;audio_pt;w=1;w1=1;times=millis();delay(200);}
if(digitalRead(PIN_IN)==LOW && input==0){input=1;in=4;audio_pt;w=1;w1=1;times=millis();delay(200);}
  
//// VOLUME ////////////////////////////////////////////////
if(menu==0){
  if(input==0){aux_led=1;a[0]=2;a[1]=0;in5_1_led=0;dp_led=1;}
  if(input==1){in5_1_led=1;a[0]=5;a[1]=1;aux_led=0;dp_led=1;} 
  if(newPosition != oldPosition){oldPosition = newPosition;enc_err();vol_reg=vol_reg+newPosition;w=1;w1=1;times=millis();vol_func();audio_tda();}
    a[2]=(79+vol_reg)/10%10;
    a[3]=(79+vol_reg)%10;
  }  
///////////////////////////////////////////////////////////

 



mute_led=0;power_led=0;out5_1_led=0;out2_1_led=0;

 delay(50); 

////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times>5000 && w1==1){
     EEPROM.update(0,in);EEPROM.update(1,vol_reg+79);
     menu=0;w1=0;w=1;}       
 }// loop

void vol_func(){if(vol_reg>0){vol_reg=0;}if(vol_reg<-79){vol_reg=-79;}}
void enc_err(){if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}}
void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,dp_led); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(in); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){
  tda.setAtt(1,vol_reg);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol_reg);
  tda.setAtt(3,vol_reg);
  tda.setAtt(4,vol_reg);
  tda.setAtt(5,vol_reg);
  tda.setAtt(6,vol_reg);
  }

43

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Вот такие адреса вышли http://forum.rcl-radio.ru/uploads/images/2023/06/328fc6c7b31be8ab2edd39eb2385504d.jpg

44

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Да все верно, эти адреса прописаны в библиотеках

45

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Музыка играет от 2.0 входа все каналы (от 5.1 нет ), энкодер работает, кнопка работает. Кнопку нажимал светодиод все правильно светит, 5.1. и 2.0 , соответственно. Светодиоды на выход не светят

46

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Попробуйте этот код, звук INPUT5,1 должен появится.

#define MUTE_OUT    0
#define GND5        13
#define SEG_G       2   // in51
#define DP          3   // in20
#define SEG_A       4   // out51
#define SEG_F       5   // out20
#define SEG_D       6
#define SEG_E       7  
#define SEG_B       8   // stby
#define SEG_C       9   // mute
#define ENC_CLK     10  // энкодер контакт 1
#define ENC_DT      11  // энкодер контакт 2
#define PIN_IR      12  // вход IR
#define PIN_IN      1  // кнопка INPUT

#define GND1        A0
#define GND2        A1
#define GND3        A2
#define GND4        A3
// SDA              A4 
// SCL              A5

#include <Encoder.h>            // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h>           // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip       
#include <Wire.h>
#include <PT2323.h>             // http://rcl-radio.ru/wp-content/uploads/2019/06/PT2323-2.zip
#include <TDA7448.h>            // http://rcl-radio.ru/wp-content/uploads/2019/08/TDA7448-1.zip
#include <EEPROM.h>
 Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
 PT2323 pt; 
 TDA7448 tda;

 int an, segm,i,menu,input,in_data,vol_reg;
 byte a[4];
 long oldPosition  = -999,newPosition,times; 
 bool mute_led=0,power_led=0,in5_1_led=0,aux_led=0,out5_1_led=0,out2_1_led=0;
 bool w,w1,dp_led;

  

 
void setup(){ 
    Wire.begin();
 //   Serial.begin(9600);
    MsTimer2::set(2, to_Timer);MsTimer2::start();
    pinMode(PIN_IN,INPUT); // кнопка INPUT
    pinMode(SEG_A,OUTPUT);
    pinMode(SEG_B,OUTPUT);
    pinMode(SEG_C,OUTPUT);
    pinMode(SEG_D,OUTPUT);
    pinMode(SEG_E,OUTPUT);
    pinMode(SEG_F,OUTPUT);
    pinMode(SEG_G,OUTPUT);
    pinMode(DP,OUTPUT);
    pinMode(GND1,OUTPUT);
    pinMode(GND2,OUTPUT);
    pinMode(GND3,OUTPUT);
    pinMode(GND4,OUTPUT);
    pinMode(GND5,OUTPUT);
    pinMode(MUTE_OUT,OUTPUT);
   // digitalWrite(MUTE_OUT,LOW);
    digitalWrite(MUTE_OUT,HIGH);
    input = EEPROM.read(0);vol_reg = EEPROM.read(1)-79;
     if(input==0){in_data=0;}
     if(input==1){in_data=4;}
    audio_pt();
    audio_tda();
}
 
void loop(){ 
//// BUTTON + IR ////////////////////////////////////////////////
if(digitalRead(PIN_IN)==LOW && input==1){input=0;in_data=0;audio_pt;w=1;w1=1;times=millis();delay(200);}
if(digitalRead(PIN_IN)==LOW && input==0){input=1;in_data=4;audio_pt;w=1;w1=1;times=millis();delay(200);}
  
//// VOLUME ////////////////////////////////////////////////
if(menu==0){
  if(input==0){aux_led=1;a[0]=2;a[1]=0;in5_1_led=0;dp_led=1;}
  if(input==1){in5_1_led=1;a[0]=5;a[1]=1;aux_led=0;dp_led=1;} 
  if(newPosition != oldPosition){oldPosition = newPosition;enc_err();vol_reg=vol_reg+newPosition;w=1;w1=1;times=millis();vol_func();audio_tda();}
    a[2]=(79+vol_reg)/10%10;
    a[3]=(79+vol_reg)%10;
  }  
///////////////////////////////////////////////////////////

 



mute_led=0;power_led=0;out5_1_led=0;out2_1_led=0;

 delay(50); 

////////////////// EEPROM //////////////////////////////////////////////////////////////
 if(millis()-times>5000 && w1==1){
     EEPROM.update(0,input);EEPROM.update(1,vol_reg+79);
     menu=0;w1=0;w=1;}       
 }// loop

void vol_func(){if(vol_reg>0){vol_reg=0;}if(vol_reg<-79){vol_reg=-79;}}
void enc_err(){if(newPosition>1){newPosition=1;}if(newPosition<-1){newPosition=-1;}}
void to_Timer(){newPosition = myEnc.read()/4;
  switch(i){
    case 0: segm = 10; segment();segm=a[0];ch(DP,dp_led); an=0; anod(); segment();break;
    case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
    case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
    case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
    case 4: segm = 10; segment();
       ch(SEG_C,mute_led);
       ch(SEG_B,power_led);
       ch(SEG_G,in5_1_led);
       ch(DP,aux_led);
       ch(SEG_A,out5_1_led);
       ch(SEG_F,out2_1_led);
    an=4; anod();break;
  }
   i++;if(i>4){i=0;} 
  } 
 
void segment(){
  switch(segm){                                                                 
             //  A          B           C            D          E          F         G  
    case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0 
    case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
    case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
    case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3   
    case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4 
    case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5 
    case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6 
    case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7 
    case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
    case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9 
   case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break;  
    case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1);  break; 
    case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1);  break;  
    case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1);  break;  
    case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0);  break;   
  }}
void ch(int pin, int logic){digitalWrite(pin,logic);}

void audio_pt(){
  pt.setInput(in_data); // входы 1...4 (0...3) или 6 моно (4)
  pt.setMute(0,0,0,0,0,0,0); // MUTE OFF для выходов (0,0,0,0,0,0,0); 
                              // MUTE ON  для выходов (1,1,1,1,1,1,1); 
                              // fl,  fr,  ct,  sub,  sl,  sr, все  выходы mute
  pt.setFeature(0,0); // дополнительные функции 0...3
                     // 0 - Enhanced Surround Function Active
                     // 1 - Enhanced Surround Function Disabled
                     // 0 - Mixed Channel (0dB) Setup
                     // 1 - Mixed Channel (+6dB) Setup  
}

void audio_tda(){
  tda.setAtt(1,vol_reg);// 0 макс громк, -79(79) мин громк
  tda.setAtt(2,vol_reg);
  tda.setAtt(3,vol_reg);
  tda.setAtt(4,vol_reg);
  tda.setAtt(5,vol_reg);
  tda.setAtt(6,vol_reg);
  }

47

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Громкость меняется когда крутите энкодер?

Мне нужно фото пульта и описание своими словами что там нажимать как должно регулироваться и что при этом на дисплее меняется и выводится.

48

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

http://forum.rcl-radio.ru/uploads/images/2023/06/f61e71ed7c17bc15ac3efe48c5295dd5.png

http://forum.rcl-radio.ru/uploads/images/2023/06/8ab7df011e9e5efd3251edc289f5a83d.png

http://forum.rcl-radio.ru/uploads/images/2023/06/de8a772b747cffaa8831659fefca36d1.png

49

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Да пульт такой, общая громкость 80, баланс лево право, бас, сабвуфер, центр вроде бы от -5 до +5. Кнопка на передней панели переключает только вход, кнопка на пульте input sel,  выполняет те же функции что и кнопка на панели. Кнопка mode переключает выход или будут 2 канала, играть или все.

50

Re: Восстановление MICROLAB FC730 (Управление - замена микроконтроллера)

Регулировка TDA7448 о -79 до 0 dB. 80 не получится, только 79 и то меньше, так мне надо забрать у громкости несколько дБ для регулировки баланса и аттенюаторов выходов.

Если судить по пульту, то у фронта только общая громкость, у тыла есть баланс и аттенюатор, для баланса мне надо забрать у громкости 10 дБ и для аттенюатора еще 10 дБ, для центра и сабвуфера тоже по 10 дБ для аттенюатора.

Как понял, надо делать общую громкость 0-79 и это для фронта, а все остальные выходы будет регулироваться отдельно и их общий уровень громкости отображаться не будет, только для фронта.

Так при регулировки с пульта меняются названия на индикаторах, предлагаю:

рег аттенюатора тыла надпись  RA регулировка от  0 до 10 дБ  (RA 07)
рег баланса тыла надпись BR  -5...5 (BR -4)

сабвуфер SB регулировка от  0 до 10 дБ (SB 05)
центр СN регулировка от  0 до 10 дБ (CN 04)

После регулировки с пульта через 5 секунд идет возврат в основное меню регулировки громкости (2.0 50)

Если есть другие предложения то пишите