Изучение уязвимостей электронных систем.
 
key programming immo tools emergency start device программаторы ключа заводилки Кодграббер штатных охранных систем, toyota, lexus, subaru.

Вернуться   Изучение уязвимостей электронных систем > Для начинающих > Программирование микроконтроллеров

Программирование микроконтроллеров Темы касающиеся программированию микроконтроллеров разных производителей.

Ответ
 
Опции темы
Старый 03.06.2009, 14:09   #1
СергейPiven
случайно влез
 
Регистрация: 30.04.2007
Сообщений: 23
Поблагодарил: 0
Поблагодарили 2 раз в 2 сообщениях
СергейPiven стоит на развилке
Восклицание Keypad

доброго времени суток! Помогите с подключением клавиатурной матрицы 4х3.
Пишу на С софт для клавиатурной матрицы, Железо Атин2313+4х3кейпад+i2c eeprom
поделитесь исходниками, примерами или готовыми библиотеками для кейпада с функцией антидребезга.
Заранее благодарен!
СергейPiven вне форума   Ответить с цитированием
Старый 03.06.2009, 14:38   #2
exchange
фрикер
 
Аватар для exchange
 
Регистрация: 17.07.2006
Сообщений: 1,330
Поблагодарил: 0
Поблагодарили 445 раз в 68 сообщениях
exchange стоит на развилке
По умолчанию

функция антидребезга:
if (key==1){
delay_ms(200);
....
while(key==1);
}


НЕ ОТСТУПАЙ! НЕ СДАВАЙСЯ!
Не позволяй себе быть слабым - никогда!
Иди в отмах - сопротивляйся!
Гляди на мир в прицел - и нападай!

exchange вне форума   Ответить с цитированием
Старый 09.09.2009, 01:48   #3
Denlozikevic
случайно влез
 
Регистрация: 07.09.2009
Адрес: Belarus, Polock
Сообщений: 14
Поблагодарил: 0
Поблагодарили 2 раз в 2 сообщениях
Denlozikevic стоит на развилке
По умолчанию

delay_ms(200); - большая задержка, лучше их как можно меньше использовать.
вот ещё одно решение дребезга:

одиночное нажатие кнопки
if((PIND.0 == 0)&&(i==0))
{
i=1;
........
};
if((PIND.0!=0)&&(i==1))i=0;

удержание при нажатии (например кнопка "сохранение")

while(PIND.0==0)
{
delay_ms(5);
j++;
if(j==300)
{
........
j=0;
};
};
Denlozikevic вне форума   Ответить с цитированием
Старый 11.02.2010, 11:39   #4
sarsen
Заблокирован
 
Регистрация: 02.10.2009
Сообщений: 50
Поблагодарил: 7
Поблагодарили 1 раз в 1 сообщении
sarsen стоит на развилке
По умолчанию

нашёл на просторах инета, вроде то что надо. матрица кейпада 4х4.
Код:
#include <avr\io.h> 

typedef unsigned char  u8; 
typedef unsigned short u16; 
#define NOP();  asm volatile("nop"::); 


#define KEY_PIN         PINB 
#define KEY_PORT        PORTB 
#define KEY_DDR         DDRB 


u8 keyscan( void ) 
{ 
  u8 col = 0, row = 0; 

  KEY_PORT = 0xFF; 
  KEY_DDR = 0xF0; 
  KEY_PORT = 0x0F; 
  NOP();                        // wait until input stable 
  if( ~KEY_PIN & 1<<0 ) 
    col = 4; 
  if( ~KEY_PIN & 1<<1 ) 
    col = 3; 
  if( ~KEY_PIN & 1<<2 ) 
    col = 2; 
  if( ~KEY_PIN & 1<<3 ) 
    col = 1; 
  row = col; 
  if( col ){ 
    KEY_PORT = 0xFF; 
    KEY_DDR = 0x0F; 
    KEY_PORT = 0xF0; 
    NOP(); 
    if( ~KEY_PIN & 1<<4 ) 
      row = 5; 
    if( ~KEY_PIN & 1<<5 ) 
      row = 9; 
    if( ~KEY_PIN & 1<<6 ) 
      row = 13; 
    if( ~KEY_PIN & 1<<7 ) 
      row = 17; 
  }                             // 0 = no key 
  return row - col;             // 1..16 = key
Keypad connecting

| | | |
PD4 --|- -|- -|- -|--
PD5 --|- -|- -|- -|--
PD6 --|- -|- -|- -|--
PD7 --|- -|- -|- -|--
| | | |
PD0 PD1 PD2 PD3
до кучи =)
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]

Может у кого то схемка завалялась с логированием в eeprom нажатых клав?
sarsen вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Keypad 4x4 sevasss Пластиковые карты 9 31.03.2015 15:17


Текущее время: 18:32. Часовой пояс GMT +4.


Перевод: zCarot