DDRD |= (1 << 5) | (1 << 3);\r
DDRD &= ~(1 << 2);\r
\r
- /* Set DATA line high for at least 90ns to disable /RESET functionality */\r
+ /* Set DATA line high for at least 90ns to disable /RESET functionality (note: too long will enable it again,\r
+ * so a fixed number of NOPs are used here */\r
PORTD |= (1 << 3);\r
- _delay_ms(1);\r
+ asm volatile ("NOP"::);\r
+ asm volatile ("NOP"::);\r
\r
/* Set up the synchronous USART for XMEGA communications - \r
8 data bits, even parity, 2 stop bits */\r
BITBANG_PDIDATA_DDR |= BITBANG_PDIDATA_MASK;\r
BITBANG_PDICLOCK_DDR |= BITBANG_PDICLOCK_MASK;\r
\r
- /* Set DATA line high for at least 90ns to disable /RESET functionality */\r
+ /* Set DATA line high for at least 90ns to disable /RESET functionality (note: too long will enable it again,\r
+ * so a fixed number of NOPs are used here */\r
BITBANG_PDIDATA_PORT |= BITBANG_PDIDATA_MASK;\r
- _delay_ms(1);\r
+ asm volatile ("NOP"::);\r
+ asm volatile ("NOP"::);\r
\r
/* Fire timer compare channel A ISR to manage the software USART */\r
OCR1A = BITS_BETWEEN_USART_CLOCKS;\r