Merge pull request #409 from luizribeiro/vusb-remote-wakeup
V-USB remote wakeup
This commit is contained in:
commit
7ecbdf3b41
@ -20,6 +20,7 @@
|
|||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
#include "uart.h"
|
#include "uart.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
#include "suspend.h"
|
||||||
|
|
||||||
|
|
||||||
#define UART_BAUD_RATE 115200
|
#define UART_BAUD_RATE 115200
|
||||||
@ -41,6 +42,23 @@ static void initForUsbConnectivity(void)
|
|||||||
sei();
|
sei();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usb_remote_wakeup(void) {
|
||||||
|
cli();
|
||||||
|
|
||||||
|
int8_t ddr_orig = USBDDR;
|
||||||
|
USBOUT |= (1 << USBMINUS);
|
||||||
|
USBDDR = ddr_orig | USBMASK;
|
||||||
|
USBOUT ^= USBMASK;
|
||||||
|
|
||||||
|
_delay_ms(25);
|
||||||
|
|
||||||
|
USBOUT ^= USBMASK;
|
||||||
|
USBDDR = ddr_orig;
|
||||||
|
USBOUT &= ~(1 << USBMINUS);
|
||||||
|
|
||||||
|
sei();
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
bool suspended = false;
|
bool suspended = false;
|
||||||
@ -70,19 +88,6 @@ int main(void)
|
|||||||
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
|
// Suspend when no SOF in 3ms-10ms(7.1.7.4 Suspending of USB1.1)
|
||||||
if (timer_elapsed(last_timer) > 5) {
|
if (timer_elapsed(last_timer) > 5) {
|
||||||
suspended = true;
|
suspended = true;
|
||||||
/*
|
|
||||||
uart_putchar('S');
|
|
||||||
_delay_ms(1);
|
|
||||||
cli();
|
|
||||||
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
|
||||||
sleep_enable();
|
|
||||||
sleep_bod_disable();
|
|
||||||
sei();
|
|
||||||
sleep_cpu();
|
|
||||||
sleep_disable();
|
|
||||||
_delay_ms(10);
|
|
||||||
uart_putchar('W');
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -95,6 +100,8 @@ int main(void)
|
|||||||
keyboard_task();
|
keyboard_task();
|
||||||
}
|
}
|
||||||
vusb_transfer_keyboard();
|
vusb_transfer_keyboard();
|
||||||
|
} else if (suspend_wakeup_condition()) {
|
||||||
|
usb_remote_wakeup();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user