Removing USB timer, no longer necessary.
This commit is contained in:
		
							parent
							
								
									97b514a9d4
								
							
						
					
					
						commit
						ba984fff20
					
				
					 1 changed files with 1 additions and 92 deletions
				
			
		
							
								
								
									
										93
									
								
								main.c
									
										
									
									
									
								
							
							
						
						
									
										93
									
								
								main.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -35,67 +35,8 @@
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ----- Defines -----
 | 
			
		||||
 | 
			
		||||
// Verified Keypress Defines
 | 
			
		||||
#define USB_TRANSFER_DIVIDER 10 // 1024 == 1 Send of keypresses per second, 1 == 1 Send of keypresses per ~1 millisecond
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ----- Macros -----
 | 
			
		||||
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_)
 | 
			
		||||
#define CPU_PRESCALE(n)	(CLKPR = 0x80, CLKPR = (n))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ----- Variables -----
 | 
			
		||||
 | 
			
		||||
// Timer Interrupt for flagging a send of the sampled key detection data to the USB host
 | 
			
		||||
uint16_t sendKeypressCounter = 0;
 | 
			
		||||
 | 
			
		||||
// Flag generated by the timer interrupt
 | 
			
		||||
volatile uint8_t sendKeypresses = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ----- Functions -----
 | 
			
		||||
 | 
			
		||||
inline void usbTimerSetup()
 | 
			
		||||
{
 | 
			
		||||
// 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_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_)
 | 
			
		||||
	// 48 MHz clock by default
 | 
			
		||||
 | 
			
		||||
	// System Clock Gating Register Disable
 | 
			
		||||
	SIM_SCGC6 |= SIM_SCGC6_PIT;
 | 
			
		||||
 | 
			
		||||
	// Enable Timers
 | 
			
		||||
	PIT_MCR = 0x00;
 | 
			
		||||
 | 
			
		||||
	// Setup ISR Timer for flagging a kepress send to USB
 | 
			
		||||
	// 1 ms / (1 / 48 MHz) - 1 = 47999 cycles -> 0xBB7F
 | 
			
		||||
	PIT_LDVAL0 = 0x0000BB7F;
 | 
			
		||||
	PIT_TCTRL0 = 0x3; // Enable Timer 0 interrupts, and Enable Timer 0
 | 
			
		||||
 | 
			
		||||
	// Insert the required vector for Timer 0
 | 
			
		||||
	NVIC_ENABLE_IRQ( IRQ_PIT_CH0 );
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int main()
 | 
			
		||||
{
 | 
			
		||||
	// Enable CLI
 | 
			
		||||
| 
						 | 
				
			
			@ -106,9 +47,6 @@ int main()
 | 
			
		|||
	Macro_setup();
 | 
			
		||||
	Scan_setup();
 | 
			
		||||
 | 
			
		||||
	// Setup ISR Timer for flagging a kepress send to USB
 | 
			
		||||
	usbTimerSetup();
 | 
			
		||||
 | 
			
		||||
	// Main Detection Loop
 | 
			
		||||
	while ( 1 )
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -124,37 +62,8 @@ int main()
 | 
			
		|||
		// Run Macros over Key Indices and convert to USB Keys
 | 
			
		||||
		Macro_process();
 | 
			
		||||
 | 
			
		||||
		// Send keypresses over USB if the ISR has signalled that it's time
 | 
			
		||||
		if ( !sendKeypresses )
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		// Send USB Data
 | 
			
		||||
		// Sends USB data only if changed
 | 
			
		||||
		Output_send();
 | 
			
		||||
 | 
			
		||||
		// Clear sendKeypresses Flag
 | 
			
		||||
		sendKeypresses = 0;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// ----- Interrupts -----
 | 
			
		||||
 | 
			
		||||
// USB Keyboard Data Send Counter Interrupt
 | 
			
		||||
#if defined(_at90usb162_) || defined(_atmega32u4_) || defined(_at90usb646_) || defined(_at90usb1286_) // AVR
 | 
			
		||||
ISR( TIMER0_OVF_vect )
 | 
			
		||||
#elif defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) // ARM
 | 
			
		||||
void pit0_isr()
 | 
			
		||||
#endif
 | 
			
		||||
{
 | 
			
		||||
	sendKeypressCounter++;
 | 
			
		||||
	if ( sendKeypressCounter > USB_TRANSFER_DIVIDER ) {
 | 
			
		||||
		sendKeypressCounter = 0;
 | 
			
		||||
		sendKeypresses = 1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
#if defined(_mk20dx128_) || defined(_mk20dx128vlf5_) || defined(_mk20dx256_) // ARM
 | 
			
		||||
	// Clear the interrupt flag
 | 
			
		||||
	PIT_TFLG0 = 1;
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue