Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC824 keypad
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
mane_nado
Доброго времени суток.
Я мало знаком со схемотехникой, но передо мной поставлена задача - написание keypad для LPC824 контроллера
там 18 кнопок. 6 строк и 3 столбца
Для теста хочу обработать хотябы 1 кнопку. Первая строка это gpio 17 первый столбец это gpio 2 (Порт только один это порт 0)
Значит для 17 pin назначил DIR input значение 0
Для 2 pin назначил output значение 1
Код
while(1)
{
  read value pin 17
  if(value == 1)
{
         write to uart (button press)
   set value pin 17 = 0; //типо скинули
  }
}


Чет так не работает сколько не юлозел железкой по кнопке . GPIO_Init() есть
Есть еще там как я понял встроенный гистерезис для pin-а

Можно еще как то по прерываниию это сделать если есть примеры пришлите пожалуйста буду очень благодарен
Мне надо фиксировать нажатие отжатие
Пользуюсь IDE LPCXpresso и lib82_chip
SyncLair
Цитата(mane_nado @ Feb 16 2016, 20:40) *
Доброго времени суток.
Я мало знаком со схемотехникой, но передо мной поставлена задача - написание keypad для LPC824 контроллера
там 18 кнопок. 6 строк и 3 столбца
Для теста хочу обработать хотябы 1 кнопку. Первая строка это gpio 17 первый столбец это gpio 2 (Порт только один это порт 0)


А если же использовать старый добрый GPIO то вы просто сканируете эти столбцы -- сам дрыгаете ножками и смотрите данные на входе.
В качестве примеров использования рекомендую посмотреть его собрата -- LPC812 или LPC11u68 -- может там есть примеры. Почему рекомендую их потому что они вышли примерно в это же время и поэтому АПИ и аппаратная часть думаю похожи поэтому и код дёрганья ножками и примеры скорее тоже.


теперь по теме в контроллере есть умная штука - SCT -- умный счётчик -- которая может по входным сигналам вырабатывать прерывания и генерировать
различные меандры -- причём без участия процессора -- на выходах рекомендую посмореть видео на YOUTUBE --

Сорри за bb-offtopic.gif

Это очень интересный контроллер от NXP и паябельный корпус есть -- некий аналог по числу ножек и возможностяем meg-e
но к сожалению достать я его по приемлемой цене никак не смог ( цена его при заказе от 1000 шт что то в районе 2баксов или того меньше
а вот купить 10 штук в России я так ничего подходящего не нашёл. Я бы взял 812ый с Aliexpress но он без АЦП (. может подскажет кто.
Брать 30долларовый MAX824 из-за 2$ контроллера жаба душит )).
sherr
Цитата(SyncLair @ Feb 18 2016, 21:09) *
Это очень интересный контроллер от NXP и паябельный корпус есть -- некий аналог по числу ножек и возможностяем meg-e
но к сожалению достать я его по приемлемой цене никак не смог ( цена его при заказе от 1000 шт что то в районе 2баксов или того меньше
а вот купить 10 штук в России я так ничего подходящего не нашёл. Я бы взял 812ый с Aliexpress но он без АЦП (. может подскажет кто.
Брать 30долларовый MAX824 из-за 2$ контроллера жаба душит )).

Элитан - по 189р при заказе 10 шт в корпусе TSSOP-20 как хотели,
mane_nado
Я настроил один пин на прерывание если на входе у него будет 0 Далее в прерыании перебираю столбцы и смотрю все строки
Код
  
void PIN_INT0_IRQHandler(void)
{
    uint32_t k;
    k = Chip_PININT_GetIntStatus(LPC_PININT);
    if (k & PININTCH0)
    {
///my code
    }
}
//////////////////////////////////////////// settings pin and interrapt
            Chip_SYSCTL_SetPinInterrupt(0, 17);
    Chip_PININT_ClearIntStatus(LPC_PININT, PININTCH0);
    Chip_PININT_SetPinModeEdge(LPC_PININT, PININTCH0);
    Chip_PININT_EnableIntLow(LPC_PININT, PININTCH0);
    NVIC_EnableIRQ(PIN_INT0_IRQn);
/////////////////////////////////////////

Но таких pin-ов у меня 6. Я могу сделать 6 одинаковых прерываний, но как то это не по человечьи. Надо чтобы было 1 прерывание для всех pin-ов. Как это делается в микроконтроллерах, должна быть какаето группировка. В LPC824 есть механизм pattern match engine- что это такое ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.