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

 
 
 
Reply to this topicStart new topic
> LPC824 keypad, LPC8xx написание клавиатуры
mane_nado
сообщение Feb 16 2016, 16:40
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 16-02-16
Пользователь №: 90 481



Доброго времени суток.
Я мало знаком со схемотехникой, но передо мной поставлена задача - написание 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
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Feb 18 2016, 18:09
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(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$ контроллера жаба душит )).


--------------------
Go to the top of the page
 
+Quote Post
sherr
сообщение Feb 18 2016, 18:44
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



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

Элитан - по 189р при заказе 10 шт в корпусе TSSOP-20 как хотели,

Сообщение отредактировал sherr - Feb 18 2016, 18:45
Go to the top of the page
 
+Quote Post
mane_nado
сообщение Feb 18 2016, 19:10
Сообщение #4





Группа: Участник
Сообщений: 11
Регистрация: 16-02-16
Пользователь №: 90 481



Я настроил один пин на прерывание если на входе у него будет 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- что это такое ?
Go to the top of the page
 
+Quote Post

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

 


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


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