1 /* FreeEMS - the open source engine management system
3 * Copyright 2011-2012 Fred Cooke
5 * This file is part of the FreeEMS project.
7 * FreeEMS software is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * FreeEMS software is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with any FreeEMS software. If not, see http://www.gnu.org/licenses/
20 * We ask that if you make any changes to this file you email them upstream to
21 * us at admin(at)diyefi(dot)org or, even better, fork the code on github.com!
23 * Thank you for choosing FreeEMS to run your engine!
29 * @ingroup interruptHandlers
30 * @ingroup enginePositionRPMDecoders
32 * @brief For evenly spaced teeth on the camshaft with a single second input.
34 * This is suitable for engines such as the Yamaha R1 with 8 teeth on the crank
35 * and equally for something with 16 on the cam. Sync is provided by the second
36 * input allowing a sequential and/or COP/CNP setup to be used.
38 * @see EvenTeeth-Both-Nand1.c
42 #define DECODER_IMPLEMENTATION_C
43 #define DECODER_MAX_CODE_TIME 100 // To be optimised (shortened)!
44 #define NUMBER_OF_REAL_EVENTS 16
45 #define NUMBER_OF_VIRTUAL_EVENTS 16
47 #include "../inc/freeEMS.h"
48 #include "../inc/utils.h"
49 #include "../inc/interrupts.h"
50 #include "../inc/decoderInterface.h"
52 const unsigned short eventAngles
[] = {ANGLE(0), ANGLE(45), ANGLE(90), ANGLE(135), ANGLE(180), ANGLE(225), ANGLE(270), ANGLE(315), ANGLE(360), ANGLE(405), ANGLE(450), ANGLE(495), ANGLE(540), ANGLE(585), ANGLE(630), ANGLE(675)};
53 const unsigned char eventValidForCrankSync
[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; // Unused for now, but correct anyway.
55 // Bring in the actual code.
56 #include "code/EvenTeeth-Both-Xand1.c"