To get exact timing sources on an AVR Controller, you should use a Timer that generates Interrupts.
At 9,6MHz and a 8 Bit Timer You had to use a Prescaler for the Timer - I think 1024 goes OK.
When the Count's of an Overflow Register ( RAM Variable ), thats countet up in every Interrupt routine achieves his goal value, you can set a flag, or do some action you want.
To get exact 4 Seconds, you have to preload the TCNT register of the used Timer.
To check the Timing you can simulate your Code in AVR Studio 4.xx or 5.xx. So You can check if Your calculations are right.