Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: GPIO Read(), ReadSingle()
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
kav
Здравствуйте.
У кого есть опыт работы с GPIO? Меня интересует как считать уровень с конкретного GPIO.
Командами AT я знаю как это сделать и это получается, а как это сделать в приложении, которое будет крутиться в Wavecom, что-то смутно представляю.
В хелпах сказано что это можно сделать через Read() и ReadSingle().
Но, на практике, при использовании этих функций, выдаются ошибки, с которыми очень тяжело разобраться.
Есть ли у кого-нибудь примеры, поделитесь пожалуйста.
Пытались разобраться с примером в OpenAT,под названием Telemetry, но там как раз нет того, что нам надо.
Заранее всем благодарны.
vasku
примерчик проверки состояния

Fastrack Supreme 20 R71
wmadl_6.01.07.0.0
----
CODE
#define GPIO_IN_PIN ADL_IO_GPIO|22

// конфигурация пина ожидания данных
adl_ioDefs_t GpioInConfig;
// пин ожидания данных
s32 GpioHandleIn;


void InitSensGpio(void)
{
GpioInConfig = GPIO_IN_PIN | ADL_IO_DIR_IN | ADL_IO_LEV_LOW;
GpioHandleIn = adl_ioSubscribe(1,&GpioInConfig,0,0,0);
if (GpioHandleIn < 0) {
/* error subscribe */
#ifdef __PTRACE__
wip_debug("InitSensGpio : error subscribe GpioHandleIn\n ---------- %d ---------- \n",GpioHandleIn);
#endif /*__PTRACE__*/
}
}
bool CanDo(void)
{
return (adl_ioReadSingle (GpioHandleIn, &GpioInConfig )==1);
}
void DisableSensGpio(void)
{
if (GpioHandleIn >= 0) adl_ioUnsubscribe(GpioHandleIn);
}

void main(void)
{
InitSensGpio();
...
if (CanDo()) {
//
}
...
DisableSensGpio();
}
kav
Спасибо вам, Vasku, за помощь, ваш пример мне очень помог и главное, вовремя.


Цитата(vasku @ Feb 19 2009, 13:04) *
примерчик проверки состояния

Fastrack Supreme 20 R71
wmadl_6.01.07.0.0
----
CODE
#define GPIO_IN_PIN ADL_IO_GPIO|22

// конфигурация пина ожидания данных
adl_ioDefs_t GpioInConfig;
// пин ожидания данных
s32 GpioHandleIn;


void InitSensGpio(void)
{
GpioInConfig = GPIO_IN_PIN | ADL_IO_DIR_IN | ADL_IO_LEV_LOW;
GpioHandleIn = adl_ioSubscribe(1,&GpioInConfig,0,0,0);
if (GpioHandleIn < 0) {
/* error subscribe */
#ifdef __PTRACE__
wip_debug("InitSensGpio : error subscribe GpioHandleIn\n ---------- %d ---------- \n",GpioHandleIn);
#endif /*__PTRACE__*/
}
}
bool CanDo(void)
{
return (adl_ioReadSingle (GpioHandleIn, &GpioInConfig )==1);
}
void DisableSensGpio(void)
{
if (GpioHandleIn >= 0) adl_ioUnsubscribe(GpioHandleIn);
}

void main(void)
{
InitSensGpio();
...
if (CanDo()) {
//
}
...
DisableSensGpio();
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.