реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> SIM800C EAT состояние выходов при старте/рестарте модуля
Ujin
сообщение Nov 29 2015, 15:00
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-07-07
Пользователь №: 28 863



Здравствуйте!

Делаю устройство на SIM800C с применением EAT. SIM800C управляет нагрузкой. И вот вылезла проблемка - у SIM800C при старте модуля некоторое время до инициализации ноги становятся в единицу и включают нагрузку. Причем время включения довольно существенное - секунды 3-4. Как это можно побороть?

Инициализирую выходы как в примерах:

Код
void app_func_ext1(void *data)
{
    /*This function can be called before Task running ,configure the GPIO,uart and etc.
       Only these api can be used:
         eat_uart_set_debug: set debug port
         eat_pin_set_mode: set GPIO mode
         eat_uart_set_at_port: set AT port
    */
    eat_uart_set_debug(EAT_UART_USB);
//    eat_uart_set_at_port(EAT_UART_USB);

    eat_sim_detect_en(EAT_FALSE);
    eat_pin_set_mode(EAT_PIN3_UART1_RTS, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN4_UART1_CTS, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN5_UART1_DCD, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN6_UART1_DTR, EAT_PIN_MODE_EINT);
    eat_pin_set_mode(EAT_PIN7_UART1_RI, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN14_SIM_DET, EAT_PIN_MODE_EINT);
    eat_pin_set_mode(EAT_PIN42_STATUS, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN1_UART1_TXD, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN2_UART1_RXD, EAT_PIN_MODE_GPIO);
    eat_pin_set_mode(EAT_PIN7_UART1_RI, EAT_PIN_MODE_GPIO);
}


а затем в main перевожу в 0:

Код
void app_main(void *data)
{
    EatEvent_st event;
    EatUartConfig_st uart_config;
    int len = 0;
    EatEntryPara_st *para;
    
    APP_InitRegions();//Init app RAM, first step
    APP_init_clib(); //C library initialize, second step

    para = (EatEntryPara_st*)data;

    memcpy(&app_para, para, sizeof(EatEntryPara_st));
    eat_trace(" App Main ENTRY  update:%d result:%d", app_para.is_update_app,app_para.update_app_result);
    if(app_para.is_update_app && app_para.update_app_result)
    {
        eat_update_app_ok();
    }

    eat_gpio_setup(EAT_PIN3_UART1_RTS, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN4_UART1_CTS, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN5_UART1_DCD, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN6_UART1_DTR, EAT_GPIO_DIR_INPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN7_UART1_RI, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN14_SIM_DET, EAT_GPIO_DIR_INPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN42_STATUS, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN1_UART1_TXD, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN2_UART1_RXD, EAT_GPIO_DIR_INPUT, EAT_GPIO_LEVEL_LOW);
    eat_gpio_setup(EAT_PIN7_UART1_RI, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
    
    eat_gpio_write(OUT1, EAT_GPIO_LEVEL_LOW);
    eat_gpio_write(GPS_ON, EAT_GPIO_LEVEL_LOW);
    eat_gpio_write(GPS_RESET, EAT_GPIO_LEVEL_LOW);
    eat_gpio_write(LED_FX, EAT_GPIO_LEVEL_LOW);
    eat_gpio_write(LED_ER, EAT_GPIO_LEVEL_LOW);


Спасибо!
Go to the top of the page
 
+Quote Post
yooj
сообщение Dec 16 2015, 08:57
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 29-01-10
Из: Украина
Пользователь №: 55 147



Зробіть ось так:

CODE
static void app_func_ext1(void *data)
{

EatUartConfig_st cfg =
{
EAT_UART_BAUD_115200,
EAT_UART_DATA_BITS_8,
EAT_UART_STOP_BITS_1,
EAT_UART_PARITY_NONE
};

eat_uart_set_at_port(eat_uart_at);
eat_uart_set_debug(eat_uart_debug);
eat_uart_set_debug_config(EAT_UART_DEBUG_MODE_UART, &cfg);

eat_gpio_setup(EAT_PIN22_UART2_TXD, EAT_GPIO_DIR_OUTPUT, EAT_GPIO_LEVEL_LOW);
eat_gpio_write(EAT_PIN22_UART2_TXD, EAT_GPIO_LEVEL_LOW);
}

в мене така ініціалізація видає Log1 на EAT_PIN22_UART2_TXD десь на 1-2мс

Flowchart запуску модулю:
RESET -> bootloader -> hardware init -> eat app_func_ext -> system init -> system task run -> eat tasks run

але деякі виводи, наприклад NetLight та Status, нажаль, дійсно перебувають під контролем модулю значно довше

Сообщение отредактировал yooj - Dec 16 2015, 09:01
Go to the top of the page
 
+Quote Post
yooj
сообщение Dec 16 2015, 12:26
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 29-01-10
Из: Украина
Пользователь №: 55 147



Цитата(yooj @ Dec 16 2015, 11:57) *
але деякі виводи, наприклад NetLight та Status, нажаль, дійсно перебувають під контролем модулю значно довше


"Значно довше" під контролем модуля перебувають такі віводи:

NETLIGHT
STATUS
EAT_PIN3_UART1_RTS
EAT_PIN4_UART1_CTS
EAT_PIN14_SIM_DET

Але NetLight можна повернути під контроль користувача командою "AT+CNETLIGHT=0"
тобто запускаєте модуль, вводите
AT+CNETLIGHT=0
AT&W

й наступного разу модуль не буде блимати NETLIGHT після Reset
Go to the top of the page
 
+Quote Post
Ujin
сообщение Dec 16 2015, 14:29
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-07-07
Пользователь №: 28 863



Цитата(yooj @ Dec 16 2015, 15:26) *
"Значно довше" під контролем модуля перебувають такі віводи:

NETLIGHT
STATUS
EAT_PIN3_UART1_RTS
EAT_PIN4_UART1_CTS
EAT_PIN14_SIM_DET

Але NetLight можна повернути під контроль користувача командою "AT+CNETLIGHT=0"
тобто запускаєте модуль, вводите
AT+CNETLIGHT=0
AT&W

й наступного разу модуль не буде блимати NETLIGHT після Reset


Здравствуйте!

Проблема в том что выход нужно установить не в 0, а так как было до сброса, а для этого надо из флеша вытянуть запомненные значения, а это можно сделать только в main-е.
Я проблему решил установкой внешнего контроллера, который выходами управляет, и к тому же следит за "здоровьем" SIM800-го и в случае чего его выключает-включает. Вот для общения с эти контроллером мне и нужен был второй пользовательский UART. SIM800 раз в секунду сбрасывает во внешний контроллер нужное состояние выходов, а контроллер если ничего не видит от SIM800-го определенное время, то выключает-включает его.
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Dec 16 2015, 14:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



>>>>SIM800 раз в секунду сбрасывает во внешний контроллер нужное состояние выходов

А с какой частотой вы во флешке изменяете значения для выводов?
Не в процессе работы - а именно сохраняете их во флеше.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Ujin
сообщение Dec 16 2015, 14:47
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-07-07
Пользователь №: 28 863



Цитата(CADiLO @ Dec 16 2015, 17:34) *
>>>>SIM800 раз в секунду сбрасывает во внешний контроллер нужное состояние выходов

А с какой частотой вы во флешке изменяете значения для выводов?
Не в процессе работы - а именно сохраняете их во флеше.

Здравствуйте,

Как приходит команда на изменение состояния выхода от пользователя - это я думаю будет нечасто.
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Dec 16 2015, 14:54
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Просто ресурс флеши 100000 перезаписей. Циклического буфера на 8 сдвигов как было в SIM900 в 800-й серии нет.
Так что считайте сколько записей сможете сделать и за какое время убъете флеш.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Ujin
сообщение Dec 16 2015, 15:12
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-07-07
Пользователь №: 28 863



Цитата(CADiLO @ Dec 16 2015, 17:54) *
Просто ресурс флеши 100000 перезаписей. Циклического буфера на 8 сдвигов как было в SIM900 в 800-й серии нет.
Так что считайте сколько записей сможете сделать и за какое время убъете флеш.

Лет на 5-7 по всякому должно хватить, а я пишу в файл в файловой системе модуля, там нету контроллера который бы следил за состоянием ячеек и метил их как битые и перебрасывал данные на свежие, как в USB-флешках?
Go to the top of the page
 
+Quote Post
RadikX
сообщение Dec 17 2015, 03:32
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 13-04-11
Из: Суровый Челябинск
Пользователь №: 64 337



Цитата(CADiLO @ Dec 16 2015, 18:54) *
Просто ресурс флеши 100000 перезаписей. Циклического буфера на 8 сдвигов как было в SIM900 в 800-й серии нет.
Так что считайте сколько записей сможете сделать и за какое время убъете флеш.


Это у всей 800-й серии так? И что такое "циклический буфер на 8 сдвигов"? Это в 900-й серии на каждую ячейку в памяти приходилось по 7 "запасных"?
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Dec 17 2015, 05:14
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



>>> там нету контроллера который бы следил за состоянием ячеек и метил их как битые и перебрасывал данные на свежие, как в USB-флешках?

Конечно нету - вы забываете что основная функция модуля это связь. Все остальное с барского плеча или по "просьбе трудящихся" на их страх и риск.

В 900-й серии блок системных переменных каждый раз писался на другое место - и так по циклу 8 раз. То есть на первое место он попадал после 8 записей.
Поэтому все сохраняемые параметры команд могли быть перезаписаны 100Кх8 раз. Благо место позволяло. И то народ умудрялся убивать флеш за пару месяцев.
Для файловой системы в 900 - оставалось такое же ограничение - 100К записей.

В 800 серии память в чипсете, а не внешняя, поэтому ее там 24 или 32М и никак не более. А значит с местом малость напряг.
Добавить память можно только в модулях SIM800 и SIM800F, там есть место куда поставить внешний чип. В мелких модулях - нет.



--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
mantech
сообщение Dec 17 2015, 15:31
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(CADiLO @ Dec 17 2015, 08:14) *
В 800 серии память в чипсете, а не внешняя, поэтому ее там 24 или 32М и никак не более.


Это мегабайт или мегабит?
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Dec 17 2015, 16:16
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Мегабит


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post
Ujin
сообщение Dec 18 2015, 10:04
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 3-07-07
Пользователь №: 28 863



Цитата(CADiLO @ Dec 17 2015, 08:14) *
>>> там нету контроллера который бы следил за состоянием ячеек и метил их как битые и перебрасывал данные на свежие, как в USB-флешках?

Конечно нету - вы забываете что основная функция модуля это связь. Все остальное с барского плеча или по "просьбе трудящихся" на их страх и риск.

В 900-й серии блок системных переменных каждый раз писался на другое место - и так по циклу 8 раз. То есть на первое место он попадал после 8 записей.
Поэтому все сохраняемые параметры команд могли быть перезаписаны 100Кх8 раз. Благо место позволяло. И то народ умудрялся убивать флеш за пару месяцев.
Для файловой системы в 900 - оставалось такое же ограничение - 100К записей.

В 800 серии память в чипсете, а не внешняя, поэтому ее там 24 или 32М и никак не более. А значит с местом малость напряг.
Добавить память можно только в модулях SIM800 и SIM800F, там есть место куда поставить внешний чип. В мелких модулях - нет.


Думаю сделать в файле счетчик перезаписей, и как он будет достигать 100К заводить новый файл.
Go to the top of the page
 
+Quote Post
RadikX
сообщение Dec 18 2015, 10:08
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 13-04-11
Из: Суровый Челябинск
Пользователь №: 64 337



Цитата(CADiLO @ Dec 17 2015, 09:14) *
В 800 серии память в чипсете, а не внешняя, поэтому ее там 24 или 32М и никак не более


Это получается 3-4 Мбайта. А как же память для пользователя. Для amr-файлов?
Go to the top of the page
 
+Quote Post
CADiLO
сообщение Dec 18 2015, 10:57
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



>>>Думаю сделать в файле счетчик перезаписей, и как он будет достигать 100К заводить новый файл.

Заводить новый файл уже поздно будет - переступили гарантированый порог - далее хоть 500К записей но свой страх и риск.

>>>Это получается 3-4 Мбайта. А как же память для пользователя. Для amr-файлов?

Внешняя память, или 605К в версии 1418B01V01SIM800C32_BT_FS
Для "особ приближенных к императору" и c объемами - в 800С замена второго порта UART на SPI и внешняя память (EAT only)
Те кто юзал FS в SIM900R и нужна память, мы планируем модули SIM800F64 - народ практически не заметит перехода.
Мелочевка C + H - извините, но FS не обязаловка в модуле. Но под проект - "любой каприз"


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 18:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016