Ok, nie znam się na ATxMegach więc się wypowiem
W tym while'u ewidentnie czeka na zmianę
stanu TWIC_MASTER_STATUS & TWI_MASTER_BUSSTATE_gm które muszą być równe TWI_MASTER_BUSSTATE_IDLE_gc żeby dalej poszedł. Dlatego było moje pytanie czy podciągnąłeś. Albo stany tych rejestrów linii nie są odpowiednio czytane (może nie odblokowałeś jakiegoś rejestru albo właśnie wymusiłeś) albo są czytane, ale nie ma nigdy TWI_MASTER_BUSSTATE_IDLE_gc bo nie podciągnąłeś, coś obciąża a może któryś układ jest upalony i wymusza? Sam to kiedyś przerabiałem i problemem okazał się rezystor który powinien mieć kilka kilo a miał pewnie gigaomy (tzn po prostu był przerwany).
Sprawdź miernikiem stany czy są wysokie. Ew sprawdź czy w manualu do ATxmegi nie ma przypadkiem jakiegoś obostrzenia na te linie (jak jest włączone coś to TWI nie działa) itp..