c8b4baf652
- CDC Output seems to be working - USB Keyboard output has not been tested, but is "ready" - UART and Timers have not been tested, or fully utilized - Issues using Timer 0 - Initial template for MBC-55X Scan module (only module currently compatible with the arm build) - Updated the interface to the AVR usb module for symmetry with the ARM usb module - Much gutting was done to the Teensy 3 usb keyboard module, though not in an ideal state yet
38 lines
751 B
C
38 lines
751 B
C
|
|
#include "delay.h"
|
|
#include "mk20dx128.h"
|
|
|
|
// the systick interrupt is supposed to increment this at 1 kHz rate
|
|
volatile uint32_t systick_millis_count = 0;
|
|
|
|
void yield(void) {};
|
|
|
|
uint32_t micros(void)
|
|
{
|
|
uint32_t count, current, istatus;
|
|
|
|
__disable_irq();
|
|
current = SYST_CVR;
|
|
count = systick_millis_count;
|
|
istatus = SCB_ICSR; // bit 26 indicates if systick exception pending
|
|
__enable_irq();
|
|
if ((istatus & SCB_ICSR_PENDSTSET) && current > ((F_CPU / 1000) - 50)) count++;
|
|
current = ((F_CPU / 1000) - 1) - current;
|
|
return count * 1000 + current / (F_CPU / 1000000);
|
|
}
|
|
|
|
void delay(uint32_t ms)
|
|
{
|
|
uint32_t start = micros();
|
|
|
|
while (1) {
|
|
if ((micros() - start) >= 1000) {
|
|
ms--;
|
|
if (ms == 0) break;
|
|
start += 1000;
|
|
}
|
|
yield();
|
|
}
|
|
}
|
|
|