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
+