> PRR = ~_BV(PRUSART0); // Enable USART
Du vill nog att det ska stå &= istället för =. Annars sätter du ju de andra bitarna i PRR. och det vill du nog inte.
Varför kör du med "double speed"? Vanligtvis brukar man ju kör med "normal" hastighet.
a) Du har rätt, normalt sett. (Fast i just dethär fallet skall uarten bara rapportera fel, interrupten disablas och funktionen returnar inte, funktionen är helt hänsyslös och gör alltså värre saker än PRR-disablar andra moduler!)
b) Tja, man får ett litet fel på 9600bps och standardinställd klocka (p. 192 i manualen).
Kalibrering är nog rätt väg att gå. Eller om du kör en separat asynkron timer. Hursom behöver du initiera någon räknare mot en kristall. Om du får till det vill jag gärna veta hur du gjort, sitter själv med en atmega88 och vill få till en real time clock. (Se tråden bredvid)