12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include <avr/io.h>
- #include <avr/power.h>
- #include <avr/wdt.h>
- #include "lufa.h"
- #include "print.h"
- #include "sendchar.h"
-
-
- static void SetupHardware(void)
- {
- /* Disable watchdog if enabled by bootloader/fuses */
- MCUSR &= ~(1 << WDRF);
- wdt_disable();
-
- /* Disable clock division */
- clock_prescale_set(clock_div_1);
-
- // Leonardo needs. Without this USB device is not recognized.
- USB_Disable();
-
- USB_Init();
-
- // for Console_Task
- USB_Device_EnableSOFEvents();
- print_set_sendchar(sendchar);
- }
-
- int main(void) __attribute__ ((weak));
- int main(void)
- {
- SetupHardware();
- sei();
-
- /* wait for USB startup & debug output */
- while (USB_DeviceState != DEVICE_STATE_Configured) {
- #if defined(INTERRUPT_CONTROL_ENDPOINT)
- ;
- #else
- USB_USBTask();
- #endif
- }
- print("USB configured.\n");
-
- /* init modules */
- keyboard_init();
- host_set_driver(&lufa_driver);
- #ifdef SLEEP_LED_ENABLE
- sleep_led_init();
- #endif
-
- print("Keyboard start.\n");
- while (1) {
- while (USB_DeviceState == DEVICE_STATE_Suspended) {
- suspend_power_down();
- if (USB_Device_RemoteWakeupEnabled && suspend_wakeup_condition()) {
- USB_Device_SendRemoteWakeup();
- }
- }
-
- keyboard_task();
-
- #if !defined(INTERRUPT_CONTROL_ENDPOINT)
- USB_USBTask();
- #endif
- }
- }
|