// disconnect OC0A and OC0B pins, turn on CTC mode, clk/256
*ourwait()function.*/
TCCR0A=_BV(WGM01);
TCCR0A=_BV(WGM01);// CTC mode
TCCR0B=_BV(CS02);
TCCR0B=_BV(CS02);// clk/256
OCR0A=(F_CPU/256000);//1000Hz
OCR0A=(F_CPU/256000);//1000Hz
# endif
#else
# ifndef USER_TIMER0_FOR_WAIT
/* Timer1 */
TCCR1B=_BV(WGM12)|_BV(CS12);//CTC Mode, clk/256
OCR1A=(F_CPU/256000);//1000Hz
# else
/* Timer0 */
/* CTC mode, clk/256 */
TCCR0=_BV(WGM01)|_BV(CS02);
OCR0=(F_CPU/256000);//1000Hz
# endif
#endif
#endif
for(;ms>0;ms--){
for(;ms>0;ms--){
@ -62,19 +95,47 @@ void wait(int ms){
}
}
#endif
#endif
#if defined (__AVR_ATmega1280__) || defined (__AVR_ATmega2560__) || defined (__AVR_ATmega32U4__) || defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644__) || defined (__AVR_ATmega328__) || defined (__AVR_ATmega328P__) || (__AVR_ATmega1284P__) || defined (__AVR_ATmega1284__)
// busy waiting for compare match interrupt flag
/* Timer1 for the masses */
#if defined (__AVR_ATmega48__) || \
defined(__AVR_ATmega48P__)|| \
defined(__AVR_ATmega88__)|| \
defined(__AVR_ATmega88P__)|| \
defined(__AVR_ATmega168__)|| \
defined(__AVR_ATmega168P__)|| \
defined(__AVR_ATmega328__)|| \
defined(__AVR_ATmega328P__)|| \
defined(__AVR_ATmega164__)|| \
defined(__AVR_ATmega164P__)|| \
defined(__AVR_ATmega324__)|| \
defined(__AVR_ATmega324P__)|| \
defined(__AVR_ATmega644__)|| \
defined(__AVR_ATmega644P__)|| \
defined(__AVR_ATmega1284__)|| \
defined(__AVR_ATmega1284P__)|| \
defined(__AVR_ATmega32U4__)|| \
defined(__AVR_ATmega1280__)|| \
defined(__AVR_ATmega2560__)
# ifndef USER_TIMER0_FOR_WAIT
# ifndef USER_TIMER0_FOR_WAIT
while(!(TIFR1&_BV(OCF1A)));//wait for compare match flag
/* Timer1 for the masses */
TIFR1|=_BV(OCF1A);//reset flag
while(!(TIFR1&_BV(OCF1A)));// wait for compare match flag
/* Timer0 for e.g. Arduino/LoL Shield */
TIFR1|=_BV(OCF1A);// reset that flag
# else
# else
while(!(TIFR0&_BV(OCF0A)));//wait for compare match flag
/* Timer0 for e.g. Arduino/LoL Shield */
TIFR0|=_BV(OCF0A);//reset flag
while(!(TIFR0&_BV(OCF0A)));// wait for compare match flag
TIFR0|=_BV(OCF0A);// reset that flag
# endif
# endif
#else
#else
while(!(TIFR&(1<<OCF1A)));//wait for compare match flag
# ifndef USER_TIMER0_FOR_WAIT
TIFR=(1<<OCF1A);//reset flag
/* Timer1 for the masses */
while(!(TIFR&_BV(OCF1A)));// wait for compare match flag
TIFR|=_BV(OCF1A);// reset that flag
# elif !defined(__AVR_ATmega8__)
/* Timer0 */
while(!(TIFR&_BV(OCF0)));// wait for compare match flag
TIFR|=_BV(OCF0);// reset that flag
# else
# error Timer0 for wait() is not supported on ATmega8