Was mit auffällt:
-1- sei() sollte nach USART_init() stehen.
-2- UBRRL = (uint8_t)... und nicht |=
-3- UBRRH = 0; fehlt
-4- am Ende von USRT_init() UDR auslesen um evtl undefinierten Zustand zu beheben. zB data = UDR.