ÀÌ ¸Å´º¾óÀº JKÀüÀÚ(JK Electronics) ¿¡ ÀÇÇؼ­ ¹ø¿ª, ¼öÁ¤, ÀÛ¼º µÇ¾ú°í ¼ÒÀ¯±Ç ¶ÇÇÑ
JKÀüÀÚ(JK Electronics)
ÀÇ °ÍÀÔ´Ï´Ù. ¼ÒÀ¯±ÇÀÚÀÇ Çã°¡¸¦ ¹ÞÁö ¾Ê°í ¹«´ÜÀ¸·Î ¼öÁ¤, »èÁ¦Çϰųª ¹èÆ÷ ÇÒ ¼ö ¾ø½À´Ï´Ù.



 

KEY/BUTTON È®Àå 2*4 ¸ðµâ Atmega2560 Á¦¾î ¿¹Á¦


 
* Update history

- 2013.4.18 : Ãʱâ Release


  1. Atmega2560 Rabbit °³¹ßº¸µå¿Í ¿¬°á ½ÇÇè

(1) Atmega2560 Rabbit °³¹ßº¸µå¿Í ¾Æ·¡¿Í °°ÀÌ Port Group H ¿Í ¿¬°á ÇÕ´Ï´Ù.

Àü¿øÀº 3.3V/5V ¸ðµÎ »ç¿ë°¡´É ÇÕ´Ï´Ù.



(2) Á¦¾î ¼Ò½º(ATMEGA2560 Avrstudio 4.14 Build589 ÇÁ·ÎÁ§Æ® ¼Ò½º ´Ù¿î·Îµå )

Æú¸µ ¹æ½ÄÀ¸·Î KEY ÀÔ·ÂÀ» ¹Þ¾Æ¼­ UART·Î Ç¥½Ã¸¦ ÇÕ´Ï´Ù.



#include "hw_config.h"
#include "led.h"
#include "key.h"
#include "uart.h"

static volatile u16 s_key = 0;
static volatile u8 s_exit = 0;

void gpio_polling_key(void)
{
  s_exit = 0;

  while(!s_exit)
  {

    if( !inp(PINH, PH0) && !(s_key & KEY_KEY1) )
    {
      usart0_puts("Key1 Pressed.\r\n");
      s_key |= KEY_KEY1;
    }
    else if( inp(PINH, PH0) && (s_key & KEY_KEY1) )
    {
      usart0_puts("Key1 Released.\r\n");
      s_key &= ~KEY_KEY1;
    }

    if( !inp(PINH, PH1) && !(s_key & KEY_KEY2) )
    {
      usart0_puts("Key2 Pressed.\r\n");
      s_key |= KEY_KEY2;
    }
    else if( inp(PINH, PH1) && (s_key & KEY_KEY2) )
    {
      usart0_puts("Key2 Released.\r\n");
      s_key &= ~KEY_KEY2;
    }

    if( !inp(PINH, PH2) && !(s_key & KEY_KEY3) )
    {
      usart0_puts("Key3 Pressed.\r\n");
      s_key |= KEY_KEY3;
    }
    else if( inp(PINH, PH2) && (s_key & KEY_KEY3) )
    {
      usart0_puts("Key3 Released.\r\n");
      s_key &= ~KEY_KEY3;
    }

    if( !inp(PINH, PH3) && !(s_key & KEY_KEY4) )
    {
      usart0_puts("Key4 Pressed.\r\n");
      s_key |= KEY_KEY4;
    }
    else if( inp(PINH, PH3) && (s_key & KEY_KEY4) )
    {
      usart0_puts("Key4 Released.\r\n");
      s_key &= ~KEY_KEY4;
    }

    if( !inp(PINH, PH4) && !(s_key & KEY_KEY5) )
    {
      usart0_puts("Key5 Pressed.\r\n");
      s_key |= KEY_KEY5;
    }
    else if( inp(PINH, PH4) && (s_key & KEY_KEY5) )
    {
      usart0_puts("Key5 Released.\r\n");
      s_key &= ~KEY_KEY5;
    }

    if( !inp(PINH, PH5) && !(s_key & KEY_KEY6) )
    {
      usart0_puts("Key6 Pressed.\r\n");
      s_key |= KEY_KEY6;
    }
    else if( inp(PINH, PH5) && (s_key & KEY_KEY6) )
    {
      usart0_puts("Key6 Released.\r\n");
      s_key &= ~KEY_KEY6;
    }

    if( !inp(PINH, PH6) && !(s_key & KEY_KEY7) )
    {
      usart0_puts("Key7 Pressed.\r\n");
      s_key |= KEY_KEY7;
    }
    else if( inp(PINH, PH6) && (s_key & KEY_KEY7) )
    {
      usart0_puts("Key7 Released.\r\n");
      s_key &= ~KEY_KEY7;
    }

    if( !inp(PINH, PH7) && !(s_key & KEY_KEY8) )
    {
      usart0_puts("Key8 Pressed.\r\n");
      s_key |= KEY_KEY8;
    }
    else if( inp(PINH, PH7) && (s_key & KEY_KEY8) )
    {
      usart0_puts("Key8 Released.\r\n");
      s_key &= ~KEY_KEY8;
    }

    _delay_ms(20);
  }

}

void main(void)
{
  
  CLI();  // all interrupt disable

  bsp_usart0_gpio_init();
  bsp_usart0_init(F_CPU, EBaud115200, EData8, EParNone, EStop1, FALSE );  
  bsp_usart0_interrupt_enable();


  // set input
  cbi(DDRH, PH0);
  cbi(DDRH, PH1);
  cbi(DDRH, PH2);
  cbi(DDRH, PH3);
  cbi(DDRH, PH4);
  cbi(DDRH, PH5);
  cbi(DDRH, PH6);
  cbi(DDRH, PH7);

  gpio_polling_key();

  SEI();  // all interrupt enable



  while(1)
  {

  }

}