Пипеееец, что надо было доступ к папке изменить?
В свойства убрал галочку с только чтение и файлы появились.
Отредактировано priradio585 (2023-04-29 23:47:04)
USMI |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Вопросы по работе с JL SDK. Настройка, конфигурирование....
Пипеееец, что надо было доступ к папке изменить?
В свойства убрал галочку с только чтение и файлы появились.
Отредактировано priradio585 (2023-04-29 23:47:04)
Нет, проблема с сдк. Точнее почему то ADC нормально не считает, и не соответствует своим местам.
USMicro® 2026©
В свойства убрал галочку с только чтение и файлы появились.
У меня все появилось когда сделал MAKE в проэкте.
USMicro® 2026©
И такое кажется во всех SDK, я все пробовал.
Да просто скомпилировал, через кнопку ребилд.
Тут прикол, почему то через portr смещается значение резисторов, 0 ом получается третий сверху...
USMicro® 2026©
Короче, тупо для rtcvdd используется своя таблица с сопротивлениями. Ша постараюсь ак для VDDIO
USMicro® 2026©
Тут прикол, почему то через portr смещается значение резисторов, 0 ом получается третий сверху...
Становится ADC10_27 ?
С внешним резистором работает как положенно, поставил внешний 10 к. Погоди, цас раскопаю в сем дело..
USMicro® 2026©
Ааааа, там тупо нет под внутренний резистор команд, написали только две)
Ща.
USMicro® 2026©
47 и 20 кОм)))?
IC_ADC это под внутренний резистор получается?
Отредактировано priradio585 (2023-04-30 01:21:58)
Короче, под внутренний резистор было просто три команды. Почему
0 ом получается третий сверху...
Потому что всего три ADC уровня. 
Вот было вот так
#if KEY_AD_RTCVDD_EN
#define FULL_ADC 0x3ffL
#if EXTERN_R_UP
#define R_UP EXTERN_R_UP //外部上拉
#define IC_R_UP 0 //用芯片内部上拉10K,用外部上拉时设置为0
#else
#define IC_R_UP 100 //用芯片内部上拉10K,用外部上拉时设置为0
#endif#define ADC10_33(x) (x)
#define ADC10_30(x) (x*2200L/(2200 + R_UP)) //220K
#define ADC10_27(x) (x*1000L/(1000 + R_UP)) //100K
#define ADC10_23(x) (x*510L /(510 + R_UP)) //51K
#define ADC10_20(x) (x*330L /(330 + R_UP)) //33K
#define ADC10_17(x) (x*240L /(240 + R_UP)) //24K
#define ADC10_13(x) (x*150L /(150 + R_UP)) //15K
#define ADC10_10(x) (x*91L /(91 + R_UP)) //9.1K
#define ADC10_07(x) (x*62L /(62 + R_UP)) //6.2K
#define ADC10_04(x) (x*30L /(30 + R_UP)) //3K
#define ADC10_00(x) (0)#define AD_NOKEY(x) ((ADC10_33(x) + ADC10_30(x))/2)
#define ADKEY1_0(x) ((ADC10_30(x) + ADC10_27(x))/2)
#define ADKEY1_1(x) ((ADC10_27(x) + ADC10_23(x))/2)
#define ADKEY1_2(x) ((ADC10_23(x) + ADC10_20(x))/2)
#define ADKEY1_3(x) ((ADC10_20(x) + ADC10_17(x))/2)
#define ADKEY1_4(x) ((ADC10_17(x) + ADC10_13(x))/2)
#define ADKEY1_5(x) ((ADC10_13(x) + ADC10_10(x))/2)
#define ADKEY1_6(x) ((ADC10_10(x) + ADC10_07(x))/2)
#define ADKEY1_7(x) ((ADC10_07(x) + ADC10_04(x))/2)
#define ADKEY1_8(x) ((ADC10_04(x) + ADC10_00(x))/2)#define IC_ADC10_33(x) (x)
#define IC_ADC10_20(x) (x*470L/(470 + IC_R_UP)) //47K
#define IC_ADC10_10(x) (x*200L/(200 + IC_R_UP)) //20K
#define IC_ADC10_00(x) (0)#define IC_AD_NOKEY(x) ((IC_ADC10_33(x) + IC_ADC10_20(x))/2)
#define IC_ADKEY1_0(x) ((IC_ADC10_20(x) + IC_ADC10_10(x))/2)
#define IC_ADKEY1_1(x) ((IC_ADC10_10(x) + IC_ADC10_00(x))/2)u16 ad_rtcvdd_key_table[] = {
#if IC_R_UP
IC_ADKEY1_0(FULL_ADC), IC_ADKEY1_1(FULL_ADC)
#else
ADKEY1_0(FULL_ADC), ADKEY1_1(FULL_ADC), ADKEY1_2(FULL_ADC), ADKEY1_3(FULL_ADC), ADKEY1_4(FULL_ADC),
ADKEY1_5(FULL_ADC), ADKEY1_6(FULL_ADC), ADKEY1_7(FULL_ADC), ADKEY1_8(FULL_ADC)
#endif
};volatile u8 adkey_lock_cnt = 0;
static u8 rtcvdd_cnt = 10;
static u8 rtcvdd_full_cnt = 0xff;
u16 rtcvdd_full_value = FULL_ADC;
u16 max_value = 0;
u16 min_value = 0xffff;
u32 total_value = 0;
static u8 check_rtcvdd_cnt = 0;static void set_rtcvdd_table(u16 adc_rtcvdd)
{
u16 rtcvdd;
rtcvdd = adc_rtcvdd;
#if IC_R_UP
ad_rtcvdd_key_table[0] = IC_ADKEY1_0(rtcvdd);
ad_rtcvdd_key_table[1] = IC_ADKEY1_1(rtcvdd);
#else
ad_rtcvdd_key_table[0] = ADKEY1_0(rtcvdd);
ad_rtcvdd_key_table[1] = ADKEY1_1(rtcvdd);
ad_rtcvdd_key_table[2] = ADKEY1_2(rtcvdd);
ad_rtcvdd_key_table[3] = ADKEY1_3(rtcvdd);
ad_rtcvdd_key_table[4] = ADKEY1_4(rtcvdd);
ad_rtcvdd_key_table[5] = ADKEY1_5(rtcvdd);
ad_rtcvdd_key_table[6] = ADKEY1_6(rtcvdd);
ad_rtcvdd_key_table[7] = ADKEY1_7(rtcvdd);
ad_rtcvdd_key_table[8] = ADKEY1_8(rtcvdd);
#endif
А стало,
#if KEY_AD_RTCVDD_EN
#define FULL_ADC 0x3ffL
#if EXTERN_R_UP
#define R_UP EXTERN_R_UP //外部上拉
#define IC_R_UP 0 //用芯片内部上拉10K,用外部上拉时设置为0
#else
#define IC_R_UP 100 //用芯片内部上拉10K,用外部上拉时设置为0
#endif#define ADC10_33(x) (x)
#define ADC10_30(x) (x*2200L/(2200 + R_UP)) //220K
#define ADC10_27(x) (x*1000L/(1000 + R_UP)) //100K
#define ADC10_23(x) (x*510L /(510 + R_UP)) //51K
#define ADC10_20(x) (x*330L /(330 + R_UP)) //33K
#define ADC10_17(x) (x*240L /(240 + R_UP)) //24K
#define ADC10_13(x) (x*150L /(150 + R_UP)) //15K
#define ADC10_10(x) (x*91L /(91 + R_UP)) //9.1K
#define ADC10_07(x) (x*62L /(62 + R_UP)) //6.2K
#define ADC10_04(x) (x*30L /(30 + R_UP)) //3K
#define ADC10_00(x) (0)#define AD_NOKEY(x) ((ADC10_33(x) + ADC10_30(x))/2)
#define ADKEY1_0(x) ((ADC10_30(x) + ADC10_27(x))/2)
#define ADKEY1_1(x) ((ADC10_27(x) + ADC10_23(x))/2)
#define ADKEY1_2(x) ((ADC10_23(x) + ADC10_20(x))/2)
#define ADKEY1_3(x) ((ADC10_20(x) + ADC10_17(x))/2)
#define ADKEY1_4(x) ((ADC10_17(x) + ADC10_13(x))/2)
#define ADKEY1_5(x) ((ADC10_13(x) + ADC10_10(x))/2)
#define ADKEY1_6(x) ((ADC10_10(x) + ADC10_07(x))/2)
#define ADKEY1_7(x) ((ADC10_07(x) + ADC10_04(x))/2)
#define ADKEY1_8(x) ((ADC10_04(x) + ADC10_00(x))/2)#define IC_ADC10_33(x) (x)
#define IC_ADC10_30(x) (x*2200L/(2200 + IC_R_UP)) //220K
#define IC_ADC10_27(x) (x*1000L/(1000 + IC_R_UP)) //100K
#define IC_ADC10_23(x) (x*510L /(510 + IC_R_UP)) //51K
#define IC_ADC10_20(x) (x*330L /(330 + IC_R_UP)) //33K
#define IC_ADC10_17(x) (x*240L /(240 + IC_R_UP)) //24K
#define IC_ADC10_13(x) (x*150L /(150 + IC_R_UP)) //15K
#define IC_ADC10_10(x) (x*91L /(91 + IC_R_UP)) //9.1K
#define IC_ADC10_07(x) (x*62L /(62 + IC_R_UP)) //6.2K
#define IC_ADC10_04(x) (x*30L /(30 + IC_R_UP)) //3K
#define IC_ADC10_00(x) (0)#define IC_AD_NOKEY(x) ((IC_ADC10_33(x) + IC_ADC10_30(x))/2)
#define IC_ADKEY1_0(x) ((IC_ADC10_30(x) + IC_ADC10_27(x))/2)
#define IC_ADKEY1_1(x) ((IC_ADC10_27(x) + IC_ADC10_23(x))/2)
#define IC_ADKEY1_2(x) ((IC_ADC10_23(x) + IC_ADC10_20(x))/2)
#define IC_ADKEY1_3(x) ((IC_ADC10_20(x) + IC_ADC10_17(x))/2)
#define IC_ADKEY1_4(x) ((IC_ADC10_17(x) + IC_ADC10_13(x))/2)
#define IC_ADKEY1_5(x) ((IC_ADC10_13(x) + IC_ADC10_10(x))/2)
#define IC_ADKEY1_6(x) ((IC_ADC10_10(x) + IC_ADC10_07(x))/2)
#define IC_ADKEY1_7(x) ((IC_ADC10_07(x) + IC_ADC10_04(x))/2)
#define IC_ADKEY1_8(x) ((IC_ADC10_04(x) + IC_ADC10_00(x))/2)u16 ad_rtcvdd_key_table[] = {
#if IC_R_UP
IC_ADKEY1_0(FULL_ADC), IC_ADKEY1_1(FULL_ADC), IC_ADKEY1_2(FULL_ADC), IC_ADKEY1_3(FULL_ADC),
IC_ADKEY1_4(FULL_ADC), IC_ADKEY1_5(FULL_ADC), IC_ADKEY1_6(FULL_ADC), IC_ADKEY1_7(FULL_ADC), IC_ADKEY1_8(FULL_ADC)
#else
ADKEY1_0(FULL_ADC), ADKEY1_1(FULL_ADC), ADKEY1_2(FULL_ADC), ADKEY1_3(FULL_ADC), ADKEY1_4(FULL_ADC),
ADKEY1_5(FULL_ADC), ADKEY1_6(FULL_ADC), ADKEY1_7(FULL_ADC), ADKEY1_8(FULL_ADC)
#endif
};volatile u8 adkey_lock_cnt = 0;
static u8 rtcvdd_cnt = 10;
static u8 rtcvdd_full_cnt = 0xff;
u16 rtcvdd_full_value = FULL_ADC;
u16 max_value = 0;
u16 min_value = 0xffff;
u32 total_value = 0;
static u8 check_rtcvdd_cnt = 0;static void set_rtcvdd_table(u16 adc_rtcvdd)
{
u16 rtcvdd;
rtcvdd = adc_rtcvdd;
#if IC_R_UP
ad_rtcvdd_key_table[0] = IC_ADKEY1_0(rtcvdd);
ad_rtcvdd_key_table[1] = IC_ADKEY1_1(rtcvdd);
ad_rtcvdd_key_table[2] = IC_ADKEY1_2(rtcvdd);
ad_rtcvdd_key_table[3] = IC_ADKEY1_3(rtcvdd);
ad_rtcvdd_key_table[4] = IC_ADKEY1_4(rtcvdd);
ad_rtcvdd_key_table[5] = IC_ADKEY1_5(rtcvdd);
ad_rtcvdd_key_table[6] = IC_ADKEY1_6(rtcvdd);
ad_rtcvdd_key_table[7] = IC_ADKEY1_7(rtcvdd);
ad_rtcvdd_key_table[8] = IC_ADKEY1_8(rtcvdd);
#else
ad_rtcvdd_key_table[0] = ADKEY1_0(rtcvdd);
ad_rtcvdd_key_table[1] = ADKEY1_1(rtcvdd);
ad_rtcvdd_key_table[2] = ADKEY1_2(rtcvdd);
ad_rtcvdd_key_table[3] = ADKEY1_3(rtcvdd);
ad_rtcvdd_key_table[4] = ADKEY1_4(rtcvdd);
ad_rtcvdd_key_table[5] = ADKEY1_5(rtcvdd);
ad_rtcvdd_key_table[6] = ADKEY1_6(rtcvdd);
ad_rtcvdd_key_table[7] = ADKEY1_7(rtcvdd);
ad_rtcvdd_key_table[8] = ADKEY1_8(rtcvdd);
#endif
Проверил - работает, тут две отдельных таблицы с ADC уровнями для внешнего резистора RTCVDD и внутреннего для RTCVDD.
Для внешнего - обычные верхние номиналы ADKEY точно как для VDDIO , и нижняя таблица для внутреннего резистора для RTCVDD - IC_ADKEY.
Просто замени и все должно заработать, я проверил номиналы - работает.
Вот для ориентировки в TASK номиналы 
USMicro® 2026©
47 и 20 кОм)))?
IC_ADC это под внутренний резистор получается?
Ага, чекай сообщение выше, там нужно добавить не только дефайны.
USMicro® 2026©
Ага, чекай сообщение выше, там нужно добавить не только дефайны.
Хорошо, сейчас попробую.
Вот так вот и доделывай после китайцев)
Нужно обязательно добавить в чендж лог)
Я веду его, по мере дописывания и доделывания сдк, + тесты...
У меня свой сдк, 2.6.4 назвал, там много чего пофиксил, много добавил, разные дисплеи и тд)
Вот кусок моего кфг(не совместим с ориг сдк)
/*** SDK Descripton *************************************************************
* SDK Project : NEW SDK
* SDK Ver & Patch : AC692x_SDK_V2.6.4
* MODIFY DATE & TIME : 02:56 30/03/2023 BY BIOS (mail.scmc.tech@gmail.com)
* SDK INFO : sdk_description.txt
* Notice : CHEK UPDATES.TXT
*********************************************************************************/
#ifndef _CONFIG_
#define _CONFIG_
#include "includes.h"
#include "sdk_const_define.h"
#include "bluetooth/bluetooth_api.h" ///可选配置:0(普通音箱)/BT_TWS_TRANSMIT(对箱使能)/*** UART & DEBUG ***************************************************************/
///#define __DEBUG
#ifdef __DEBUG
///#define DEBUG_UART_SEL UART0_TXPA5_RXPA6
///#define DEBUG_UART_SEL UART0_TXPB5_RXPA0
///#define DEBUG_UART_SEL UART0_TXPC2_RXPC3
///#define DEBUG_UART_SEL UART0_TXPA7_RXPA8
///#define DEBUG_UART_SEL UART1_TXPB0_RXPB1
///#define DEBUG_UART_SEL UART1_TXPC0_RXPC1
///#define DEBUG_UART_SEL UART1_TXPA1_RXPA2
///#define DEBUG_UART_SEL UART1_USB_TXDP_RXDM
///#define DEBUG_UART_SEL UART2_TXPA3_RXPA4
///#define DEBUG_UART_SEL UART2_TXPA9_RXPA10
///#define DEBUG_UART_SEL UART2_TXPB2_RXPB3
#define DEBUG_UART_SEL UART2_TXPC4_RXPC5
#define DEBUG_UART_RATE 115200 //115200
#define log_printf printf
#else
#define log_printf(...)
#endif
#define EQ_UART_DEBUG 0//EQ 串口在线调试使能
#define EQ_DEBUG_UART_SEL UART1_TXPB0_RXPB1 //EQ_UART_DEBUG 为1时有效//在线调EQ 串口选则.可选:UART1_TXPB0_RXPB1 / UART1_USB_TXDP_RXDM
#define EQ_DEBUG_UART_RATE 9600//<变速变调
#define UART_UPDATA_EN 0
/********************************************************************************//*** POWER CFG ******************************************************************/
#define SYS_LVD_EN 0 /// SET LVL IN POWER.C
#define POWER_EXTERN_DETECT_EN 0 /// External voltage and electricity detection, generally used for cigarette lighter to collect vehicle battery voltage
#define PWR_MODE_SELECT PWR_LDO15 ///PWR_NO_CHANGE / PWR_LDO15 / PWR_DCDC15
#define AUTO_SHUT_DOWN_TIME 0 ///((3*60* 2)/2+10) //Divide by 2 and subtract the time to enter low power consumption. ///Bluetooth automatic shutdown timing without connection, u16 type, 0 means no automatic shutdown
#define KEY_DOUBLE_CLICK 0 ///<Button double-click function
#define SWITCH_PWR_CONFIG 0 ///<电池电量低,是否切换电源输出配置
#define SYS_VDDIO_LEVEL 0 ///vddio:0(3.4v),1(3.2v),2(3.0v),3(2.8v),4(2.6v),5(2.4v),6(2.2v),7(2.0v)
#define SYS_RTCVDD_LEVEL 0
#define SYS_LDO_REDUCE_LEVEL 1
///#define FM_LDO_REDUCE_LEVEL 2
#define LOW_POWER_NOISE_DEAL 0 ///Noise floor processing at low power, this problem exists in the package where VDDIO and HPVDD are tied together
/********************************************************************************//*** CONTROLL *******************************************************************/
#define KEY_AD_RTCVDD_EN 1 ///<采用RTCVDD电源的AD按键使能/*按键类型定义*/
#define KEY_AD_VDDIO_EN 0 ///<采用VDDIO电源的AD按键使能
#define KEY_IO_EN 0 ///<IO按键使能
#define KEY_IR_EN 1 ///<红外遥控使能,PA9
#define KEY_TCH_EN 0 ///<触摸按键使能
#define KEY_UART_EN 0 ///<串口按键使能
#define KEY_ENCODER_EN 0 ///<旋转编码器使能
/********************************************************************************//*** SD USB *************************** DAT_CMD_CLK) ***************************/
#define SDMMC0_IO_A_EN 0//CHIP:PA5_PA6_PA7 FPGA:PO5_PO6_PO7
#define SDMMC0_IO_B_EN 0//CHIP:PB3_PB4_PB5 FPGA:PP3_PP4_PP5
#define SDMMC1_IO_A_EN 0//CHIP:PC3_PC4_PC5 FPGA:PQ3_PQ4_PQ5
#define SDMMC1_IO_B_EN 0//CHIP:PB0_PB1_PB2 FPGA:PP0_PP1_PP2
#define USB_DISK_EN 1
#define USB_PC_EN 0
#define POWERUP_DEV_IGNORE 1//0= POWER UP AND CONNECT TO PC OR SD CARD PLAY 1 - JUST POWER UP
#define DEV_POWER_OFF_EN 0//不使用设备的任务是否需要关闭设备,开启要考虑设备兼容性
#define USB_SD0_MULT_EN 0//<需要测试兼容性//usb_sd引脚复用,需要测试兼容性
#define USB_SD1_MULT_EN 0//<需要测试兼容性
#define ADKEY_SD_MULT_EN 0//0 不复用 1 复用sd0 2 复用sd1//adkey 和 sd 复用,需要测试兼容性,注意:ADKEY分压较低的电阻值不能用,会对SD卡造成影响,请确保分压大于1.8V以上
/********************************************************************************//*** UI *************************************************************************/
#define LED_EN 1///<LED指示使能
#define UI_ENABLE 0
#if (UI_ENABLE == 1)
#define UI_SEL_BY_RES_EN 0
#define LED_7_EN 0
#define LED_1888_EN 0
#define LCD_128X64_EN 1
#else
#define LED_7_EN 0
#define LED_1888_EN 0
#define LCD_128X64_EN 0
#endif
/********************************************************************************//**** SELECT LCD_128X64 TYPE ****************************************************/
#if (LCD_128X64_EN == 1)
#define LCD_ST7565_EN 0 ///ST7565 IC
#define OLED_SH1106_EN 0 ///SH1106 IC
#define OLED_SSD1306_EN 0 ///SSD1306 IC
#define OLED_SSD1309_EN 0 ///SSD1309 IC
#else
#define LCD_ST7565_EN 0
#define OLED_SH1106_EN 0
#define OLED_SSD1306_EN 0
#define OLED_SSD1309_EN 0
#endif
/********************************************************************************//*** DISLLAY_SET *****************************************************************************/
#if (LCD_128X64_EN == 1)
#define LCD_USE_BACKLIGHT 1 ///LCD BACKLIGHT
#define DISPLAY_MIRROR_X 0
#define DISPLAY_MIRROR_Y 0
#define DISPLAY_INVERSE 0 /// Inverse color
#define LRC_LYRICS_EN 0 ///LRC歌词显示
#else
#define LCD_USE_BACKLIGHT 0
#define DISPLAY_MIRROR_X 0
#define DISPLAY_MIRROR_Y 0
#define DISPLAY_INVERSE 0
#define LRC_LYRICS_EN 0
#endif
/********************************************************************************//*** CPU CLK ********************************************************************/
#define OSC_Hz 24000000L //fpga:12M / chip:24M//时钟配置 //more config in clock_interface.h
#define BT_CALL_Hz 160000000L //phone call clock
#define BT_REC_Hz 192000000L //bt rec clock
#if (EQ_RUN_SEL == EQ_RUN_SW || SPEED_PITCH_EN || ECHO_EN ) //Software EQ need Run 192M
#define MUSIC_DECODE_Hz 192000000L
#define SYS_Hz 192000000L //120000000L//96000000L
#else
#define MUSIC_DECODE_Hz 192000000L
#if BT_TWS
#define SYS_Hz 192000000L
#else
#define SYS_Hz 192000000L
#endif
#endif
/********************************************************************************/
Я в него вынес и выбор кнопок, и добавил разных дисплеев, и сразу норм конфиги выбора 1 из 4 пар портов сд карты, и всякие отражения , реверсы для дисплеев)\
Вообще не только конфиг правил, а многое, например дОделал SPI2 контроллер, а то в сдк его тупо не реализовали, сделал выбор пары SPI для дисплея) 3 провода и 5 провода и тд)
USMicro® 2026©
Вот так вот и доделывай после китайцев)
Нужно обязательно добавить в чендж лог)
Я веду его, по мере дописывания и доделывания сдк, + тесты...
У меня свой сдк, 2.6.4 назвал, там много чего пофиксил, много добавил, разные дисплеи и тд)
Вот кусок моего кфг(не совместим с ориг сдк)Я в него вынес и выбор кнопок, и добавил разных дисплеев, и сразу норм конфиги выбора 1 из 4 пар портов сд карты, и всякие отражения , реверсы для дисплеев)\
Вообще не только конфиг правил, а многое, например дОделал SPI2 контроллер, а то в сдк его тупо не реализовали, сделал выбор пары SPI для дисплея) 3 провода и 5 провода и тд)
Круто, что бы по всему СДК не лазить, удобно.
Ну что проверил?
USMicro® 2026©
Я теперь порт включить не могу, вроде выбрал, прошиваю и ноль, не реагирует не на что.
Сейчас разберусь, так как я включал, и уменя было так что перепутаны были кнопки именно две, наверно из за таблицы.
А с портом сейчас разберусь))) наверное.
Спасибо тебе большое, который раз помог.
Отредактировано priradio585 (2023-04-30 02:44:41)
Скачай тот сдк что мне скинул, и просто поправь код для RTCVDD из моего примера, у тебя в таск файле для музыки - 0 ом - плей пауза. Только что так сделал - работает.
USMicro® 2026©
Спасибо тебе большое, который раз помог.
Пожалуйста, самому интересно, я сам учусь работать с этим) . Вообще сначала не понятно, а мотом как поймешь).
USMicro® 2026©
| RTC | MCU, SoC, CPU Микроконтроллеры | 2023-09-20 |
| JL SoC. 杰理芯片 | MCU, SoC, CPU Микроконтроллеры | 2026-03-30 |
Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Вопросы по работе с JL SDK. Настройка, конфигурирование....