Mercurial > louis > kiibohd-controller
diff main.c @ 67:9ad7c1a28661
Preparing for Teensy 3 (ARM) integration, abstracting code hierarchy
- Abstracted USB Module
- Abstracted compiler specific includes for Scan, Macro, Debug, and USB modules
- Updated CMake build files to support changes
- Added abstractions necessary to main.c as well as a compiler specific include file
author | Jacob Alexander <triplehaata@gmail.com> |
---|---|
date | Sat, 26 Jan 2013 15:05:28 -0500 |
parents | d4552f24e4ad |
children | 23600aaa5e15 |
line wrap: on
line diff
--- a/main.c Sat Jan 26 04:34:33 2013 -0500 +++ b/main.c Sat Jan 26 15:05:28 2013 -0500 @@ -1,4 +1,4 @@ -/* Copyright (C) 2011 by Jacob Alexander +/* Copyright (C) 2011-2013 by Jacob Alexander * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -21,9 +21,8 @@ // ----- Includes ----- -// AVR Includes -#include <avr/io.h> -#include <avr/interrupt.h> +// Compiler Includes +#include <Lib/MainLib.h> // Project Includes #include <macro.h> @@ -43,7 +42,9 @@ // ----- Macros ----- +#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) +#endif @@ -63,6 +64,9 @@ inline void pinSetup(void) { +// AVR +#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) + // For each pin, 0=input, 1=output #if defined(__AVR_AT90USB1286__) DDRA = 0x00; @@ -83,13 +87,37 @@ PORTD = 0x00; PORTE = 0x00; PORTF = 0x00; + +// ARM +#elif defined(_mk20dx128_) + // TODO +#endif } + +inline void usbTimerSetup(void) +{ +// AVR +#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) + + // Setup with 16 MHz clock + CPU_PRESCALE( 0 ); + + // Setup ISR Timer for flagging a kepress send to USB + // Set to 256 * 1024 (8 bit timer with Clock/1024 prescalar) timer + TCCR0A = 0x00; + TCCR0B = 0x03; + TIMSK0 = (1 << TOIE0); + +// ARM +#elif defined(_mk20dx128_) + // TODO +#endif +} + + int main(void) { - // Setup with 16 MHz clock - CPU_PRESCALE( 0 ); - // Configuring Pins pinSetup(); init_errorLED(); @@ -98,10 +126,7 @@ usb_setup(); // Setup ISR Timer for flagging a kepress send to USB - // Set to 256 * 1024 (8 bit timer with Clock/1024 prescalar) timer - TCCR0A = 0x00; - TCCR0B = 0x03; - TIMSK0 = (1 << TOIE0); + usbTimerSetup(); // Main Detection Loop uint8_t ledTimer = 15; // Enable LED for a short time @@ -146,7 +171,12 @@ } } -// USB Keyboard Data Send Counter Interrupt + +// ----- Interrupts ----- + +// AVR - USB Keyboard Data Send Counter Interrupt +#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) + ISR( TIMER0_OVF_vect ) { sendKeypressCounter++; @@ -156,3 +186,8 @@ } } +// ARM - USB Keyboard Data Send Counter Interrupt +#elif defined(_mk20dx128_) + // TODO +#endif +