/* * J-TechWCS1.cpp * * Created: 15.07.2021 14:13:37 * Author : Julien */ #define F_CPU 8000000 #ifndef F_CPU #define F_CPU 8000000 // processor clock frequency #warning kein F_CPU definiert #endif #include #include #include #include #include #include #include "uart.h" //IO defines # define InTriggerOn !(PINB & (1< Vollauto if (InSemiOff&&InSafeOn) { schussAuftrag=9999; } } void SchussModeScorpion() { //Semimodus if ((PIND & (1< Vollauto if ((!(PIND & (1<0)&&(mTrigger==0)) { mTrigger=1; } if (mTrigger==1) { if ((t_triggerON<=Impulszeit)&&(PINC & (1 << PC0))) { OutTriggerOn; } if ((t_triggerON>Impulszeit)&&(!(PINC & (1 << PC0)))) { OutTriggerOff; schuss--; } if (t_triggerON>=Schusszyklus) { mTrigger=0; t_triggerON=0; } t_triggerON++; } } ISR( TIMER1_COMPA_vect ) // every 10ms { msec++; if (msec>=10) { switch(UART_State) { case 0: break; case 1: uart_puts("\033[2J"); uart_puts("\r\nTrigger: "); if (InTriggerOn) { uart_puts("1"); } else { uart_puts("0"); } break; case 2: uart_puts("\033[2J"); uart_puts("\r\nReload: "); if (InReloadOn) { uart_puts("1"); } else { uart_puts("0"); } break; case 3: uart_puts("\033[2J"); uart_puts("\r\nSemi: "); if (InSemiOn) { uart_puts("1"); } else { uart_puts("0"); } break; case 4: uart_puts("\033[2J"); uart_puts("\r\nSafe: "); if (InSafeOn) { uart_puts("1"); } else { uart_puts("0"); } break; case 5: uart_puts("\033[2J"); uart_puts("\r\nMagIn: "); if (InMagInOn) { uart_puts("1"); } else { uart_puts("0"); } break; case 6: uart_puts("\033[2J"); uart_puts("\r\nBurst: "); if (InBurstOn) { uart_puts("1"); } else { uart_puts("0"); } break; default: /* some code */; } msec=0; } TCNT1=0; static uint8_t ct0 = 0xFF, ct1 = 0xFF, rpt; uint8_t i; i = key_state ^ ~KEY_PIN; // key changed ? ct0 = ~( ct0 & i ); // reset or count ct0 ct1 = ct0 ^ (ct1 & i); // reset or count ct1 i &= ct0 & ct1; // count until roll over ? key_state ^= i; // then toggle debounced state key_press |= key_state & i; // 0->1: key press detect if( (key_state & REPEAT_MASK) == 0 ) // check repeat function rpt = REPEAT_START; // start delay if( --rpt == 0 ){ rpt = REPEAT_NEXT; // repeat delay key_rpt |= key_state & REPEAT_MASK; } }