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
This commit is contained in:
Jacob Alexander 2013-01-26 15:05:28 -05:00
parent b368b13240
commit 14158009b2
28 changed files with 323 additions and 700 deletions

55
main.c
View file

@ -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 @@ volatile uint8_t sendKeypresses = 0;
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 @@ inline void pinSetup(void)
PORTD = 0x00;
PORTE = 0x00;
PORTF = 0x00;
// ARM
#elif defined(_mk20dx128_)
// TODO
#endif
}
int main(void)
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)
{
// Configuring Pins
pinSetup();
init_errorLED();
@ -98,10 +126,7 @@ int main(void)
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 @@ int main(void)
}
}
// 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 @@ ISR( TIMER0_OVF_vect )
}
}
// ARM - USB Keyboard Data Send Counter Interrupt
#elif defined(_mk20dx128_)
// TODO
#endif