diff options
author | tmk <nobody@nowhere> | 2010-08-10 13:45:28 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2010-08-10 13:45:28 +0900 |
commit | 20711b59e7b72d0a1875c3d38832fade6f56445d (patch) | |
tree | 5dfd01de9cb8db2641c443ffb7c02e247caddaca /example.c | |
parent | ac3134ffeb3a2fb998e628e97a06b413fba8ee48 (diff) |
change file name.
Diffstat (limited to 'example.c')
-rw-r--r-- | example.c | 137 |
1 files changed, 0 insertions, 137 deletions
diff --git a/example.c b/example.c deleted file mode 100644 index 2433794eb7..0000000000 --- a/example.c +++ /dev/null @@ -1,137 +0,0 @@ -/* Keyboard example with debug channel, for Teensy USB Development Board - * http://www.pjrc.com/teensy/usb_keyboard.html - * Copyright (c) 2008 PJRC.COM, LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include <avr/io.h> -#include <avr/pgmspace.h> -#include <avr/interrupt.h> -#include <util/delay.h> -#include "usb_keyboard_debug.h" -#include "print.h" - -#define LED_CONFIG (DDRD |= (1<<6)) -#define LED_ON (PORTD &= ~(1<<6)) -#define LED_OFF (PORTD |= (1<<6)) -#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) - -uint8_t number_keys[10]= - {KEY_0,KEY_1,KEY_2,KEY_3,KEY_4,KEY_5,KEY_6,KEY_7,KEY_8,KEY_9}; - -uint16_t idle_count=0; - -int main(void) -{ - uint8_t b, d, mask, i, reset_idle; - uint8_t b_prev=0xFF, d_prev=0xFF; - - // set for 16 MHz clock - CPU_PRESCALE(0); - - // Configure all port B and port D pins as inputs with pullup resistors. - // See the "Using I/O Pins" page for details. - // http://www.pjrc.com/teensy/pins.html - DDRD = 0x00; - DDRB = 0x00; - PORTB = 0xFF; - PORTD = 0xFF; - - // Initialize the USB, and then wait for the host to set configuration. - // If the Teensy is powered without a PC connected to the USB port, - // this will wait forever. - usb_init(); - while (!usb_configured()) /* wait */ ; - - // Wait an extra second for the PC's operating system to load drivers - // and do whatever it does to actually be ready for input - _delay_ms(1000); - - // Configure timer 0 to generate a timer overflow interrupt every - // 256*1024 clock cycles, or approx 61 Hz when using 16 MHz clock - // This demonstrates how to use interrupts to implement a simple - // inactivity timeout. - TCCR0A = 0x00; - TCCR0B = 0x05; - TIMSK0 = (1<<TOIE0); - - print("Begin keyboard example program\n"); - print("All Port B or Port D pins are inputs with pullup resistors.\n"); - print("Any connection to ground on Port B or D pins will result in\n"); - print("keystrokes sent to the PC (and debug messages here).\n"); - while (1) { - // read all port B and port D pins - b = PINB; - d = PIND; - // check if any pins are low, but were high previously - mask = 1; - reset_idle = 0; - for (i=0; i<8; i++) { - if (((b & mask) == 0) && (b_prev & mask) != 0) { - usb_keyboard_press(KEY_B, KEY_SHIFT); - usb_keyboard_press(number_keys[i], 0); - print("Port B, bit "); - phex(i); - print("\n"); - reset_idle = 1; - } - if (((d & mask) == 0) && (d_prev & mask) != 0) { - usb_keyboard_press(KEY_D, KEY_SHIFT); - usb_keyboard_press(number_keys[i], 0); - print("Port D, bit "); - phex(i); - print("\n"); - reset_idle = 1; - } - mask = mask << 1; - } - // if any keypresses were detected, reset the idle counter - if (reset_idle) { - // variables shared with interrupt routines must be - // accessed carefully so the interrupt routine doesn't - // try to use the variable in the middle of our access - cli(); - idle_count = 0; - sei(); - } - // now the current pins will be the previous, and - // wait a short delay so we're not highly sensitive - // to mechanical "bounce". - b_prev = b; - d_prev = d; - _delay_ms(2); - } -} - -// This interrupt routine is run approx 61 times per second. -// A very simple inactivity timeout is implemented, where we -// will send a space character and print a message to the -// hid_listen debug message window. -ISR(TIMER0_OVF_vect) -{ - idle_count++; - if (idle_count > 61 * 8) { - idle_count = 0; - print("Timer Event :)\n"); - usb_keyboard_press(KEY_SPACE, 0); - } -} - - |