RS485 - How long should you keep the Driver enable pin HIGH?

Could it make sense to just check one per main loop that the transmission has completed?

Yes, although I don't how the packet size affects this, it's just the last byte we're talking about here aren't we?...oh hang on I just looked at your code again, why are you turning DE on and off for every byte?

You have to do something like Nick suggested every time you send a byte unless you start using interrupts or a clever buffering scheme that allows you to test that bit every now and then. For example

loop () {
do other stuff
test UCSR0A
if ready for next byte
send another byte
}


Rob