72 lines
1.4 KiB
C
72 lines
1.4 KiB
C
#include "config.h"
|
|
|
|
#include <avr/io.h>
|
|
#include <setjmp.h>
|
|
|
|
#ifdef JOYSTICK_SUPPORT
|
|
# include "joystick/joystick.h"
|
|
unsigned char waitForFire;
|
|
#endif
|
|
|
|
#ifdef RFM12_SUPPORT
|
|
#include "rfm12/borg_rfm12.h"
|
|
#endif
|
|
|
|
//this buffer is declared in main
|
|
extern jmp_buf newmode_jmpbuf;
|
|
|
|
#ifdef CAN_SUPPORT
|
|
# include "can/borg_can.h"
|
|
#endif
|
|
|
|
|
|
void wait(int ms){
|
|
|
|
/* TCCR2: FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20
|
|
CS22 CS21 CS20
|
|
0 0 0 stop
|
|
0 0 1 clk
|
|
0 1 0 clk/8
|
|
0 1 1 clk/32
|
|
1 0 0 clk/64
|
|
1 0 1 clk/128
|
|
1 1 0 clk/256
|
|
1 1 1 clk/1024
|
|
*/
|
|
//TCCR2 = 0x0D; //CTC Mode, clk/128
|
|
//OCR2 = (F_CPU/128000); //1000Hz
|
|
|
|
TCCR1B = (1<<WGM12) | 4;//CTC Mode, clk/256
|
|
OCR1A = (F_CPU/256000); //1000Hz
|
|
|
|
|
|
for(;ms>0;ms--){
|
|
|
|
#ifdef CAN_SUPPORT
|
|
bcan_process_messages();
|
|
#endif
|
|
|
|
#ifdef RFM12_SUPPORT
|
|
borg_rfm12_tick();
|
|
#endif
|
|
|
|
#ifdef JOYSTICK_SUPPORT
|
|
if (waitForFire) {
|
|
//PORTJOYGND &= ~(1<<BITJOY0);
|
|
//PORTJOYGND &= ~(1<<BITJOY1);
|
|
if (JOYISFIRE) {
|
|
longjmp(newmode_jmpbuf, 43);
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#if defined (__AVR_ATmega644P__) || defined (__AVR_ATmega644__) || defined (__AVR_ATmega328__) || (__AVR_ATmega1284P__) || defined (__AVR_ATmega1284__)
|
|
while(!(TIFR1&(1<<OCF1A))); //wait for compare match flag
|
|
TIFR1=(1<<OCF1A); //reset flag
|
|
#else
|
|
while(!(TIFR&(1<<OCF1A))); //wait for compare match flag
|
|
TIFR=(1<<OCF1A); //reset flag
|
|
#endif
|
|
}
|
|
}
|