Цитата
UCSRA = 0x00;
UCSRB = 0x00;
UCSRC = 0x80;
UCSRC = 0x00;
Зачем такие сложности? Достаточно просто обнулить биты TXEN и RXEN в регистре UCSRB, т.е. просто записать так:
Код
UDSRB &= ~((1<<TXEN)|(1<<RXEN));
, а включать потом
Код
UDSRB |= ((1<<TXEN)|(1<<RXEN));
и не производить каждый раз настройку скорости, формата данных и прочего.
Кроме режима Idle есть еще другие режимы да PowerSave, например PowerDown, можно проверить еще и их.
И ещё, может стоит сделать какую то задержку между командами выключения УСАРТа и командами перехода в PowerSave, возможно что на выключение требуется какое то время, а в режиме PowerSave отключается тактовая портов, т.е. может проц, возможно, засыпает не успев сделать все процедуры останова УСАРТа, а в режиме Idle тактовая портов сохраняется, но это как версия.