Т.е. init_debug() не переводит программатор на прием (он всегда принимает, если не поступают команды с PC для программатора), а просто сбрасывает состояние (для синхронизации программного SPI). Кстати можно эти функции объединить в одну - в начале putchar() делать сброс. И времянки уменьшить до 10 мкс...