Вобщем я застопорился на UART.
Ситуация такая:
Файл adl_fcm.h
Цитата
// Old constants for compatibility
#define ADL_FCM_FLOW_GSM_DATA ADL_PORT_GSM_BASE
#define ADL_FCM_FLOW_GPRS ADL_PORT_GPRS_BASE
#define ADL_FCM_FLOW_V24_UART1 ADL_PORT_UART1
#define ADL_FCM_FLOW_V24_UART2 ADL_PORT_UART2
#define ADL_FCM_FLOW_V24_USB ADL_PORT_USB
// Flow subscribed as slave only
#define ADL_FCM_FLOW_SLAVE 0x8000
// Constants for compatibility
#define ADL_FCM_FLOW_V24_MASTER ADL_FCM_FLOW_V24_UART1
#define ADL_FCM_FLOW_V24 ( ADL_FCM_FLOW_V24_UART1 | ADL_FCM_FLOW_SLAVE )
При таком определении
UART1_handle=adl_fcmSubscribe ( ADL_FCM_FLOW_V24_MASTER,(adl_fcmCtrlHdlr_f) UART1_ctrl(adl_fcmDataHdlr_f)UART1_data );
У меня зависает, лог такой:
Код
* My program step 1 * - Wait for step 1
SIM state: 3 - SIM Full Init done
* My program step 15 *
OPEN UART2
Handle UART2 return value: 0
UART1_ctrl: 0 ----- завис всё
Дальше идет перезагрузка и приложение выполняется сначала опять до этого этапа.
Т.е. как я понимаю у меня не открывается UART1.
Если же поставить UART2, т.е.
UART1_handle=adl_fcmSubscribe (ADL_FCM_FLOW_V24_UART2,(adl_fcmCtrlHdlr_f) UART1_ctrl, (adl_fcmDataHdlr_f)UART1_data );
То приложение проходит нормально:
Код
* My program step 1 * - Wait for step 1
SIM state: 3 - SIM Full Init done
* My program step 15 *
OPEN UART2
Handle UART2 return value: 0
UART1_ctrl: 0 - ADL_FCM_EVENT_FLOW_OPENNED
UART1_ctrl: 2 - ADL_FCM_EVENT_V24_DATA_MODE
* My program step 2 *
AT+CREG?
CGREG - 0
...
Но дальше при отправке через UART2 у меня ничего не выводится в терминал.
Если запустить такой код
Код
wip_debug("\n OPA");
adl_fcmSendData (UART1_handle,"Data",4);
То в терминале появится
Код
OPA
UART1_ctrl: 7 - ADL_FCM_EVENT_MEM_RELEASE
Data не выводится.
При выполнении в функции
Цитата
void UART1_write(void)
{ s8 res;
wip_debug("\nWrite to UART2");
res=adl_fcmSendData (UART1_handle,"\r\nInstalling application...\r\n", 29);
wip_debug("\nwrite to UART2: %i",res);
switch (res)
{ case OK: {wip_debug(" - OK");}; break;
case ADL_FCM_EVENT_MEM_RELEASE: {wip_debug(" - ADL_FCM_EVENT_MEM_RELEASE");}; break;
case ADL_FCM_RET_OK_WAIT_RESUME: {wip_debug(" - ADL_FCM_RET_OK_WAIT_RESUME");}; break;
case ADL_RET_ERR_PARAM: {wip_debug(" - ADL_RET_ERR_PARAM");}; break;
case ADL_RET_ERR_UNKNOWN_HDL: {wip_debug(" - ADL_RET_ERR_UNKNOWN_HDL");}; break;
case ADL_RET_ERR_BAD_STATE: {wip_debug(" - ADL_RET_ERR_BAD_STATE");}; break;
case ADL_FCM_RET_ERR_WAIT_RESUME: {wip_debug(" - ADL_FCM_RET_ERR_WAIT_RESUME");};break;
};
};
Лог такой:
Код
Write to UART2
write to UART2: 0 - OK
UART1_ctrl: 7 - ADL_FCM_EVENT_MEM_RELEASE
Т.е. пишет что вроде всё нормально, но информация же должна показыватся в терминале?
Кто может чем помочь. Почему зависает первый UART и работает второй?
Почему не выводится данные в терминал а вместо этого UART1_ctrl: 7 - ADL_FCM_EVENT_MEM_RELEASE?
Может с этим надо что делать AT+WMFM=...?
И если я что ввожу из терминала то должна по идеи выполнятся функция UART1_data? Она не выполняется совсем.