projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src-avr: Disable USB interrupts while we're not interested
[fw/altos]
/
src-avr
/
ao_usb_avr.c
diff --git
a/src-avr/ao_usb_avr.c
b/src-avr/ao_usb_avr.c
index e8639217a1c30bacff3877225c009ea293146ab0..69a2dfa4ea3c0f7d994c03b136f5cb2582436b3f 100644
(file)
--- a/
src-avr/ao_usb_avr.c
+++ b/
src-avr/ao_usb_avr.c
@@
-500,15
+500,18
@@
_ao_usb_pollchar(void)
if (intx & (1 << FIFOCON)) {
/* Ack the last packet */
if (intx & (1 << FIFOCON)) {
/* Ack the last packet */
- UEINTX
&=
~(1 << FIFOCON);
+ UEINTX
= (uint8_t)
~(1 << FIFOCON);
}
/* Check to see if a packet has arrived */
}
/* Check to see if a packet has arrived */
- if ((intx & (1 << RXOUTI)) == 0)
+ if ((intx & (1 << RXOUTI)) == 0) {
+ UENUM = AO_USB_OUT_EP;
+ UEIENX = (1 << RXOUTE);
return AO_READ_AGAIN;
return AO_READ_AGAIN;
+ }
/* Ack the interrupt */
/* Ack the interrupt */
- UEINTX
&
= ~(1 << RXOUTI);
+ UEINTX = ~(1 << RXOUTI);
}
/* Pull a character out of the fifo */
}
/* Pull a character out of the fifo */
@@
-532,7
+535,7
@@
ao_usb_getchar(void) __critical
char c;
cli();
char c;
cli();
- while ((c = ao_usb_pollchar()) == AO_READ_AGAIN)
+ while ((c =
_
ao_usb_pollchar()) == AO_READ_AGAIN)
ao_sleep(&ao_stdin_ready);
sei();
return c;
ao_sleep(&ao_stdin_ready);
sei();
return c;
@@
-563,6
+566,8
@@
ISR(USB_COM_vect)
in_count++;
}
if (i & (1 << AO_USB_OUT_EP)) {
in_count++;
}
if (i & (1 << AO_USB_OUT_EP)) {
+ UENUM = AO_USB_OUT_EP;
+ UEIENX = 0;
ao_wakeup(&ao_stdin_ready);
++out_count;
}
ao_wakeup(&ao_stdin_ready);
++out_count;
}