diff options
Diffstat (limited to 'usb/usb.c')
| -rw-r--r-- | usb/usb.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/usb/usb.c b/usb/usb.c new file mode 100644 index 0000000..54b5281 --- /dev/null +++ b/usb/usb.c @@ -0,0 +1,50 @@ +#include <avr/io.h> +#include <avr/interrupt.h> +#include <avr/wdt.h> + +#include "usbdrv.h" + +#include <util/delay.h> + +#define USB_LED_OFF 0 +#define USB_LED_ON 1 + +USB_PUBLIC uchar usbFunctionSetup(uchar data[8]) { + usbRequest_t *rq = (void *)data; + + switch(rq->bRequest) { + case USB_LED_ON: + PORTB |= _BV(PB1); + return 0; + case USB_LED_OFF: + PORTB &= ~_BV(PB1); + return 0; + } + + return 0; +} + +int main() { + DDRB |= _BV(DDB1); + + uchar i; + wdt_enable(WDTO_1S); + + usbInit(); + + usbDeviceDisconnect(); + for (i=0; i<250; i++) { + wdt_reset(); + _delay_ms(2); + } + usbDeviceConnect(); + + sei(); + + while (1) { + wdt_reset(); + usbPoll(); + } + + return 0; +} |
