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

Добрый день. Имеется Microlab FC 730, владею долго. После сюрпризов от родного пульта начали поиск не исправности и уткнулись на микроконтроллер  SG16C57D  и сожгли его. Подскажите схему подключения первого индикатора линий gnd. Основную схему я взял с ремонта FC550, я полагаю А6 и А7. Схема передней панели. на передней панели всего 6 светодиодов (по схеме 8 наверное другая модификация наверное, последних POWER нету). Одна кнопка на панели переключает вход с 2.0 на 5.1 и меняется на индикаторе 2.0 на 5.1 и светодиоды соответственно, других функций нету. Энкодер один.
вид передней панели
http://forum.rcl-radio.ru/uploads/images/2023/05/e40201875829f52f6518173851ba5e1a.jpeg
Распиновка основа с  FC550
http://forum.rcl-radio.ru/uploads/images/2023/05/fb9b250b4878e7f93d3d79d671370566.png
Завтра дополню коды пульта и внешний вид платы.
Сама схема передней панели.
http://forum.rcl-radio.ru/uploads/images/2023/05/c7e6eb4aaef67446f4c0f670d519d927.png

2

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

У Вас распайка готова, как под FC550?

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

Да, добавил только а6 и а7, а пот муте не знаю куда

liman324 пишет:

У Вас распайка готова, как под FC550?

4

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

Пока получается такая распайка

#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

добавлен пин точки индикатора и GND5
но GND5 висит на шине UART через которую шьется контроллер, если при прошивке будут ошибки то этот пин надо будет на время прошивки от платы отключать.

Остается только один свободный пин это D0
пины A6 A7 не будут использоваться, это аналоговые входы, они не могут быть цифровыми.

5

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

Тестовый скетч

Если все верно подключено и я не наделал ошибок, то на индикаторах должно быть

1.2  34 и должен засветиться светодиод 5,1IN

Так же не должно быть засветок индикаторов и светодиодов

Кнопку INPUT и энкодер пока можно не подключать

#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 IN5_1_LED        4
#define AUX_LED          5
//#define STAND_LED        2
#define MUTE_LED         3
#define OUT5_1_LED       8
#define OUT2_1_LED       9
#define POWER_LED        7



#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[5];
 long oldPosition  = -999,newPosition; 

  

 
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);
}
 
void loop(){ 

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


 
 }// 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(IN5_1_LED,1); an=4; anod();break;
    i++;if(i>5){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);}

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

Завтра распаяю по схеме и залью скетч
и отпишусь 

liman324 пишет:

Тестовый скетч

Если все верно подключено и я не наделал ошибок, то на индикаторах должно быть

1.2  34 и должен засветиться светодиод 5,1IN

Так же не должно быть засветок индикаторов и светодиодов

#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 IN5_1_LED        4
#define IN2_0_LED        5
#define STAND_LED        2
#define MUTE_LED         3
#define OUT5_1_LED       8
#define OUT2_1_LED       9
#define POWER_LED        7



#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[5];
 long oldPosition  = -999,newPosition; 

  

 
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);
}
 
void loop(){ 

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


 
 }// 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(IN5_1_LED,1); an=4; anod(); segment();break;
    i++;if(i>5){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);}

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

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

8

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

Перезалейте скетч

#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 IN5_1_LED        4
#define AUX_LED          5
//#define STAND_LED        2
#define MUTE_LED         3
#define OUT5_1_LED       8
#define OUT2_1_LED       9
#define POWER_LED        7



#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; 

  

 
void setup(){  
    Wire.begin();Serial.begin(9600);
    MsTimer2::set(1000, 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;


 delay(100);
 }// loop



void to_Timer(){newPosition = myEnc.read()/4;
Serial.println(a[i]);
  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(IN5_1_LED,1); 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);}

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

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



Все нолики с точкой

10

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

Перезалейте скетч http://forum.rcl-radio.ru/viewtopic.php?pid=7873#p7873

11 (2023-05-30 18:43:56 отредактировано gidon19880518)

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

По очереди мигают 1 с точкой, 2 , 3 , 4 с перемигиванием светодиодов

12

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

Замените
MsTimer2::set(1000, to_Timer);MsTimer2::start();
на
MsTimer2::set(2, to_Timer);MsTimer2::start();

13

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

Должен гореть только один диод - IN5_1

14

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

http://forum.rcl-radio.ru/uploads/images/2023/05/7ab9b4a9bb7fdbc03a05b3ed016e448b.jpg


красный яркий зеленные по слабее

15

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

Не могу понять почему светятся все светодиоды, по скетчу все верно, должен гореть только один. буду думать.

16

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

Попробуйте этот код:

#define MUTE_OUT    0
#define GND5        1
#define SEG_G       2
#define DP          3  //  MUTE_LED
#define SEG_A       4  //  IN5_1_LED
#define SEG_F       5  //  AUX_LED
#define SEG_D       6
#define SEG_E       7  //  POWER_LED
#define SEG_B       8  //  OUT5_1_LED
#define SEG_C       9  //  OUT2_1_LED
#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




#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; 

  

 
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);
}
 
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();ch(SEG_A,1); 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);}

17

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

Без изменений, все светодиоды светят

18

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

А если так

#define MUTE_OUT    0
#define GND5        1
#define SEG_G       2
#define DP          3  //  MUTE_LED
#define SEG_A       4  //  IN5_1_LED
#define SEG_F       5  //  AUX_LED
#define SEG_D       6
#define SEG_E       7  //  POWER_LED
#define SEG_B       8  //  OUT5_1_LED
#define SEG_C       9  //  OUT2_1_LED
#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




#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; 

  

 
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);
}
 
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();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); 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);}

19

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

GND5 на D1 это вход UART, надо удалить Serial

#define MUTE_OUT    0
#define GND5        1
#define SEG_G       2
#define DP          3  //  MUTE_LED
#define SEG_A       4  //  IN5_1_LED
#define SEG_F       5  //  AUX_LED
#define SEG_D       6
#define SEG_E       7  //  POWER_LED
#define SEG_B       8  //  OUT5_1_LED
#define SEG_C       9  //  OUT2_1_LED
#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




#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; 

  

 
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;


 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();ch(SEG_A,1); 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);}

20

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

чуть обманул, с предыдущем скетчем диоды не светили, и с этим тоже не светят. Давай кнопку уберем, она панели не нужна когда есть пульт и канал GND 5 c TX1  на D13 подключим

21

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

Один светодиод светит?

22

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

Ни один не светит

23

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

Давай кнопку уберем, она панели не нужна когда есть пульт и канал GND 5 c TX1  на D13 подключим

У меня в планах необходимо использовать кнопку, буду писать статью, хотелось бы полное восстановление АС.

24

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

Должен светиться, возможно схема немного отличается, использую другой пин. По идее должен засветится MUTE.

#define MUTE_OUT    0
#define GND5        1
#define SEG_G       2
#define DP          3  //  MUTE_LED
#define SEG_A       4  //  IN5_1_LED
#define SEG_F       5  //  AUX_LED
#define SEG_D       6
#define SEG_E       7  //  POWER_LED
#define SEG_B       8  //  OUT5_1_LED
#define SEG_C       9  //  OUT2_1_LED
#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




#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; 

  

 
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;


 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();ch(DP,1); 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);}

25

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

завтра еще раз попробую залить скетч с подключенным пином 1 , и разрывая его. Проверю на плате схему светодиодов как и с чем включаются.