Merge branch 'master' into can_io_2

This commit is contained in:
Autohome2 2017-06-20 02:44:51 +01:00 committed by GitHub
commit 8db13859e1
34 changed files with 110636 additions and 57662 deletions

View File

@ -28,16 +28,40 @@ language: python
python:
- "2.7"
sudo: false
dist: trusty
sudo: required
cache:
directories:
- "~/.platformio"
addons:
apt:
sources:
- sourceline: 'deb http://ports.ubuntu.com/ubuntu-ports trusty-backports main restricted universe multiverse'
packages:
- cppcheck/trusty-backports
before_install:
#- sudo apt-get update -qq
#- sudo apt-get install -t trusty-backports cppcheck
#- sudo apt-get build-dep -qq cppcheck
#- wget https://github.com/danmar/cppcheck/archive/1.79.zip
#- unzip 1.79.zip
#- cd cppcheck-1.79
#- make SRCDIR=build CFGDIR=/usr/share/cppcheck/ HAVE_RULES=yes
#- sudo make install CFGDIR=/usr/share/cppcheck/
install:
- pip install -U platformio
script:
- cd /home/travis/build
- git clone --depth=20 https://github.com/noisymime/cppcheck.git noisymime/cppcheck
- cd noisymime/speeduino
- platformio run
- cd ..
# - speeduino/misra/check_misra.sh
#

24
misra/check_misra.sh Executable file
View File

@ -0,0 +1,24 @@
if [ -f ./results.txt ]; then
rm results.txt
fi
for i in speeduino/speeduino/*.ino; do
#cppcheck --xml --include=${i%.*}.h --include=speeduino/speeduino/globals.h $i > /dev/null
cppcheck --dump --suppress=syntaxError:speeduino/speeduino/src/PID_v1/PID_v1.h --include=${i%.*}.h --include=speeduino/speeduino/globals.h $i > /dev/null
done
mv speeduino/speeduino/*.dump ./
python cppcheck/addons/misra.py *.dump 2> results.txt
rm *.dump
cat results.txt
# wc -l results.txt
errors=`wc -l < results.txt | tr -d ' '`
echo $errors + " MISRA violations"
if [ $errors -gt 0 ]; then
exit 1
else
exit 0
fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 612 KiB

After

Width:  |  Height:  |  Size: 639 KiB

View File

@ -7,14 +7,18 @@ T101C0.038194
T102C0.015748
%
T100
X008277Y009166
X002277Y015166
X004277Y015166
X006277Y015166
X001277Y015166
X003277Y015166
X005277Y015166
X007277Y015166
X009277Y015166
X019277Y012166
X006277Y015166
X008277Y015166
X016277Y009166
X014277Y009166
X012277Y009166
X010277Y009166
@ -23,18 +27,22 @@ X017277Y009166
X015277Y009166
X013277Y009166
X011277Y009166
X006277Y003416
X004277Y003416
X018277Y009166
X016277Y009166
X019277Y010166
X010277Y015166
X012277Y015166
X014277Y015166
X016277Y015166
X007277Y003416
X005277Y003416
X003277Y003416
X011277Y015166
X013277Y015166
X015277Y015166
X017277Y015166
X019277Y015166
X016277Y015166
X018277Y015166
X024277Y009166
X022277Y009166
@ -48,6 +56,7 @@ X024277Y015166
X021277Y015166
X023277Y015166
X019277Y011166
X006277Y009166
X004277Y009166
X002277Y009166
X019277Y014166
@ -56,14 +65,18 @@ X007277Y009166
X005277Y009166
X003277Y009166
X001277Y009166
X008277Y009166
X006277Y009166
X002277Y015166
X004277Y015166
T101
X037027Y015916
X029027Y019916
X038027Y019916
X038027Y003916
X014027Y000916
X021027Y019916
X023027Y000916
X037027Y014916
X030027Y019916
X032027Y000916
X012427Y019916
X032027Y000916
X038027Y018916
X038027Y002916
X017027Y000916
@ -77,9 +90,9 @@ X037027Y009916
X035027Y000916
X037027Y012916
X018027Y019916
X029027Y000916
X038027Y016916
X027027Y019916
X029027Y000916
X009427Y019916
X037027Y008916
X037027Y011916
@ -91,8 +104,8 @@ X010427Y019916
X030027Y000916
X037027Y010916
X015027Y000916
X022027Y019916
X038027Y014916
X022027Y019916
X024027Y000916
X037027Y006916
X031027Y019916
@ -106,8 +119,8 @@ X007427Y019916
X027027Y000916
X034027Y019916
X038027Y009916
X016427Y019916
X036027Y000916
X016427Y019916
X038027Y012916
X037027Y004916
X019027Y019916
@ -129,8 +142,8 @@ X016027Y000916
X023027Y019916
X038027Y006916
X025027Y000916
X032027Y019916
X037027Y017916
X032027Y019916
X034027Y000916
X014427Y019916
X038027Y005916
@ -139,47 +152,41 @@ X037027Y016916
X011027Y000916
X038027Y004916
X020027Y000916
X037027Y015916
X029027Y019916
X038027Y019916
X014027Y000916
X038027Y003916
X021027Y019916
X023027Y000916
X037027Y014916
T102
X014777Y001666
X017527Y004666
X019027Y000916
X009527Y003416
X009527Y001166
X026527Y004166
X020277Y010666
X038777Y001166
X024527Y004166
X031027Y004666
X018277Y004666
X023527Y004166
X014777Y004166
X014777Y003666
X020527Y004166
X035527Y011166
X016527Y000416
X030777Y007666
X032277Y008666
X032277Y012666
X014777Y003166
X037277Y001166
X025527Y004166
X028777Y012416
X014777Y002666
X019527Y004166
X022527Y004166
X028527Y008666
X030777Y009666
X021527Y004166
X019027Y000916
X014777Y005166
X014777Y002166
X009527Y002916
X014777Y001666
X030777Y007666
X009527Y001166
X020277Y010666
X014777Y003166
X032277Y012666
X028527Y008666
X014777Y004666
X031027Y004666
X017527Y004666
X028027Y004166
X037277Y001166
X014777Y002666
X014777Y004166
X019527Y004166
X028777Y012416
X035027Y011916
X015527Y011916
X016527Y000416
X014777Y002166
X026527Y004166
X024527Y004166
X022527Y004166
X020527Y004166
X018277Y004666
X014777Y003666
X030777Y009666
X025527Y004166
X023527Y004166
X021527Y004166
X038777Y001166
T00
M30

View File

@ -15,6 +15,7 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X1653Y42D03*
X3228Y867D03*
X1478Y467D03*
X1478Y417D03*
@ -43,9 +44,9 @@ X3728Y117D03*
X3878Y117D03*
X2028Y1067D03*
X953Y117D03*
X953Y342D03*
X953Y292D03*
X1903Y92D03*
X3553Y1117D03*
X3503Y1192D03*
X2853Y867D03*
G54D11*
X3003Y92D03*
@ -183,12 +184,18 @@ X2128Y917D03*
X2228Y917D03*
X2328Y917D03*
X2428Y917D03*
X328Y342D03*
X428Y342D03*
X528Y342D03*
X628Y342D03*
X728Y342D03*
X1928Y1417D03*
X1928Y1317D03*
X1928Y1217D03*
X1928Y1117D03*
X1928Y1017D03*
G54D10*
X1653Y42D03*
X2803Y417D03*
X1553Y1192D03*
G04 End of Mask0*
M02*

View File

@ -17,6 +17,7 @@ G04 CONTOUR ON CENTER OF CONTOUR VECTOR*
G90*
G70*
G54D10*
X1653Y42D03*
X3228Y867D03*
X1478Y467D03*
X1478Y417D03*
@ -45,9 +46,9 @@ X3728Y117D03*
X3878Y117D03*
X2028Y1067D03*
X953Y117D03*
X953Y342D03*
X953Y292D03*
X1903Y92D03*
X3553Y1117D03*
X3503Y1192D03*
X2853Y867D03*
G54D11*
X3003Y92D03*
@ -190,8 +191,14 @@ X1928Y1317D03*
X1928Y1217D03*
X1928Y1117D03*
X1928Y1017D03*
X328Y342D03*
X428Y342D03*
X528Y342D03*
X628Y342D03*
X728Y342D03*
G54D10*
X1653Y42D03*
X2803Y417D03*
X1553Y1192D03*
G54D13*
X3078Y1117D03*
X3128Y1117D03*
@ -242,8 +249,8 @@ X2403Y511D03*
X2403Y592D03*
X2003Y511D03*
X2003Y592D03*
X2403Y211D03*
X2403Y292D03*
X2403Y211D03*
X2003Y292D03*
X2003Y211D03*
X2503Y511D03*

View File

@ -64,8 +64,8 @@ X2403Y511D03*
X2403Y592D03*
X2003Y511D03*
X2003Y592D03*
X2403Y211D03*
X2403Y292D03*
X2403Y211D03*
X2003Y292D03*
X2003Y211D03*
X2503Y511D03*

View File

@ -0,0 +1,498 @@
*Pick And Place List
*Company=
*Author=
*eMail=
*
*Project=Teensy 3.5 Adaptor v2
*Date=21:52:18
*CreatedBy=Fritzing 0.9.3b.04.19.5c895d327c44a3114e5fcc9d8260daf0cbb52806
*
*
*Coordinates in mm, always center of component
*Origin 0/0=Lower left corner of PCB
*Rotation in degree (0-360, math. pos.)
*
*No;Value;Package;X;Y;Rotation;Side;Name
1;;;67.3481;-11.0969;0;Bottom;Copper Fill131
2;;;95.3262;-31.5439;0;Bottom;Copper Fill246
3;;;16.127;-5.53161;-90;Bottom;TXT20
4;;;13.6101;-5.04497;-90;Bottom;TXT20
5;;;52.1081;-10.2079;0;Bottom;Copper Fill350
6;;;78.7781;-12.3669;0;Bottom;Copper Fill324
7;;;57.2205;-10.5834;0;Bottom;Via16
8;;;78.8105;-11.8534;0;Bottom;Via24
9;;;71.1581;-10.2079;0;Bottom;Copper Fill304
10;;;78.1755;-24.5534;0;Bottom;Via25
11;;;66.0908;-50.7971;0;Bottom;Copper Fill183
12;;;99.3684;-45.3999;0;Bottom;TXT19
13;;;91.1651;-24.9967;0;Bottom;TXT19
14;;;55.753;-11.4525;0;Bottom;Copper Fill278
15;;;14.6812;-24.2541;0;Bottom;Copper Fill51
16;;;97.3582;-7.452;0;Bottom;Copper Fill151
17;;;91.1651;-32.4555;0;Bottom;TXT19
18;;;57.1881;-10.2079;0;Bottom;Copper Fill337
19;;;94.0181;-6.6519;0;Bottom;Copper Fill145
20;;;39.4081;-29.8929;0;Bottom;Copper Fill96
21;;;40.1828;-6.2963;0;Bottom;Copper Fill297
22;;;99.3684;-35.1271;0;Bottom;TXT19
23;;;95.3262;-11.2239;0;Bottom;Copper Fill276
24;;;25.1968;-51.4829;0;Bottom;Copper Fill168
25;;;39.4831;-47.9272;-90;Bottom;TXT19
26;;;82.3722;-32.2424;0;Bottom;Copper Fill141
27;;;33.3502;-45.7679;0;Bottom;Copper Fill26
28;180k;0805 [SMD];66.1105;-6.38318;90;Top;R13
29;;;95.3262;-18.8439;0;Bottom;Copper Fill78
30;;;35.3568;-51.4829;0;Bottom;Copper Fill7
31;;;22.6568;-51.4829;0;Bottom;Copper Fill167
32;;;27.5844;-40.2053;0;Bottom;Copper Fill215
33;;;22.5044;-20.6219;0;Bottom;Copper Fill67
34;;;73.0377;-32.0265;0;Bottom;Copper Fill134
35;;;55.0418;-17.5231;0;Bottom;Copper Fill75
36;;;90.2462;-25.6511;0;Bottom;Copper Fill47
37;;;80.0608;-51.4829;0;Bottom;Copper Fill22
38;;;37.8968;-51.4829;0;Bottom;Copper Fill8
39;;;67.3608;-6.4233;0;Bottom;Copper Fill293
40;;;67.3481;-10.2079;0;Bottom;Copper Fill332
41;180k;0805 [SMD];55.9505;-6.38318;90;Top;R5
42;;;23.7236;-3.0324;0;Bottom;Copper Fill348
43;;;11.7094;-43.3549;0;Bottom;Copper Fill201
44;;;58.293;-11.4525;0;Bottom;Copper Fill279
45;;;81.9855;-22.0134;0;Bottom;Via2
46;;;91.3611;-50.4048;0;Bottom;TXT19
47;;;77.3684;-36.1667;0;Bottom;Copper Fill226
48;;;26.5938;-37.4367;0;Bottom;Copper Fill233
49;330k;0805 [SMD];66.1105;-14.0032;-90;Top;R14
50;;;39.4406;-30.2683;0;Bottom;Via35
51;;;74.1172;-31.3407;0;Bottom;Copper Fill245
52;;;24.1681;-7.8965;0;Bottom;Copper Fill309
53;;;39.5224;-8.8109;0;Bottom;Copper Fill295
54;;;48.5686;-48.0493;-90;Bottom;TXT19
55;;;51.4477;-27.6069;0;Bottom;Copper Fill313
56;;;88.4936;-30.312;0;Bottom;Copper Fill105
57;;;37.5355;-4.23335;0;Bottom;Via10
58;;;59.7408;-51.4829;0;Bottom;Copper Fill181
59;;;52.1208;-51.4829;0;Bottom;Copper Fill178
60;;;52.1208;-6.4233;0;Bottom;Copper Fill287
61;;;95.631;-13.3067;0;Bottom;Copper Fill81
62;;;78.5622;-24.6224;0;Bottom;Copper Fill323
63;;;81.8388;-19.4027;0;Bottom;Copper Fill266
64;;;7.2644;-18.7169;0;Bottom;Copper Fill63
65;;;24.5872;-3.0324;0;Bottom;Copper Fill155
66;;;91.567;-43.7359;0;Bottom;Copper Fill205
67;;;39.8272;-30.312;0;Bottom;Copper Fill302
68;;;47.0408;-51.4829;0;Bottom;Copper Fill176
69;;;59.7408;-51.4829;0;Bottom;Copper Fill16
70;;;37.5355;-5.50335;0;Bottom;Via9
71;330k;0805 [SMD];61.0305;-14.0032;-90;Top;R10
72;;;59.7605;-10.5834;0;Bottom;Via17
73;;;51.8922;-27.1624;0;Bottom;Copper Fill315
74;330k;0805 [SMD];63.5705;-14.0032;-90;Top;R12
75;;;13.3477;-7.8965;0;Bottom;Copper Fill307
76;;;81.9277;-31.7979;0;Bottom;Copper Fill139
77;;;38.9636;-30.312;0;Bottom;Copper Fill301
78;;;71.5772;-10.6524;0;Bottom;Copper Fill100
79;;;48.387;-21.2061;0;Bottom;Copper Fill261
80;;;95.3262;-34.0839;0;Bottom;Copper Fill241
81;;;27.7368;-51.4829;0;Bottom;Copper Fill4
82;;;97.9932;-3.0324;0;Bottom;Copper Fill116
83;;;39.8272;-30.312;0;Bottom;Copper Fill98
84;;;95.3262;-46.7839;0;Bottom;Copper Fill200
85;;;49.7332;-30.9724;0;Bottom;Copper Fill343
86;;;41.9481;-0.7083;0;Bottom;Copper Fill331
87;;;57.9374;-25.0669;0;Bottom;Copper Fill250
88;180k;0805 [SMD];68.6505;-6.38318;90;Top;R15
89;;;24.5872;-7.452;0;Bottom;Copper Fill312
90;;;78.1177;-25.0669;0;Bottom;Copper Fill118
91;;;3.1877;-22.5015;0;Bottom;Copper Fill339
92;;;38.9128;-11.3763;0;Bottom;Copper Fill284
93;;;26.4541;-51.4575;0;Bottom;Copper Fill149
94;;;95.3262;-21.3839;0;Bottom;Copper Fill257
95;;;51.2215;-48.0493;-90;Bottom;TXT19
96;;;91.1651;-12.2296;0;Bottom;TXT19
97;;;12.9794;-43.0247;0;Bottom;Copper Fill202
98;;;95.3262;-46.7839;0;Bottom;Copper Fill35
99;;;95.3008;-51.5337;0;Bottom;Copper Fill191
100;;;73.0955;-31.5384;0;Bottom;Via11
101;;;23.7236;-7.452;0;Bottom;Copper Fill109
102;;;64.8081;-11.0969;0;Bottom;Copper Fill132
103;;;46.1225;-48.0493;-90;Bottom;TXT19
104;;;74.0918;-49.6033;0;Bottom;Copper Fill194
105;;;44.9834;-9.1411;0;Bottom;Copper Fill285
106;;;88.9706;-30.2683;0;Bottom;Via32
107;;;58.7248;-17.2183;0;Bottom;Copper Fill268
108;;;9.6012;-24.2541;0;Bottom;Copper Fill49
109;;;35.8394;-46.1235;0;Bottom;Copper Fill27
110;;;25.1968;-51.4829;0;Bottom;Copper Fill3
111;;;48.2981;-1.9529;0;Bottom;Copper Fill159
112;;;71.1906;-10.5833;0;Bottom;Via34
113;;;79.1972;-11.9224;0;Bottom;Copper Fill327
114;;;91.1651;-40.1319;0;Bottom;TXT19
115;;;35.2749;-9.47286;0;Bottom;TXT3
116;;;92.1512;-12.0113;0;Bottom;Copper Fill82
117;;;31.9478;-47.6957;-90;Bottom;TXT19
118;;;91.1651;-14.7382;0;Bottom;TXT19
119;;;49.5681;-10.2079;0;Bottom;Copper Fill351
120;;;78.1755;-19.4734;0;Bottom;Via23
121;;;95.3262;-49.2477;0;Bottom;Copper Fill193
122;;;94.6277;-3.4769;0;Bottom;Copper Fill160
123;;;81.9277;-32.6869;0;Bottom;Copper Fill138
124;;;45.6692;-10.9191;0;Bottom;Copper Fill84
125;;;99.3684;-40.2071;0;Bottom;TXT19
126;;;40.4876;-5.0263;0;Bottom;Copper Fill298
127;;;78.5114;-36.9287;0;Bottom;Copper Fill225
128;;;94.1832;-3.0324;0;Bottom;Copper Fill354
129;;;97.3582;-7.452;0;Bottom;Copper Fill345
130;;;70.0786;-23.6953;0;Bottom;Copper Fill251
131;;;48.0568;-30.9724;0;Bottom;Copper Fill147
132;;;46.482;-32.4075;0;Bottom;Copper Fill243
133;;;99.3684;-17.3849;0;Bottom;TXT19
134;;;41.9481;-0.7083;0;Bottom;Copper Fill130
135;;;37.5355;-11.8534;0;Bottom;Via3
136;;;47.3964;-36.0905;0;Bottom;Copper Fill236
137;;;94.6855;-2.96335;0;Bottom;Via26
138;;;36.998;-5.74226;0;Bottom;TXT5
139;;;70.9789;-3.80992;0;Bottom;TXT19
140;;;30.1498;-39.9005;0;Bottom;Copper Fill216
141;;;46.1772;-21.5109;0;Bottom;Copper Fill260
142;;;24.1681;-3.4769;0;Bottom;Copper Fill347
143;;;51.4477;-26.7179;0;Bottom;Copper Fill314
144;;;8.5344;-43.9899;0;Bottom;Copper Fill198
145;;;54.6481;-10.2079;0;Bottom;Copper Fill346
146;;;81.4832;-32.2424;0;Bottom;Copper Fill140
147;;;49.1236;-10.6524;0;Bottom;Copper Fill158
148;;;90.8812;-23.1111;0;Bottom;Copper Fill62
149;;;99.3684;-30.0471;0;Bottom;TXT19
150;;;95.3262;-8.6839;0;Bottom;Copper Fill88
151;;;10.9982;-45.7933;0;Bottom;Copper Fill165
152;;;48.2981;-2.8165;0;Bottom;Copper Fill352
153;;;78.3336;-11.9224;0;Bottom;Copper Fill326
154;180k;0805 [SMD];58.4905;-6.38318;90;Top;R7
155;;;51.4477;-27.6069;0;Bottom;Copper Fill111
156;;;24.2005;-2.96335;0;Bottom;Via29
157;;;40.7162;-37.1319;0;Bottom;Copper Fill221
158;;;98.4955;-2.96335;0;Bottom;Via27
159;;;62.2808;-6.4233;0;Bottom;Copper Fill291
160;;;82.7024;-25.0161;0;Bottom;Copper Fill254
161;;;48.3884;-3.6277;0;Bottom;TXT19
162;;;48.3305;-2.32835;0;Bottom;Via31
163;;;29.2608;-3.2229;0;Bottom;Copper Fill92
164;;;85.1408;-51.4829;0;Bottom;Copper Fill190
165;;;99.3684;-12.3049;0;Bottom;TXT19
166;;;30.1244;-21.5871;0;Bottom;Copper Fill70
167;;;60.833;-11.4525;0;Bottom;Copper Fill280
168;;;15.5194;-42.3897;0;Bottom;Copper Fill206
169;;;95.3262;-23.9239;0;Bottom;Copper Fill256
170;;;81.713;-47.7898;-90;Bottom;TXT19
171;;;99.3684;-27.5635;0;Bottom;TXT19
172;;;72.4408;-51.4829;0;Bottom;Copper Fill185
173;;;31.8008;-3.2229;0;Bottom;Copper Fill93
174;180k;0805 [SMD];50.8705;-6.38318;90;Top;R1
175;330k;0805 [SMD];53.4105;-14.0032;-90;Top;R4
176;;;49.6005;-10.5834;0;Bottom;Via14
177;;;95.3262;-41.7039;0;Bottom;Copper Fill213
178;;;99.3684;-47.846;0;Bottom;TXT19
179;;;91.1651;-35.0519;0;Bottom;TXT19
180;;THT;32.4556;-38.5233;90;Bottom;J2
181;;;84.7598;-26.5401;0;Bottom;Copper Fill249
182;;;95.3262;-29.0039;0;Bottom;Copper Fill248
183;;;94.1832;-3.0324;0;Bottom;Copper Fill162
184;;;62.2808;-51.4829;0;Bottom;Copper Fill17
185;;;52.8828;-36.4969;0;Bottom;Copper Fill222
186;;;76.3016;-49.2731;0;Bottom;Copper Fill195
187;;;79.173;-47.7898;-90;Bottom;TXT19
188;;;40.4368;-51.4829;0;Bottom;Copper Fill174
189;;;17.2212;-24.2541;0;Bottom;Copper Fill52
190;180k;0805 [SMD];63.5705;-6.38318;90;Top;R11
191;;;32.1818;-37.3351;0;Bottom;Copper Fill41
192;;;39.4081;-30.7565;0;Bottom;Copper Fill299
193;;;94.0181;-6.6519;0;Bottom;Copper Fill341
194;;;95.3262;-41.7039;0;Bottom;Copper Fill37
195;;;86.4616;-49.3493;0;Bottom;Copper Fill192
196;;;51.4477;-26.7179;0;Bottom;Copper Fill112
197;;;91.1651;-9.65819;0;Bottom;TXT19
198;;;62.3005;-10.5834;0;Bottom;Via18
199;;;25.0698;-40.5355;0;Bottom;Copper Fill214
200;;;32.4612;-24.2541;0;Bottom;Copper Fill58
201;;;8.56929;-5.74713;-90;Bottom;TXT20
202;;;64.8405;-10.5834;0;Bottom;Via19
203;;;32.8168;-51.4829;0;Bottom;Copper Fill6
204;;;37.5355;-13.1234;0;Bottom;Via7
205;;;92.7608;-9.9285;0;Bottom;Copper Fill87
206;;;65.913;-11.4525;0;Bottom;Copper Fill282
207;;;59.7281;-10.2079;0;Bottom;Copper Fill335
208;;;95.0722;-3.0324;0;Bottom;Copper Fill355
209;;;54.4322;-35.2269;0;Bottom;Copper Fill223
210;;;57.2008;-51.4829;0;Bottom;Copper Fill180
211;;;70.9422;-25.0415;0;Bottom;Copper Fill252
212;330k;0805 [SMD];68.6505;-14.0032;-90;Top;R16
213;;;49.7332;-30.9724;0;Bottom;Copper Fill148
214;;;30.2768;-51.4829;0;Bottom;Copper Fill5
215;;;24.1681;-7.0329;0;Bottom;Copper Fill310
216;;THT;48.9656;-30.9033;0;Bottom;J3
217;;;51.5055;-27.0934;0;Bottom;Via28
218;;;10.4394;-43.6597;0;Bottom;Copper Fill199
219;;;74.9808;-51.4829;0;Bottom;Copper Fill186
220;;;94.6277;-2.5879;0;Bottom;Copper Fill161
221;;;96.5581;-6.6519;0;Bottom;Copper Fill344
222;;;68.9941;-47.7898;-90;Bottom;TXT19
223;;;46.101;-36.7255;0;Bottom;Copper Fill234
224;;;44.5205;-11.8534;0;Bottom;Via21
225;;;95.3262;-36.6239;0;Bottom;Copper Fill227
226;;;39.4081;-29.8929;0;Bottom;Copper Fill300
227;330k;0805 [SMD];58.4905;-14.0032;-90;Top;R8
228;;;86.793;-47.7898;-90;Bottom;TXT19
229;;;72.4605;-22.0134;0;Bottom;Via1
230;;;95.0722;-3.0324;0;Bottom;Copper Fill163
231;;;95.631;-23.4667;0;Bottom;Copper Fill61
232;;;12.1412;-24.2541;0;Bottom;Copper Fill50
233;;;64.8208;-6.4233;0;Bottom;Copper Fill292
234;;;77.6732;-19.5424;0;Bottom;Copper Fill128
235;;;3.1877;-24.1779;0;Bottom;Copper Fill338
236;;;22.6568;-51.4829;0;Bottom;Copper Fill2
237;180k;0805 [SMD];53.4105;-6.38318;90;Top;R3
238;;;78.5622;-19.5424;0;Bottom;Copper Fill330
239;;;27.3812;-24.2541;0;Bottom;Copper Fill56
240;;;54.6608;-51.4829;0;Bottom;Copper Fill14
241;;;19.9983;-1.27133;0;Bottom;TXT18
242;;;78.1177;-19.0979;0;Bottom;Copper Fill127
243;;;91.1651;-22.3761;0;Bottom;TXT19
244;;;39.878;-7.6171;0;Bottom;Copper Fill296
245;;;46.4255;-11.8534;0;Bottom;Via22
246;;;8.5598;-35.9127;0;Bottom;Copper Fill229
247;;;70.231;-30.8327;0;Bottom;Copper Fill85
248;;;78.7781;-11.4779;0;Bottom;Copper Fill123
249;;;18.0594;-41.7547;0;Bottom;Copper Fill210
250;;;99.3684;-42.7471;0;Bottom;TXT19
251;;;99.3684;-14.8135;0;Bottom;TXT19
252;;;54.6608;-6.4233;0;Bottom;Copper Fill288
253;;;76.0222;-26.7941;0;Bottom;Copper Fill239
254;;;77.6732;-19.5424;0;Bottom;Copper Fill329
255;;;95.3262;-39.1639;0;Bottom;Copper Fill219
256;;;52.1405;-10.5834;0;Bottom;Via13
257;;;24.765;-26.5401;0;Bottom;Copper Fill164
258;;;49.5681;-11.0969;0;Bottom;Copper Fill157
259;;;32.6644;-21.8919;0;Bottom;Copper Fill71
260;;;24.5872;-7.452;0;Bottom;Copper Fill110
261;;;88.9381;-29.8929;0;Bottom;Copper Fill104
262;;;74.9808;-51.4829;0;Bottom;Copper Fill20
263;;;59.9694;-48.9683;0;Bottom;Copper Fill32
264;;;95.3262;-31.5439;0;Bottom;Copper Fill44
265;;;20.1168;-51.4829;0;Bottom;Copper Fill1
266;;;22.3012;-24.2541;0;Bottom;Copper Fill54
267;;;82.6008;-51.4829;0;Bottom;Copper Fill23
268;;;35.3576;-17.2945;0;Bottom;IMG1
269;;;63.8744;-45.8495;-90;Bottom;TXT19
270;;;28.6512;-30.8835;0;Bottom;Copper Fill40
271;;;41.3512;-10.5635;0;Bottom;Copper Fill83
272;;;92.5322;-45.3107;0;Bottom;Copper Fill203
273;;;13.3477;-9.5729;0;Bottom;Copper Fill306
274;;;71.4401;-47.7898;-90;Bottom;TXT19
275;;;78.7781;-12.3669;0;Bottom;Copper Fill122
276;;;38.9636;-30.312;0;Bottom;Copper Fill97
277;;;91.821;-18.6661;0;Bottom;Copper Fill77
278;;;6.4516;-13.7385;0;Bottom;Copper Fill73
279;;;95.3008;-51.4829;0;Bottom;Copper Fill25
280;;;47.244;-47.3935;0;Bottom;Copper Fill30
281;;;91.8464;-14.8815;0;Bottom;Copper Fill80
282;;;47.0408;-51.4829;0;Bottom;Copper Fill11
283;;;66.2178;-16.2531;0;Bottom;Copper Fill274
284;;;24.5872;-3.0324;0;Bottom;Copper Fill349
285;;;43.7388;-50.7971;0;Bottom;Copper Fill175
286;;;76.633;-47.7898;-90;Bottom;TXT19
287;330k;0805 [SMD];55.9505;-14.0032;-90;Top;R6
288;;;95.3262;-13.7639;0;Bottom;Copper Fill275
289;;;75.0824;-34.6173;0;Bottom;Copper Fill238
290;;;37.465;-24.2541;0;Bottom;Copper Fill60
291;;;59.7408;-6.4233;0;Bottom;Copper Fill290
292;;;85.1408;-51.4829;0;Bottom;Copper Fill24
293;;;90.597;-7.11819;0;Bottom;TXT19
294;;;54.6805;-10.5834;0;Bottom;Via15
295;;;29.4078;-47.6957;-90;Bottom;TXT19
296;;;91.1651;-29.9719;0;Bottom;TXT19
297;;;42.0608;-47.9743;-90;Bottom;TXT19
298;;;78.1177;-19.9869;0;Bottom;Copper Fill328
299;;;5.2578;-30.8835;0;Bottom;Copper Fill39
300;;;91.1651;-19.8406;0;Bottom;TXT19
301;;;81.9855;-32.1734;0;Bottom;Via12
302;;;19.9644;-41.1705;0;Bottom;Copper Fill211
303;;;11.0744;-36.2429;0;Bottom;Copper Fill230
304;;;95.631;-20.9267;0;Bottom;Copper Fill76
305;;;57.2008;-51.4829;0;Bottom;Copper Fill15
306;;;27.7368;-51.4829;0;Bottom;Copper Fill169
307;;;37.5355;-10.5834;0;Bottom;Via4
308;;;98.4377;-3.4769;0;Bottom;Copper Fill114
309;;;27.5844;-21.2569;0;Bottom;Copper Fill69
310;;;91.1651;-45.3248;0;Bottom;TXT19
311;;;95.3262;-44.2439;0;Bottom;Copper Fill208
312;;;59.563;-21.8919;0;Bottom;Copper Fill264
313;;;95.3262;-26.4639;0;Bottom;Copper Fill255
314;;;91.1651;-42.6719;0;Bottom;TXT19
315;;;95.3262;-39.1639;0;Bottom;Copper Fill38
316;;;99.3684;-22.4513;0;Bottom;TXT19
317;;;98.8822;-3.0324;0;Bottom;Copper Fill319
318;;;20.1168;-51.4829;0;Bottom;Copper Fill166
319;;;78.3336;-11.9224;0;Bottom;Copper Fill124
320;;;52.0446;-20.3425;0;Bottom;Copper Fill263
321;;;98.8822;-3.0324;0;Bottom;Copper Fill117
322;;;32.8168;-51.4829;0;Bottom;Copper Fill171
323;;;78.1177;-19.9869;0;Bottom;Copper Fill126
324;;;34.3408;-3.2229;0;Bottom;Copper Fill94
325;;;95.3262;-34.0839;0;Bottom;Copper Fill43
326;;;99.3684;-25.072;0;Bottom;TXT19
327;;;38.2831;-7.61951;0;Bottom;TXT6
328;;;61.2497;-45.8966;-90;Bottom;TXT19
329;;;49.5808;-51.4829;0;Bottom;Copper Fill12
330;;;40.4114;-33.0933;0;Bottom;Copper Fill65
331;;;78.1177;-25.0669;0;Bottom;Copper Fill320
332;;;80.0608;-51.4829;0;Bottom;Copper Fill188
333;;;71.1581;-11.0969;0;Bottom;Copper Fill99
334;;;54.6608;-51.4829;0;Bottom;Copper Fill179
335;;;95.3262;-49.3239;0;Bottom;Copper Fill34
336;;;13.6398;-36.5477;0;Bottom;Copper Fill231
337;;;96.5581;-6.6519;0;Bottom;Copper Fill150
338;;;73.4822;-31.582;0;Bottom;Copper Fill136
339;;;37.0278;-47.6957;-90;Bottom;TXT19
340;;;37.8968;-51.4829;0;Bottom;Copper Fill173
341;;;61.214;-16.8627;0;Bottom;Copper Fill271
342;;;95.3262;-11.2239;0;Bottom;Copper Fill86
343;;;41.9805;-1.05835;0;Bottom;Via33
344;;;53.213;-11.4525;0;Bottom;Copper Fill277
345;;;78.5368;-48.9683;0;Bottom;Copper Fill196
346;;;37.5355;-9.31335;0;Bottom;Via5
347;330k;0805 [SMD];50.8705;-14.0032;-90;Top;R2
348;;;88.9381;-29.8929;0;Bottom;Copper Fill308
349;;;71.1581;-11.0969;0;Bottom;Copper Fill303
350;;;50.9133;-26.4583;0;Bottom;Part1
351;;;58.8415;-48.0493;-90;Bottom;TXT19
352;;;99.3684;-37.6671;0;Bottom;TXT19
353;;;50.3428;-13.04;0;Bottom;Copper Fill336
354;;;85.2932;-35.2015;0;Bottom;Copper Fill240
355;;;74.093;-47.7898;-90;Bottom;TXT19
356;;;69.9008;-51.4829;0;Bottom;Copper Fill184
357;;;77.6732;-24.6224;0;Bottom;Copper Fill120
358;;;3.1877;-24.1779;0;Bottom;Copper Fill143
359;;;16.8148;-42.0849;0;Bottom;Copper Fill209
360;;;79.1972;-11.9224;0;Bottom;Copper Fill125
361;;;69.85;-31.8741;0;Bottom;Copper Fill244
362;;;97.9932;-3.0324;0;Bottom;Copper Fill318
363;;;62.2808;-51.4829;0;Bottom;Copper Fill182
364;;;54.6481;-11.0969;0;Bottom;Copper Fill152
365;;;78.5622;-19.5424;0;Bottom;Copper Fill129
366;;;99.3684;-19.9158;0;Bottom;TXT19
367;;;71.5772;-10.6524;0;Bottom;Copper Fill305
368;;;93.1926;-7.452;0;Bottom;Copper Fill342
369;;;32.8168;-39.5703;0;Bottom;Copper Fill218
370;;;25.0698;-20.9267;0;Bottom;Copper Fill68
371;;;35.3568;-51.4829;0;Bottom;Copper Fill172
372;;;95.3262;-29.0039;0;Bottom;Copper Fill45
373;;;40.9448;-46.7331;0;Bottom;Copper Fill29
374;;;47.0916;-33.6013;0;Bottom;Copper Fill242
375;;;65.3288;-35.3539;0;Bottom;Copper Fill217
376;;;9.8044;-19.0471;0;Bottom;Copper Fill64
377;;;84.3094;-47.7898;-90;Bottom;TXT19
378;;;37.5355;-8.04335;0;Bottom;Via6
379;;;44.0436;-15.0593;0;Bottom;Copper Fill270
380;;;91.1651;-17.3096;0;Bottom;TXT19
381;;;40.4368;-51.4829;0;Bottom;Copper Fill9
382;;;95.631;-26.0067;0;Bottom;Copper Fill46
383;;;95.3262;-18.8439;0;Bottom;Copper Fill267
384;;;13.3992;-10.7893;0;Bottom;TXT21
385;;;98.4377;-2.5879;0;Bottom;Copper Fill115
386;;;49.784;-47.6983;0;Bottom;Copper Fill31
387;;;62.2681;-11.0969;0;Bottom;Copper Fill133
388;;;62.3062;-37.8685;0;Bottom;Copper Fill220
389;;;69.342;-26.5401;0;Bottom;Copper Fill89
390;;;95.3262;-36.6239;0;Bottom;Copper Fill42
391;;so014;68.0156;-31.1634;0;Top;IC1
392;;;13.3477;-7.8965;0;Bottom;Copper Fill102
393;;;38.4048;-46.4283;0;Bottom;Copper Fill28
394;;;16.8402;-15.6435;0;Bottom;Copper Fill265
395;;;98.4377;-2.5879;0;Bottom;Copper Fill317
396;;;22.9108;-8.8617;0;Bottom;Copper Fill90
397;;;82.6008;-51.4829;0;Bottom;Copper Fill189
398;;;29.9212;-24.2541;0;Bottom;Copper Fill57
399;;;5.9944;-35.6079;0;Bottom;Copper Fill228
400;;;78.7781;-11.4779;0;Bottom;Copper Fill325
401;;;55.3974;-33.9569;0;Bottom;Copper Fill224
402;;;56.3015;-48.0493;-90;Bottom;TXT19
403;;;52.1081;-11.0969;0;Bottom;Copper Fill156
404;;;5.9944;-44.2947;0;Bottom;Copper Fill197
405;;;95.631;-15.8467;0;Bottom;Copper Fill79
406;;;62.5348;-49.2985;0;Bottom;Copper Fill33
407;;;62.2681;-10.2079;0;Bottom;Copper Fill334
408;;;43.9166;-21.8157;0;Bottom;Copper Fill259
409;;;63.373;-11.4525;0;Bottom;Copper Fill281
410;;;49.5808;-51.4829;0;Bottom;Copper Fill177
411;;;22.5044;-40.8403;0;Bottom;Copper Fill212
412;;;91.1651;-27.4884;0;Bottom;TXT19
413;;;98.4377;-3.4769;0;Bottom;Copper Fill316
414;;;81.4324;-37.8685;0;Bottom;Copper Fill207
415;;;78.1177;-24.1779;0;Bottom;Copper Fill119
416;;;23.7236;-3.0324;0;Bottom;Copper Fill154
417;;;69.9008;-51.4829;0;Bottom;Copper Fill18
418;;;89.3572;-30.312;0;Bottom;Copper Fill106
419;;;62.9158;-33.0171;0;Bottom;Copper Fill235
420;;;39.2176;-10.1063;0;Bottom;Copper Fill286
421;;;2.3368;-23.3524;0;Bottom;Copper Fill340
422;;THT;32.4556;-23.2833;-90;Bottom;J1
423;;;71.8312;-27.8355;0;Bottom;Copper Fill247
424;;;64.8081;-10.2079;0;Bottom;Copper Fill333
425;;so014;81.9856;-31.1634;0;Top;IC2
426;180k;0805 [SMD];61.0305;-6.38318;90;Top;R9
427;;;63.754;-16.5579;0;Bottom;Copper Fill272
428;;;52.1208;-51.4829;0;Bottom;Copper Fill13
429;;;30.2768;-51.4829;0;Bottom;Copper Fill170
430;;;14.2748;-2.8673;0;Bottom;Copper Fill91
431;;;37.5355;-6.77335;0;Bottom;Via8
432;;;91.1606;-21.7903;0;Bottom;Copper Fill74
433;;;13.3477;-9.5729;0;Bottom;Copper Fill101
434;;;77.5208;-51.4829;0;Bottom;Copper Fill187
435;;;90.551;-24.3811;0;Bottom;Copper Fill48
436;;;77.5208;-51.4829;0;Bottom;Copper Fill21
437;;;11.058;-5.05375;-90;Bottom;TXT20
438;;;95.3262;-8.6839;0;Bottom;Copper Fill294
439;;;53.7615;-48.0493;-90;Bottom;TXT19
440;;;23.7236;-7.452;0;Bottom;Copper Fill311
441;;THT;13.4056;-8.67826;-90;Bottom;J4
442;;;44.0944;-47.9269;0;Bottom;Copper Fill10
443;;;81.28;-25.0415;0;Bottom;Copper Fill253
444;;;24.8412;-24.2541;0;Bottom;Copper Fill55
445;;;68.453;-11.4525;0;Bottom;Copper Fill283
446;;;35.433;-22.1967;0;Bottom;Copper Fill72
447;;;59.7281;-11.0969;0;Bottom;Copper Fill137
448;;;77.6732;-24.6224;0;Bottom;Copper Fill322
449;;;80.4672;-26.8195;0;Bottom;Copper Fill237
450;;;57.2008;-6.4233;0;Bottom;Copper Fill289
451;;;91.1651;-37.5919;0;Bottom;TXT19
452;;;72.4408;-51.4829;0;Bottom;Copper Fill19
453;;;19.7612;-24.2541;0;Bottom;Copper Fill53
454;;;24.1681;-2.5879;0;Bottom;Copper Fill153
455;;;3.1877;-22.5015;0;Bottom;Copper Fill144
456;;;99.3684;-9.73354;0;Bottom;TXT19
457;;;67.3805;-10.5834;0;Bottom;Via20
458;;;55.9816;-17.0659;0;Bottom;Copper Fill269
459;;;78.5622;-24.6224;0;Bottom;Copper Fill121
460;;;34.4878;-47.6957;-90;Bottom;TXT19
461;;;38.7477;-37.7415;0;Bottom;Copper Fill146
462;;;35.0012;-24.2541;0;Bottom;Copper Fill59
463;;;57.1881;-11.0969;0;Bottom;Copper Fill142
464;;;16.1544;-36.8779;0;Bottom;Copper Fill232
465;;;14.2494;-42.7199;0;Bottom;Copper Fill204
466;;;39.0652;-17.3961;0;Bottom;Copper Fill258
467;;;94.6277;-3.4769;0;Bottom;Copper Fill353
468;;;26.7549;-47.0408;-90;Bottom;TXT19
469;;;73.0377;-31.1629;0;Bottom;Copper Fill135
470;;;39.4081;-30.7565;0;Bottom;Copper Fill95
471;;;19.9644;-20.3171;0;Bottom;Copper Fill66
472;;;24.1681;-7.8965;0;Bottom;Copper Fill107
473;;;51.8922;-27.1624;0;Bottom;Copper Fill113
474;;;24.1681;-7.0329;0;Bottom;Copper Fill108
475;;;91.1651;-47.7707;0;Bottom;TXT19
476;;;50.6222;-20.9013;0;Bottom;Copper Fill262
477;;;18.8363;-5.52706;-90;Bottom;TXT20
478;;;95.3262;-16.3039;0;Bottom;Copper Fill273
479;;;99.3684;-32.5306;0;Bottom;TXT19
480;;;78.1177;-24.1779;0;Bottom;Copper Fill321
481;;;95.3262;-44.2439;0;Bottom;Copper Fill36
482;;;24.2006;-7.40826;0;Bottom;Via30
483;;;88.9381;-30.7565;0;Bottom;Copper Fill103

File diff suppressed because it is too large Load Diff

View File

@ -1,404 +0,0 @@
*Pick And Place List
*Company=
*Author=
*eMail=
*
*Project=Teensy 3.5 Adaptor
*Date=21:31:13
*CreatedBy=Fritzing 0.9.3b.04.19.5c895d327c44a3114e5fcc9d8260daf0cbb52806
*
*
*Coordinates in mm, always center of component
*Origin 0/0=Lower left corner of PCB
*Rotation in degree (0-360, math. pos.)
*
*No;Value;Package;X;Y;Rotation;Side;Name
1;;;51.4477;-27.6069;0;Bottom;Copper Fill288
2;;;52.1081;-10.2079;0;Bottom;Copper Fill323
3;;;30.2768;-51.4829;0;Bottom;Copper Fill154
4;;;95.3262;-26.4639;0;Bottom;Copper Fill234
5;;;95.3262;-36.6239;0;Bottom;Copper Fill208
6;;;40.9448;-46.7331;0;Bottom;Copper Fill29
7;;;47.0408;-51.4829;0;Bottom;Copper Fill11
8;;;12.9794;-43.0247;0;Bottom;Copper Fill186
9;;;78.5622;-24.6224;0;Bottom;Copper Fill104
10;;;22.5044;-41.1451;0;Bottom;Copper Fill194
11;;;41.9481;-0.7083;0;Bottom;Copper Fill84
12;;;24.5872;-3.0324;0;Bottom;Copper Fill134
13;;;95.3262;-11.2239;0;Bottom;Copper Fill76
14;;;50.6222;-20.9013;0;Bottom;Copper Fill241
15;330k;0805 [SMD];58.4905;-14.0032;-90;Top;R8
16;;;98.4377;-3.4769;0;Bottom;Copper Fill97
17;;;73.0955;-31.5384;0;Bottom;Via11
18;;;46.482;-32.4075;0;Bottom;Copper Fill224
19;;;94.6277;-2.5879;0;Bottom;Copper Fill114
20;;;67.7672;-10.6524;0;Bottom;Copper Fill143
21;;;29.2608;-3.2229;0;Bottom;Copper Fill81
22;;;25.1968;-51.4829;0;Bottom;Copper Fill152
23;;;95.3262;-8.6839;0;Bottom;Copper Fill78
24;330k;0805 [SMD];61.0305;-14.0032;-90;Top;R13
25;;;95.3262;-29.0039;0;Bottom;Copper Fill47
26;;;59.9694;-48.9683;0;Bottom;Copper Fill35
27;;;8.5344;-43.9899;0;Bottom;Copper Fill182
28;;;22.6568;-51.4829;0;Bottom;Copper Fill151
29;;;52.1405;-10.5834;0;Bottom;Via13
30;;;77.6732;-19.5424;0;Bottom;Copper Fill304
31;;;52.8828;-36.4969;0;Bottom;Copper Fill203
32;180k;0805 [SMD];63.5705;-6.38318;90;Top;R16
33;;;39.878;-7.6171;0;Bottom;Copper Fill273
34;;;9.56589;-15.1119;0;Bottom;TXT5
35;330k;0805 [SMD];55.9505;-14.0032;-90;Top;R6
36;;;32.6644;-21.8919;0;Bottom;Copper Fill62
37;;;52.2732;-15.3895;0;Bottom;Copper Fill262
38;;;25.1968;-51.4829;0;Bottom;Copper Fill3
39;;;77.6732;-19.5424;0;Bottom;Copper Fill111
40;;;58.293;-11.4525;0;Bottom;Copper Fill256
41;;;24.1681;-8.3029;0;Bottom;Copper Fill91
42;;;62.5348;-49.2985;0;Bottom;Copper Fill36
43;;;82.6008;-51.4829;0;Bottom;Copper Fill23
44;;THT;48.9656;-30.9033;0;Bottom;J3
45;;;23.7236;-8.722;0;Bottom;Copper Fill92
46;;;95.3262;-13.7639;0;Bottom;Copper Fill252
47;;;59.7281;-11.0969;0;Bottom;Copper Fill145
48;;;27.7368;-51.4829;0;Bottom;Copper Fill153
49;;;20.0152;-41.5007;0;Bottom;Copper Fill193
50;330k;0805 [SMD];66.1105;-14.0032;-90;Top;R11
51;;;79.1972;-11.9224;0;Bottom;Copper Fill302
52;;;57.4548;-48.6381;0;Bottom;Copper Fill34
53;;;97.3582;-7.452;0;Bottom;Copper Fill312
54;;;81.9855;-22.0134;0;Bottom;Via2
55;;;82.6008;-51.4829;0;Bottom;Copper Fill173
56;;;78.1755;-24.5534;0;Bottom;Via25
57;;;54.6805;-10.5834;0;Bottom;Via15
58;;;64.8081;-10.2079;0;Bottom;Copper Fill327
59;;;95.3262;-8.6839;0;Bottom;Copper Fill271
60;;;78.1177;-19.0979;0;Bottom;Copper Fill110
61;;;95.3262;-31.5439;0;Bottom;Copper Fill46
62;;;50.9133;-26.4583;0;Bottom;Part1
63;;;51.4477;-26.7179;0;Bottom;Copper Fill95
64;;;67.3805;-10.5834;0;Bottom;Via20
65;;;3.1877;-22.5015;0;Bottom;Copper Fill317
66;;;48.2981;-1.9529;0;Bottom;Copper Fill89
67;;;39.5224;-8.8109;0;Bottom;Copper Fill272
68;180k;0805 [SMD];50.8705;-6.38318;90;Top;R3
69;;;90.2081;-28.8769;0;Bottom;Copper Fill86
70;;;57.2008;-6.4233;0;Bottom;Copper Fill266
71;;;43.7388;-50.7971;0;Bottom;Copper Fill159
72;;;91.1606;-21.7903;0;Bottom;Copper Fill65
73;;;31.8008;-3.2229;0;Bottom;Copper Fill82
74;;;57.2008;-51.4829;0;Bottom;Copper Fill164
75;;;86.4616;-49.3493;0;Bottom;Copper Fill176
76;;;30.1498;-40.2307;0;Bottom;Copper Fill198
77;;;62.4332;-23.3524;0;Bottom;Copper Fill278
78;;;13.6398;-36.5477;0;Bottom;Copper Fill212
79;;;20.1168;-51.4829;0;Bottom;Copper Fill1
80;;;66.2178;-16.2531;0;Bottom;Copper Fill251
81;;;95.3262;-16.3039;0;Bottom;Copper Fill250
82;;;95.3262;-21.3839;0;Bottom;Copper Fill236
83;;;49.784;-47.6983;0;Bottom;Copper Fill31
84;;;80.4672;-26.8195;0;Bottom;Copper Fill217
85;;;73.0377;-31.1629;0;Bottom;Copper Fill130
86;;;62.2808;-51.4829;0;Bottom;Copper Fill17
87;;;32.8168;-51.4829;0;Bottom;Copper Fill6
88;;;24.1681;-3.4769;0;Bottom;Copper Fill320
89;;;78.8105;-11.8534;0;Bottom;Via24
90;;;90.6272;-28.4324;0;Bottom;Copper Fill282
91;;;95.3262;-39.1639;0;Bottom;Copper Fill202
92;;;59.7408;-6.4233;0;Bottom;Copper Fill267
93;;;22.5044;-20.6219;0;Bottom;Copper Fill58
94;330k;0805 [SMD];50.8705;-14.0032;-90;Top;R4
95;;;33.3502;-45.7679;0;Bottom;Copper Fill26
96;;;81.407;-38.1987;0;Bottom;Copper Fill189
97;;;73.0377;-32.0265;0;Bottom;Copper Fill129
98;;;27.7368;-51.4829;0;Bottom;Copper Fill4
99;;;17.4498;-41.8055;0;Bottom;Copper Fill192
100;;;49.5681;-11.0969;0;Bottom;Copper Fill127
101;;;98.4377;-2.5879;0;Bottom;Copper Fill292
102;;;63.373;-11.4525;0;Bottom;Copper Fill258
103;;;78.1177;-25.0669;0;Bottom;Copper Fill101
104;;;95.3262;-49.2477;0;Bottom;Copper Fill177
105;;;70.0786;-23.6953;0;Bottom;Copper Fill230
106;;;62.2808;-6.4233;0;Bottom;Copper Fill268
107;;;37.5355;-11.8534;0;Bottom;Via3
108;;;39.0652;-17.3961;0;Bottom;Copper Fill237
109;;;95.0722;-3.0324;0;Bottom;Copper Fill308
110;;;26.4541;-51.4575;0;Bottom;Copper Fill120
111;;;78.1177;-24.1779;0;Bottom;Copper Fill296
112;;;92.5322;-45.3107;0;Bottom;Copper Fill187
113;;;3.1877;-24.1779;0;Bottom;Copper Fill122
114;;;60.833;-11.4525;0;Bottom;Copper Fill257
115;;;95.3262;-18.8439;0;Bottom;Copper Fill244
116;;;95.3262;-44.2439;0;Bottom;Copper Fill191
117;;;48.387;-21.2061;0;Bottom;Copper Fill240
118;;;79.1972;-11.9224;0;Bottom;Copper Fill108
119;;;12.3444;-19.3519;0;Bottom;Copper Fill54
120;;;81.8388;-19.4027;0;Bottom;Copper Fill243
121;;;39.2176;-10.1063;0;Bottom;Copper Fill263
122;;;10.4394;-43.6597;0;Bottom;Copper Fill183
123;;;17.4244;-19.9869;0;Bottom;Copper Fill56
124;;;91.821;-18.6661;0;Bottom;Copper Fill68
125;;;40.1828;-6.2963;0;Bottom;Copper Fill274
126;;;24.1681;-8.3029;0;Bottom;Copper Fill285
127;;THT;32.4556;-38.5233;90;Bottom;J2
128;;;98.8822;-3.0324;0;Bottom;Copper Fill100
129;;;67.3481;-10.2079;0;Bottom;Copper Fill326
130;;;52.0446;-20.3425;0;Bottom;Copper Fill242
131;;;94.6855;-2.96335;0;Bottom;Via26
132;;;78.1177;-24.1779;0;Bottom;Copper Fill102
133;;;94.0181;-6.6519;0;Bottom;Copper Fill309
134;;;15.5194;-42.3897;0;Bottom;Copper Fill190
135;;;37.5355;-13.1234;0;Bottom;Via7
136;;;37.5355;-8.04335;0;Bottom;Via6
137;;;62.2681;-11.0969;0;Bottom;Copper Fill146
138;;;9.8044;-19.0471;0;Bottom;Copper Fill53
139;;;98.4377;-2.5879;0;Bottom;Copper Fill98
140;;;94.1832;-3.0324;0;Bottom;Copper Fill115
141;;;8.5598;-35.9127;0;Bottom;Copper Fill210
142;;;80.0608;-51.4829;0;Bottom;Copper Fill22
143;;;5.9944;-44.2947;0;Bottom;Copper Fill181
144;;;55.3974;-33.9569;0;Bottom;Copper Fill205
145;;;62.3005;-10.5834;0;Bottom;Via18
146;180k;0805 [SMD];68.6505;-6.38318;90;Top;R10
147;;;90.8812;-23.1111;0;Bottom;Copper Fill51
148;;;10.9982;-45.7933;0;Bottom;Copper Fill149
149;;;35.8394;-46.1235;0;Bottom;Copper Fill27
150;;;59.7408;-51.4829;0;Bottom;Copper Fill16
151;;;37.5355;-10.5834;0;Bottom;Via4
152;;;37.5355;-5.50335;0;Bottom;Via9
153;;;37.5355;-6.77335;0;Bottom;Via8
154;;;97.3582;-27.772;0;Bottom;Copper Fill330
155;;;49.7332;-30.9724;0;Bottom;Copper Fill126
156;;;95.631;-23.4667;0;Bottom;Copper Fill50
157;;;76.0222;-26.7941;0;Bottom;Copper Fill219
158;;;24.5872;-3.0324;0;Bottom;Copper Fill322
159;;;95.3262;-34.0839;0;Bottom;Copper Fill221
160;;;24.2005;-2.96335;0;Bottom;Via29
161;;;90.2405;-28.3634;0;Bottom;Via32
162;;;78.7781;-11.4779;0;Bottom;Copper Fill106
163;;;14.2748;-2.8673;0;Bottom;Copper Fill80
164;;;95.3262;-26.4639;0;Bottom;Copper Fill48
165;;;95.3262;-49.3239;0;Bottom;Copper Fill37
166;;;81.28;-25.0415;0;Bottom;Copper Fill232
167;;;57.1881;-11.0969;0;Bottom;Copper Fill137
168;330k;0805 [SMD];68.6505;-14.0032;-90;Top;R9
169;;;95.631;-20.9267;0;Bottom;Copper Fill67
170;;;47.3964;-36.0905;0;Bottom;Copper Fill216
171;;;98.4377;-3.4769;0;Bottom;Copper Fill291
172;;;25.1714;-30.8835;0;Bottom;Copper Fill42
173;;;95.3262;-36.6239;0;Bottom;Copper Fill44
174;;;54.6608;-51.4829;0;Bottom;Copper Fill163
175;;;58.7248;-17.2183;0;Bottom;Copper Fill245
176;;;78.5622;-24.6224;0;Bottom;Copper Fill298
177;;;51.4477;-26.7179;0;Bottom;Copper Fill289
178;;;37.8968;-51.4829;0;Bottom;Copper Fill8
179;;;50.3428;-13.04;0;Bottom;Copper Fill314
180;;;24.765;-26.5401;0;Bottom;Copper Fill148
181;;;24.1681;-9.1665;0;Bottom;Copper Fill284
182;;;89.7636;-28.4324;0;Bottom;Copper Fill281
183;;;57.2205;-10.5834;0;Bottom;Via16
184;;;69.342;-26.5401;0;Bottom;Copper Fill79
185;;;96.5581;-6.6519;0;Bottom;Copper Fill118
186;;;37.8968;-51.4829;0;Bottom;Copper Fill157
187;;;85.2932;-35.2015;0;Bottom;Copper Fill220
188;;;51.4477;-27.6069;0;Bottom;Copper Fill94
189;;;51.8922;-27.1624;0;Bottom;Copper Fill290
190;;;64.8208;-6.4233;0;Bottom;Copper Fill269
191;;;94.6277;-3.4769;0;Bottom;Copper Fill113
192;;;76.3016;-49.2731;0;Bottom;Copper Fill179
193;;;57.2008;-51.4829;0;Bottom;Copper Fill15
194;;;78.1177;-19.9869;0;Bottom;Copper Fill303
195;;;48.2981;-2.8165;0;Bottom;Copper Fill283
196;;;92.7608;-9.9285;0;Bottom;Copper Fill77
197;;;30.2768;-51.4829;0;Bottom;Copper Fill5
198;;;12.2621;-17.215;0;Bottom;TXT6
199;;;5.9944;-35.6079;0;Bottom;Copper Fill209
200;;;24.1681;-2.5879;0;Bottom;Copper Fill132
201;;;14.9098;-19.6567;0;Bottom;Copper Fill55
202;;;95.3262;-44.2439;0;Bottom;Copper Fill39
203;;;89.7636;-28.4324;0;Bottom;Copper Fill87
204;;;37.5355;-9.31335;0;Bottom;Via5
205;;;95.3008;-51.5337;0;Bottom;Copper Fill175
206;;;54.6608;-6.4233;0;Bottom;Copper Fill265
207;;;85.1408;-51.4829;0;Bottom;Copper Fill174
208;;;96.5581;-6.6519;0;Bottom;Copper Fill311
209;;;74.1172;-31.3407;0;Bottom;Copper Fill226
210;;;78.5114;-36.9287;0;Bottom;Copper Fill206
211;;;11.0744;-36.2429;0;Bottom;Copper Fill211
212;;;49.5808;-51.4829;0;Bottom;Copper Fill12
213;;;80.0608;-51.4829;0;Bottom;Copper Fill172
214;;;38.9128;-11.3763;0;Bottom;Copper Fill261
215;;so014;81.9856;-31.1634;0;Top;IC2
216;;so014;68.0156;-31.1634;0;Top;IC1
217;;;62.2808;-51.4829;0;Bottom;Copper Fill166
218;;;34.3408;-3.2229;0;Bottom;Copper Fill83
219;;;85.1408;-51.4829;0;Bottom;Copper Fill24
220;;;68.453;-11.4525;0;Bottom;Copper Fill260
221;;;95.3262;-11.2239;0;Bottom;Copper Fill253
222;;;69.2912;-30.5025;0;Bottom;Copper Fill75
223;;;95.631;-15.8467;0;Bottom;Copper Fill70
224;;;74.9808;-51.4829;0;Bottom;Copper Fill20
225;;;78.3336;-11.9224;0;Bottom;Copper Fill301
226;;;24.5872;-8.722;0;Bottom;Copper Fill287
227;;;84.7598;-26.5401;0;Bottom;Copper Fill222
228;;;35.433;-22.1967;0;Bottom;Copper Fill63
229;;;35.3568;-51.4829;0;Bottom;Copper Fill156
230;;;77.3684;-36.1667;0;Bottom;Copper Fill207
231;;;77.6732;-24.6224;0;Bottom;Copper Fill297
232;;;78.5622;-19.5424;0;Bottom;Copper Fill305
233;;;78.5622;-19.5424;0;Bottom;Copper Fill112
234;;;65.3288;-35.6841;0;Bottom;Copper Fill199
235;;;78.1755;-19.4734;0;Bottom;Via23
236;;;44.0436;-15.0593;0;Bottom;Copper Fill247
237;;;81.4832;-32.2424;0;Bottom;Copper Fill140
238;;;95.0722;-3.0324;0;Bottom;Copper Fill116
239;;;78.7781;-12.3669;0;Bottom;Copper Fill105
240;;THT;32.4556;-23.2833;-90;Bottom;J1
241;;;38.7477;-37.7415;0;Bottom;Copper Fill124
242;;;38.4048;-46.4283;0;Bottom;Copper Fill28
243;;;54.6481;-11.0969;0;Bottom;Copper Fill136
244;;;27.6098;-40.5355;0;Bottom;Copper Fill197
245;;;95.3262;-29.0039;0;Bottom;Copper Fill229
246;;;74.9808;-51.4829;0;Bottom;Copper Fill170
247;;;41.3512;-10.5635;0;Bottom;Copper Fill74
248;;;55.0418;-17.5231;0;Bottom;Copper Fill66
249;;;52.1208;-6.4233;0;Bottom;Copper Fill264
250;;;67.3481;-11.0969;0;Bottom;Copper Fill142
251;;;95.3262;-41.7039;0;Bottom;Copper Fill196
252;;;57.1881;-10.2079;0;Bottom;Copper Fill325
253;;;46.101;-36.7255;0;Bottom;Copper Fill214
254;180k;0805 [SMD];61.0305;-6.38318;-90;Top;R14
255;;;40.4876;-5.0263;0;Bottom;Copper Fill275
256;;;32.8168;-51.4829;0;Bottom;Copper Fill155
257;;;46.8122;-11.9224;0;Bottom;Copper Fill121
258;;;51.5055;-27.0934;0;Bottom;Via28
259;;;28.8035;-15.8903;0;Bottom;TXT18
260;;;90.6272;-28.4324;0;Bottom;Copper Fill88
261;;;95.3262;-18.8439;0;Bottom;Copper Fill69
262;;;35.3568;-51.4829;0;Bottom;Copper Fill7
263;;;23.7236;-8.722;0;Bottom;Copper Fill286
264;;;62.9158;-33.0171;0;Bottom;Copper Fill215
265;;;41.9806;-1.05826;0;Bottom;Via33
266;;;78.5368;-48.9683;0;Bottom;Copper Fill180
267;;;78.1177;-19.9869;0;Bottom;Copper Fill109
268;330k;0805 [SMD];53.4105;-14.0032;-90;Top;R2
269;;;65.913;-11.4525;0;Bottom;Copper Fill259
270;;;3.1877;-24.1779;0;Bottom;Copper Fill316
271;;;40.4368;-51.4829;0;Bottom;Copper Fill158
272;;;20.1168;-51.4829;0;Bottom;Copper Fill150
273;;;59.7605;-10.5834;0;Bottom;Via17
274;;;97.9932;-3.0324;0;Bottom;Copper Fill99
275;;;30.1244;-37.1319;0;Bottom;Copper Fill213
276;;;52.1081;-11.0969;0;Bottom;Copper Fill135
277;;;47.0916;-33.6013;0;Bottom;Copper Fill223
278;;;95.3262;-23.9239;0;Bottom;Copper Fill235
279;;;78.3336;-11.9224;0;Bottom;Copper Fill107
280;;;19.5072;-13.5099;0;Bottom;Copper Fill64
281;;;11.7094;-43.3549;0;Bottom;Copper Fill185
282;;;24.5872;-8.722;0;Bottom;Copper Fill93
283;;;54.6608;-51.4829;0;Bottom;Copper Fill14
284;;;81.9277;-32.6869;0;Bottom;Copper Fill138
285;;;43.9166;-21.8157;0;Bottom;Copper Fill238
286;;;98.8822;-3.0324;0;Bottom;Copper Fill294
287;;;55.9816;-17.0659;0;Bottom;Copper Fill246
288;;;95.3262;-46.7839;0;Bottom;Copper Fill184
289;;;2.3368;-23.3524;0;Bottom;Copper Fill318
290;;;93.1926;-7.452;0;Bottom;Copper Fill310
291;;;40.4368;-51.4829;0;Bottom;Copper Fill9
292;;;49.7332;-30.9724;0;Bottom;Copper Fill319
293;;;90.2081;-28.8769;0;Bottom;Copper Fill279
294;330k;0805 [SMD];63.5705;-14.0032;-90;Top;R15
295;;;52.1208;-51.4829;0;Bottom;Copper Fill162
296;;;66.0908;-50.7971;0;Bottom;Copper Fill167
297;;;46.1772;-21.5109;0;Bottom;Copper Fill239
298;;;54.8894;-48.3333;0;Bottom;Copper Fill33
299;;;49.5808;-51.4829;0;Bottom;Copper Fill161
300;;;95.3262;-31.5439;0;Bottom;Copper Fill227
301;;;94.0181;-6.6519;0;Bottom;Copper Fill117
302;;;44.5205;-11.8534;0;Bottom;Via21
303;;;81.9277;-31.7979;0;Bottom;Copper Fill139
304;;;22.2549;-19.3072;0;Bottom;TXT3
305;;;41.9481;-0.7083;0;Bottom;Copper Fill276
306;;;94.1832;-3.0324;0;Bottom;Copper Fill307
307;;;97.9932;-3.0324;0;Bottom;Copper Fill293
308;;;25.0444;-40.8403;0;Bottom;Copper Fill195
309;;;3.1877;-22.5015;0;Bottom;Copper Fill123
310;;;95.631;-13.3067;0;Bottom;Copper Fill72
311;180k;0805 [SMD];55.9505;-6.38318;90;Top;R5
312;;;98.4955;-2.96335;0;Bottom;Via27
313;;;54.4322;-35.2269;0;Bottom;Copper Fill204
314;;;73.4822;-31.582;0;Bottom;Copper Fill131
315;;;95.3262;-39.1639;0;Bottom;Copper Fill41
316;;;52.1208;-51.4829;0;Bottom;Copper Fill13
317;;;69.9008;-51.4829;0;Bottom;Copper Fill18
318;;;55.753;-11.4525;0;Bottom;Copper Fill255
319;;;63.754;-16.5579;0;Bottom;Copper Fill249
320;;;92.1512;-12.0113;0;Bottom;Copper Fill73
321;;;97.3582;-27.772;0;Bottom;Copper Fill147
322;;;90.2081;-27.9879;0;Bottom;Copper Fill280
323;;;46.4255;-11.8534;0;Bottom;Via22
324;;;64.8405;-10.5834;0;Bottom;Via19
325;;;14.2494;-42.7199;0;Bottom;Copper Fill188
326;;;61.214;-16.8627;0;Bottom;Copper Fill248
327;;;72.4605;-22.0134;0;Bottom;Via1
328;;;64.8081;-11.0969;0;Bottom;Copper Fill144
329;;;77.5208;-51.4829;0;Bottom;Copper Fill21
330;;;72.4408;-51.4829;0;Bottom;Copper Fill19
331;;;19.9644;-20.3171;0;Bottom;Copper Fill57
332;;;47.244;-47.3935;0;Bottom;Copper Fill30
333;;;48.0568;-30.9724;0;Bottom;Copper Fill125
334;;;49.6005;-10.5834;0;Bottom;Via14
335;;;54.6481;-10.2079;0;Bottom;Copper Fill324
336;;;94.6277;-3.4769;0;Bottom;Copper Fill306
337;;;69.9008;-51.4829;0;Bottom;Copper Fill168
338;;;24.2005;-8.67835;0;Bottom;Via30
339;;;95.3262;-41.7039;0;Bottom;Copper Fill40
340;;;47.0408;-51.4829;0;Bottom;Copper Fill160
341;;;82.3722;-32.2424;0;Bottom;Copper Fill141
342;;;61.6077;-24.1779;0;Bottom;Copper Fill277
343;;;32.1818;-37.3351;0;Bottom;Copper Fill43
344;;;75.0824;-34.6173;0;Bottom;Copper Fill218
345;;;23.7236;-3.0324;0;Bottom;Copper Fill133
346;;;78.7781;-12.3669;0;Bottom;Copper Fill299
347;;;97.3582;-7.452;0;Bottom;Copper Fill119
348;;;7.2644;-18.7169;0;Bottom;Copper Fill52
349;;;32.6644;-39.9005;0;Bottom;Copper Fill200
350;;;59.7281;-10.2079;0;Bottom;Copper Fill328
351;;;22.6568;-51.4829;0;Bottom;Copper Fill2
352;;;59.7408;-51.4829;0;Bottom;Copper Fill165
353;;;77.6732;-24.6224;0;Bottom;Copper Fill103
354;;;77.5208;-51.4829;0;Bottom;Copper Fill171
355;;;61.6077;-24.1779;0;Bottom;Copper Fill85
356;;;72.4408;-51.4829;0;Bottom;Copper Fill169
357;;;71.8312;-27.8355;0;Bottom;Copper Fill228
358;;;27.5844;-21.2569;0;Bottom;Copper Fill60
359;;;74.0918;-49.6033;0;Bottom;Copper Fill178
360;180k;0805 [SMD];58.4905;-6.38318;90;Top;R7
361;180k;0805 [SMD];66.1105;-6.38318;90;Top;R12
362;;;23.7236;-3.0324;0;Bottom;Copper Fill321
363;;;44.0944;-47.9269;0;Bottom;Copper Fill10
364;;;91.8464;-14.8815;0;Bottom;Copper Fill71
365;;;48.7934;-38.3257;0;Bottom;Copper Fill201
366;;;37.5355;-4.23335;0;Bottom;Via10
367;;;49.5681;-10.2079;0;Bottom;Copper Fill315
368;;;51.8922;-27.1624;0;Bottom;Copper Fill96
369;;;67.3608;-6.4233;0;Bottom;Copper Fill270
370;;;90.551;-24.3811;0;Bottom;Copper Fill49
371;;;53.213;-11.4525;0;Bottom;Copper Fill254
372;;;49.1236;-10.6524;0;Bottom;Copper Fill128
373;;;78.7781;-11.4779;0;Bottom;Copper Fill300
374;;;25.0698;-20.9267;0;Bottom;Copper Fill59
375;;;69.85;-31.8741;0;Bottom;Copper Fill225
376;;;48.3305;-2.32835;0;Bottom;Via31
377;;;30.1244;-21.5871;0;Bottom;Copper Fill61
378;;;24.1681;-9.1665;0;Bottom;Copper Fill90
379;;;62.2681;-10.2079;0;Bottom;Copper Fill329
380;180k;0805 [SMD];53.4105;-6.38318;90;Top;R1
381;;;70.9422;-25.0415;0;Bottom;Copper Fill231
382;;;81.9855;-32.1734;0;Bottom;Via12
383;;;95.3262;-34.0839;0;Bottom;Copper Fill45
384;;;95.3008;-51.4829;0;Bottom;Copper Fill25
385;;;95.3262;-46.7839;0;Bottom;Copper Fill38
386;;;78.1177;-25.0669;0;Bottom;Copper Fill295
387;;;52.324;-48.0285;0;Bottom;Copper Fill32
388;;;82.7024;-25.0161;0;Bottom;Copper Fill233
389;;;46.8122;-11.9224;0;Bottom;Copper Fill313

View File

@ -653,10 +653,12 @@ page = 10
unused10_97 = scalar, U08, 97, "", 1, 0, 0, 255, 0
unused10_98 = scalar, U08, 98, "", 1, 0, 0, 255, 0
unused10_99 = scalar, U08, 99, "", 1, 0, 0, 255, 0
speeduino_tsCanId = bits, U08, 100, [0:3], $tsCanId_list
true_address = bits, U16, 101, [0:10], $CAN_ADDRESS_HEX
realtime_base_address = bits, U16, 103, [0:10], $CAN_ADDRESS_HEX
obd_address = bits, U16, 105, [0:10], $CAN_ADDRESS_HEX
;unused10_101 = scalar, U16, 101, "", 1, 0, 0, 255, 0
;unused10_103 = scalar, U16, 103, "", 1, 0, 0, 255, 0
;unused10_105 = scalar, U16, 105, "", 1, 0, 0, 255, 0

View File

@ -4,26 +4,26 @@
#include <limits.h>
#if defined(CORE_AVR)
#define READ_PRI_TRIGGER() ((*triggerPri_pin_port & triggerPri_pin_mask) ? HIGH : LOW)
#define READ_SEC_TRIGGER() ((*triggerSec_pin_port & triggerSec_pin_mask) ? HIGH : LOW)
#define READ_PRI_TRIGGER() ((*triggerPri_pin_port & triggerPri_pin_mask) ? true : false)
#define READ_SEC_TRIGGER() ((*triggerSec_pin_port & triggerSec_pin_mask) ? true : false)
#elif defined(CORE_TEENSY) || defined(CORE_STM32)
#define READ_PRI_TRIGGER() digitalRead(pinTrigger)
#define READ_SEC_TRIGGER() digitalRead(pinTrigger2)
#endif
static inline void addToothLogEntry(unsigned long);
static inline int stdGetRPM();
static inline uint16_t stdGetRPM();
static inline void setFilter(unsigned long);
static inline int crankingGetRPM(byte);
void triggerSetup_missingTooth();
void triggerPri_missingTooth();
void triggerSec_missingTooth();
int getRPM_missingTooth();
uint16_t getRPM_missingTooth();
int getCrankAngle_missingTooth(int timePerDegree);
void triggerSetup_DualWheel();
void triggerPri_DualWheel();
void triggerSec_DualWheel();
int getRPM_DualWheel();
uint16_t getRPM_DualWheel();
int getCrankAngle_DualWheel(int timePerDegree);
unsigned long MAX_STALL_TIME = 500000UL; //The maximum time (in uS) that the system will continue to function before the engine is considered stalled/stopped. This is unique to each decoder, depending on the number of teeth etc. 500000 (half a second) is used as the default value, most decoders will be much less.
@ -54,7 +54,7 @@ volatile unsigned long secondaryLastToothTime1 = 0; //The time (micros()) that t
volatile int triggerActualTeeth;
volatile unsigned long triggerFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering)
unsigned int triggerSecFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering) for the secondary input
unsigned long triggerSecFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering) for the secondary input
unsigned int triggerSecFilterTime_duration; // The shortest valid time (in uS) pulse DURATION
volatile int triggerToothAngle; //The number of crank degrees that elapse per tooth
unsigned long revolutionTime; //The time in uS that one revolution would take at current speed (The time tooth 1 was last seen, minus the time it was seen prior to that)

File diff suppressed because it is too large Load Diff

View File

@ -17,32 +17,32 @@ byte setError(byte errorID)
errorCodes[errorCount] = errorID;
errorCount++;
if(errorCount == 1) { BIT_SET(currentStatus.spark, BIT_SPARK_ERROR); } //Enable the error indicator
return errorCount;
}
return 0;
return errorCount;
}
void clearError(byte errorID)
{
byte clearedError;
byte clearedError = 255;
if (errorID == errorCodes[0]) { clearedError = 0; }
else if(errorID == errorCodes[1]) { clearedError = 1; }
else if(errorID == errorCodes[2]) { clearedError = 2; }
else if(errorID == errorCodes[3]) { clearedError = 3; }
else return; //Occurs when the error we're being asked to clear is not currently one of the active errors
errorCodes[clearedError] = ERR_NONE;
//Clear the required error and move any from above it 'down' in the error array
for (byte x=clearedError; x < (errorCount-1); x++)
if(clearedError < MAX_ERRORS)
{
errorCodes[x] = errorCodes[x+1];
errorCodes[x+1] = ERR_NONE;
errorCodes[clearedError] = ERR_NONE;
//Clear the required error and move any from above it 'down' in the error array
for (byte x=clearedError; x < (errorCount-1); x++)
{
errorCodes[x] = errorCodes[x+1];
errorCodes[x+1] = ERR_NONE;
}
errorCount--;
if(errorCount == 0) { BIT_CLEAR(currentStatus.spark, BIT_SPARK_ERROR); } //Enable the error indicator
}
errorCount--;
if(errorCount == 0) { BIT_CLEAR(currentStatus.spark, BIT_SPARK_ERROR); } //Enable the error indicator
}
byte getNextError()

View File

@ -161,8 +161,8 @@ volatile byte triggerSec_pin_mask;
//The status struct contains the current values for all 'live' variables
//In current version this is 64 bytes
struct statuses {
volatile boolean hasSync;
unsigned int RPM;
volatile bool hasSync;
uint16_t RPM;
long longRPM;
int mapADC;
long MAP; //Has to be a long for PID calcs (Boost control)

View File

@ -25,7 +25,7 @@ struct StepperIdle
volatile unsigned long stepStartTime; //The time the curren
};
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
#if defined(CORE_AVR)
#define IDLE_COUNTER TCNT4
#define IDLE_COMPARE OCR4C

View File

@ -19,12 +19,12 @@ void initialiseIdle()
{
//By default, turn off the PWM interrupt (It gets turned on below if needed)
IDLE_TIMER_DISABLE();
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
#if defined(CORE_AVR) //AVR chips use the ISR for this
//No timer work required for AVRs. Timer is shared with the schedules and setup in there.
#elif defined (CORE_TEENSY)
if(configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_OL || configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_CL)
if( (configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_OL) || (configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_CL) )
{
//FlexTimer 2 is used for idle
FTM2_MODE |= FTM_MODE_WPDIS; // Write Protection Disable
@ -154,7 +154,6 @@ void initialiseIdle()
iacCrankStepsTable.axisX = configPage4.iacCrankBins;
iacStepTime = configPage4.iacStepTime * 1000;
//homeStepper(); //Returns the stepper to the 'home' position
completedHomeSteps = 0;
idleStepper.curIdleStep = 0;
idleStepper.stepperStatus = SOFF;
@ -181,6 +180,10 @@ void initialiseIdle()
idlePID.SetTunings(configPage3.idleKP, configPage3.idleKI, configPage3.idleKD);
idlePID.SetMode(AUTOMATIC); //Turn PID on
break;
default:
//Well this just shouldn't happen
break;
}
idleInitComplete = configPage4.iacAlgorithm; //Sets which idle method was initialised
currentStatus.idleLoad = 0;
@ -242,48 +245,53 @@ void idleControl()
case IAC_ALGORITHM_STEP_OL: //Case 4 is open loop stepper control
//First thing to check is whether there is currently a step going on and if so, whether it needs to be turned off
if( checkForStepping() ) { return; } //If this is true it means there's either a step taking place or
if( !isStepperHomed() ) { return; } //Check whether homing is completed yet.
//Check for cranking pulsewidth
if( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) )
if( isStepperHomed() && !checkForStepping() ) //Check that homing is complete and that there's not currently a step already taking place
{
//Currently cranking. Use the cranking table
idleStepper.targetIdleStep = table2D_getValue(&iacCrankStepsTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)) * 3; //All temps are offset by 40 degrees. Step counts are divided by 3 in TS. Multiply back out here
doStep();
}
else if( (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET) < iacStepTable.axisX[IDLE_TABLE_SIZE-1])
{
//Standard running
if ((mainLoopCount & 255) == 1)
//Check for cranking pulsewidth
if( BIT_CHECK(currentStatus.engine, BIT_ENGINE_CRANK) )
{
//Only do a lookup of the required value around 4 times per second. Any more than this can create too much jitter and require a hyster value that is too high
idleStepper.targetIdleStep = table2D_getValue(&iacStepTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)) * 3; //All temps are offset by 40 degrees. Step counts are divided by 3 in TS. Multiply back out here
iacStepTime = configPage4.iacStepTime * 1000;
//Currently cranking. Use the cranking table
idleStepper.targetIdleStep = table2D_getValue(&iacCrankStepsTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)) * 3; //All temps are offset by 40 degrees. Step counts are divided by 3 in TS. Multiply back out here
doStep();
}
doStep();
else if( (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET) < iacStepTable.axisX[IDLE_TABLE_SIZE-1])
{
//Standard running
if ((mainLoopCount & 255) == 1)
{
//Only do a lookup of the required value around 4 times per second. Any more than this can create too much jitter and require a hyster value that is too high
idleStepper.targetIdleStep = table2D_getValue(&iacStepTable, (currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET)) * 3; //All temps are offset by 40 degrees. Step counts are divided by 3 in TS. Multiply back out here
iacStepTime = configPage4.iacStepTime * 1000;
}
doStep();
}
currentStatus.idleLoad = idleStepper.curIdleStep >> 1; //Current step count (Divided by 2 for byte)
}
currentStatus.idleLoad = idleStepper.curIdleStep >> 1; //Current step count (Divided by 2 for byte)
break;
case IAC_ALGORITHM_STEP_CL://Case 5 is closed loop stepper control
//First thing to check is whether there is currently a step going on and if so, whether it needs to be turned off
if( checkForStepping() ) { return; } //If this is true it means there's either a step taking place or
if( !isStepperHomed() ) { return; } //Check whether homing is completed yet.
if( (idleCounter & 31) == 1)
if( isStepperHomed() && !checkForStepping() ) //Check that homing is complete and that there's not currently a step already taking place
{
//This only needs to be run very infrequently, once every 32 calls to idleControl(). This is approx. once per second
idlePID.SetTunings(configPage3.idleKP, configPage3.idleKI, configPage3.idleKD);
iacStepTime = configPage4.iacStepTime * 1000;
if( (idleCounter & 31) == 1)
{
//This only needs to be run very infrequently, once every 32 calls to idleControl(). This is approx. once per second
idlePID.SetTunings(configPage3.idleKP, configPage3.idleKI, configPage3.idleKD);
iacStepTime = configPage4.iacStepTime * 1000;
}
idle_cl_target_rpm = table2D_getValue(&iacClosedLoopTable, currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET) * 10; //All temps are offset by 40 degrees
idlePID.Compute();
idleStepper.targetIdleStep = idle_pid_target_value;
doStep();
currentStatus.idleLoad = idleStepper.curIdleStep >> 1; //Current step count (Divided by 2 for byte)
idleCounter++;
}
break;
idle_cl_target_rpm = table2D_getValue(&iacClosedLoopTable, currentStatus.coolant + CALIBRATION_TEMPERATURE_OFFSET) * 10; //All temps are offset by 40 degrees
idlePID.Compute();
idleStepper.targetIdleStep = idle_pid_target_value;
doStep();
currentStatus.idleLoad = idleStepper.curIdleStep >> 1; //Current step count (Divided by 2 for byte)
idleCounter++;
default:
//There really should be a valid idle type
break;
}
}
@ -296,6 +304,7 @@ False: If the motor has not yet been homed. Will also perform another homing ste
*/
static inline byte isStepperHomed()
{
bool isHomed = true; //As it's the most common scenario, default value is true
if( completedHomeSteps < (configPage4.iacStepHome * 3) ) //Home steps are divided by 3 from TS
{
digitalWrite(pinStepperDir, STEPPER_BACKWARD); //Sets stepper direction to backwards
@ -304,9 +313,9 @@ static inline byte isStepperHomed()
idleStepper.stepperStatus = STEPPING;
completedHomeSteps++;
idleOn = true;
return false;
isHomed = false;
}
return true;
return isHomed;
}
/*
@ -317,7 +326,8 @@ False: If the motor is ready for another step
*/
static inline byte checkForStepping()
{
if(idleStepper.stepperStatus == STEPPING || idleStepper.stepperStatus == COOLING)
bool isStepping = false;
if( (idleStepper.stepperStatus == STEPPING) || (idleStepper.stepperStatus == COOLING) )
{
if(micros() > (idleStepper.stepStartTime + iacStepTime) )
{
@ -327,7 +337,7 @@ static inline byte checkForStepping()
digitalWrite(pinStepperStep, LOW); //Turn off the step
idleStepper.stepStartTime = micros();
idleStepper.stepperStatus = COOLING; //'Cooling' is the time the stepper needs to sit in LOW state before the next step can be made
return true;
isStepping = true;
}
else
{
@ -339,10 +349,10 @@ static inline byte checkForStepping()
else
{
//Means we're in a step, but it doesn't need to turn off yet. No further action at this time
return true;
isStepping = true;
}
}
return false;
return isStepping;
}
/*
@ -350,36 +360,31 @@ Performs a step
*/
static inline void doStep()
{
if ( idleStepper.targetIdleStep > (idleStepper.curIdleStep - configPage4.iacStepHyster) && idleStepper.targetIdleStep < (idleStepper.curIdleStep + configPage4.iacStepHyster) ) { return; } //Hysteris check
else if(idleStepper.targetIdleStep < idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_BACKWARD); idleStepper.curIdleStep--; }//Sets stepper direction to backwards
else if (idleStepper.targetIdleStep > idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_FORWARD); idleStepper.curIdleStep++; }//Sets stepper direction to forwards
if ( (idleStepper.targetIdleStep <= (idleStepper.curIdleStep - configPage4.iacStepHyster)) || (idleStepper.targetIdleStep >= (idleStepper.curIdleStep + configPage4.iacStepHyster)) ) //Hysteris check
{
if(idleStepper.targetIdleStep < idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_BACKWARD); idleStepper.curIdleStep--; }//Sets stepper direction to backwards
else if (idleStepper.targetIdleStep > idleStepper.curIdleStep) { digitalWrite(pinStepperDir, STEPPER_FORWARD); idleStepper.curIdleStep++; }//Sets stepper direction to forwards
digitalWrite(pinStepperEnable, LOW); //Enable the DRV8825
digitalWrite(pinStepperStep, HIGH);
idleStepper.stepStartTime = micros();
idleStepper.stepperStatus = STEPPING;
idleOn = true;
digitalWrite(pinStepperEnable, LOW); //Enable the DRV8825
digitalWrite(pinStepperStep, HIGH);
idleStepper.stepStartTime = micros();
idleStepper.stepperStatus = STEPPING;
idleOn = true;
}
}
//This function simply turns off the idle PWM and sets the pin low
static inline void disableIdle()
{
if(configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_CL || configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_OL)
if( (configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_CL) || (configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_OL) )
{
IDLE_TIMER_DISABLE();
digitalWrite(pinIdle1, LOW);
}
else if (configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_CL || configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_OL)
else if ( (configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_CL) || (configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_OL) )
{
digitalWrite(pinStepperEnable, HIGH); //Disable the DRV8825
idleStepper.targetIdleStep = idleStepper.curIdleStep; //Don't try to move anymore
//The below appears to be causing issues, so for now this will simply halt the stepper entirely rather than taking it back to step 1
/*
idleStepper.targetIdleStep = 1; //Home the stepper
if( checkForStepping() ) { return; } //If this is true it means there's either a step taking place or
if( !isStepperHomed() ) { return; } //Check whether homing is completed yet.
doStep();
*/
}
}
@ -387,22 +392,22 @@ static inline void disableIdle()
//Typically this is enabling the PWM interrupt
static inline void enableIdle()
{
if(configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_CL || configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_OL)
if( (configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_CL) || (configPage4.iacAlgorithm == IAC_ALGORITHM_PWM_OL) )
{
IDLE_TIMER_ENABLE();
}
else if (configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_CL || configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_OL)
else if ( (configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_CL) || (configPage4.iacAlgorithm == IAC_ALGORITHM_STEP_OL) )
{
}
}
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) //AVR chips use the ISR for this
#if defined(CORE_AVR) //AVR chips use the ISR for this
ISR(TIMER4_COMPC_vect)
#elif defined (CORE_TEENSY) || defined (CORE_STM32)
static inline void idleInterrupt() //Most ARM chips can simply call a function
#endif
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined (CORE_TEENSY)
#if defined(CORE_AVR) || defined (CORE_TEENSY)
{
if (idle_pwm_state)
{
@ -410,13 +415,13 @@ static inline void idleInterrupt() //Most ARM chips can simply call a function
{
//Normal direction
*idle_pin_port &= ~(idle_pin_mask); // Switch pin to low (1 pin mode)
if(configPage4.iacChannels) { *idle2_pin_port |= (idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
if(configPage4.iacChannels == 1) { *idle2_pin_port |= (idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
}
else
{
//Reversed direction
*idle_pin_port |= (idle_pin_mask); // Switch pin high
if(configPage4.iacChannels) { *idle2_pin_port &= ~(idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
if(configPage4.iacChannels == 1) { *idle2_pin_port &= ~(idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
}
IDLE_COMPARE = IDLE_COUNTER + (idle_pwm_max_count - idle_pwm_cur_value);
idle_pwm_state = false;
@ -427,13 +432,13 @@ static inline void idleInterrupt() //Most ARM chips can simply call a function
{
//Normal direction
*idle_pin_port |= (idle_pin_mask); // Switch pin high
if(configPage4.iacChannels) { *idle2_pin_port &= ~(idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
if(configPage4.iacChannels == 1) { *idle2_pin_port &= ~(idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
}
else
{
//Reversed direction
*idle_pin_port &= ~(idle_pin_mask); // Switch pin to low (1 pin mode)
if(configPage4.iacChannels) { *idle2_pin_port |= (idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
if(configPage4.iacChannels == 1) { *idle2_pin_port |= (idle2_pin_mask); } //If 2 idle channels are in use, flip idle2 to be the opposite of idle1
}
IDLE_COMPARE = IDLE_COUNTER + idle_pwm_target_value;
idle_pwm_cur_value = idle_pwm_target_value;

View File

@ -1,7 +1,7 @@
#ifndef MATH_H
#define MATH_H
int fastMap1023toX(unsigned long, int);
int fastMap1023toX(int, int);
unsigned long percentage(byte, unsigned long);
#endif

View File

@ -5,7 +5,12 @@
//Replace the standard arduino map() function to use the div function instead
int fastMap(unsigned long x, int in_min, int in_max, int out_min, int out_max)
{
return ldiv( ((x - in_min) * (out_max - out_min)) , (in_max - in_min) ).quot + out_min;
unsigned long a = (x - (unsigned long)in_min);
int b = (out_max - out_min);
int c = (in_max - in_min);
int d = (ldiv( (a * (long)b) , (long)c ).quot);
return d + out_min;
//return ldiv( ((x - in_min) * (out_max - out_min)) , (in_max - in_min) ).quot + out_min;
//return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
@ -13,7 +18,7 @@ int fastMap(unsigned long x, int in_min, int in_max, int out_min, int out_max)
//This is a common case because it means converting from a standard 10-bit analog input to a byte or 10-bit analog into 0-511 (Eg the temperature readings)
//int fastMap1023toX(unsigned long x, int in_min, int in_max, int out_min, int out_max)
//removed ununsed variables, in_min and out_min is aways 0, in_max is aways 1023
int fastMap1023toX(unsigned long x, int out_max)
int fastMap1023toX(int x, int out_max)
{
return (x * out_max) >> 10;
}
@ -24,57 +29,59 @@ Ref: http://www.hackersdelight.org/divcMore.pdf
*/
//Unsigned divide by 10
unsigned int divu10(unsigned int n) {
unsigned long q, r;
q = (n >> 1) + (n >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = n - q*10;
return q + ((r + 6) >> 4);
// return q + (r > 9);
unsigned int divu10(unsigned int n)
{
unsigned long q, r;
q = (n >> 1) + (n >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = n - (q * 10);
return q + ((r + 6) >> 4);
}
//Signed divide by 10
int divs10(long n) {
long q, r;
n = n + (n>>31 & 9);
q = (n >> 1) + (n >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = n - q*10;
return q + ((r + 6) >> 4);
// return q + (r > 9);
int divs10(long n)
{
long q, r, p;
p = n + ( (n>>31) & 9);
q = (p >> 1) + (p >> 2);
q = q + (q >> 4);
q = q + (q >> 8);
q = q + (q >> 16);
q = q >> 3;
r = p - (q * 10);
return q + ((r + 6) >> 4);
}
//Signed divide by 100
int divs100(long n) {
int divs100(long n)
{
return (n / 100); // Amazingly, gcc is producing a better /divide by 100 function than this
long q, r;
n = n + (n>>31 & 99);
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
(n >> 12) + (n >> 13) - (n >> 16);
q = q + (q >> 20);
q = q >> 6;
r = n - q*100;
return q + ((r + 28) >> 7);
// return q + (r > 99);
/*
long q, r;
n = n + (n>>31 & 99);
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
(n >> 12) + (n >> 13) - (n >> 16);
q = q + (q >> 20);
q = q >> 6;
r = n - q*100;
return q + ((r + 28) >> 7);
*/
}
//Unsigned divide by 100
unsigned long divu100(unsigned long n) {
//return (n / 100); // No difference with this on/off
unsigned long q, r;
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
(n >> 12) + (n >> 13) - (n >> 16);
q = q + (q >> 20);
q = q >> 6;
r = n - q*100;
return q + ((r + 28) >> 7);
// return q + (r > 99);
unsigned long divu100(unsigned long n)
{
//return (n / 100);
unsigned long q, r;
q = (n >> 1) + (n >> 3) + (n >> 6) - (n >> 10) +
(n >> 12) + (n >> 13) - (n >> 16);
q = q + (q >> 20);
q = q >> 6;
r = n - (q * 100);
return q + ((r + 28) >> 7);
}
//Return x percent of y
@ -91,7 +98,7 @@ unsigned long percentage(byte x, unsigned long y)
inline long powint(int factor, unsigned int exponent)
{
long product = 1;
while (exponent--)
product *= factor;
unsigned int counter = exponent;
while ( (counter--) > 0) { product *= factor; }
return product;
}

View File

@ -1,30 +1,39 @@
#ifndef SCHEDULEDIO_H
#define SCHEDULEDIO_H
inline void openInjector1();
inline void closeInjector1();
inline void beginCoil1Charge();
inline void endCoil1Charge();
inline void openInjector2();
inline void closeInjector2();
inline void beginCoil2Charge();
inline void endCoil2Charge();
inline void openInjector3();
inline void closeInjector3();
inline void beginCoil3Charge();
inline void endCoil3Charge();
inline void openInjector4();
inline void closeInjector4();
inline void beginCoil4Charge();
inline void endCoil4Charge();
inline void openInjector5();
inline void closeInjector5();
inline void beginCoil5Charge();
inline void endCoil5Charge();
#endif
#define openInjector1() *inj1_pin_port |= (inj1_pin_mask); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ1)
#define closeInjector1() *inj1_pin_port &= ~(inj1_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ1)
#define openInjector2() *inj2_pin_port |= (inj2_pin_mask); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ2)
#define closeInjector2() *inj2_pin_port &= ~(inj2_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ2)
#define openInjector3() *inj3_pin_port |= (inj3_pin_mask); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ3)
#define closeInjector3() *inj3_pin_port &= ~(inj3_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ3)
#define openInjector4() *inj4_pin_port |= (inj4_pin_mask); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ4)
#define closeInjector4() *inj4_pin_port &= ~(inj4_pin_mask); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ4)
#define openInjector5() *inj5_pin_port |= (inj5_pin_mask)
#define closeInjector5() *inj5_pin_port &= ~(inj5_pin_mask)
#define openInjector1and4() openInjector1(); openInjector4()
#define closeInjector1and4() closeInjector1(); closeInjector4()
#define openInjector2and3() openInjector2(); openInjector2()
#define closeInjector2and3() closeInjector2(); closeInjector2()
//5 cylinder support doubles up injector 3 as being closese to inj 5 (Crank angle)
#define openInjector3and5() openInjector3(); openInjector5()
#define closeInjector3and5() closeInjector3(); closeInjector5()
#endif

View File

@ -37,43 +37,23 @@ volatile bool tachoAlt = true;
#define TACH_PULSE_HIGH() *tach_pin_port |= (tach_pin_mask)
#define TACH_PULSE_LOW() if( (configPage1.tachoDiv == 0) || tachoAlt ) *tach_pin_port &= ~(tach_pin_mask); tachoAlt = !tachoAlt
inline void openInjector1() { digitalWrite(pinInjector1, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ1); }
inline void closeInjector1() { digitalWrite(pinInjector1, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ1); }
inline void beginCoil1Charge() { digitalWrite(pinCoil1, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil1Charge() { digitalWrite(pinCoil1, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector2() { digitalWrite(pinInjector2, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ2); } //Sets the relevant pin HIGH and changes the current status bit for injector 2 (2nd bit of currentStatus.squirt)
inline void closeInjector2() { digitalWrite(pinInjector2, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ2); }
inline void beginCoil2Charge() { digitalWrite(pinCoil2, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil2Charge() { digitalWrite(pinCoil2, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector3() { digitalWrite(pinInjector3, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ3); } //Sets the relevant pin HIGH and changes the current status bit for injector 3 (3rd bit of currentStatus.squirt)
inline void closeInjector3() { digitalWrite(pinInjector3, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ3); }
inline void beginCoil3Charge() { digitalWrite(pinCoil3, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil3Charge() { digitalWrite(pinCoil3, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector4() { digitalWrite(pinInjector4, HIGH); BIT_SET(currentStatus.squirt, BIT_SQUIRT_INJ4); } //Sets the relevant pin HIGH and changes the current status bit for injector 4 (4th bit of currentStatus.squirt)
inline void closeInjector4() { digitalWrite(pinInjector4, LOW); BIT_CLEAR(currentStatus.squirt, BIT_SQUIRT_INJ4); }
inline void beginCoil4Charge() { digitalWrite(pinCoil4, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil4Charge() { digitalWrite(pinCoil4, coilLOW); TACH_PULSE_HIGH(); }
inline void openInjector5() { digitalWrite(pinInjector5, HIGH); }
inline void closeInjector5() { digitalWrite(pinInjector5, LOW); }
inline void beginCoil5Charge() { digitalWrite(pinCoil5, coilHIGH); TACH_PULSE_LOW(); }
inline void endCoil5Charge() { digitalWrite(pinCoil5, coilLOW); TACH_PULSE_HIGH(); }
//#endif
//Combination functions for semi-sequential injection
void openInjector1and4() { digitalWrite(pinInjector1, HIGH); digitalWrite(pinInjector4, HIGH); BIT_SET(currentStatus.squirt, 0); }
void closeInjector1and4() { digitalWrite(pinInjector1, LOW); digitalWrite(pinInjector4, LOW);BIT_CLEAR(currentStatus.squirt, 0); }
void openInjector2and3() { digitalWrite(pinInjector2, HIGH); digitalWrite(pinInjector3, HIGH); BIT_SET(currentStatus.squirt, 1); }
void closeInjector2and3() { digitalWrite(pinInjector2, LOW); digitalWrite(pinInjector3, LOW); BIT_CLEAR(currentStatus.squirt, 1); }
//Below functions are used for 5 cylinder support
void openInjector3and5() { digitalWrite(pinInjector3, HIGH); digitalWrite(pinInjector5, HIGH); BIT_SET(currentStatus.squirt, 0); }
void closeInjector3and5() { digitalWrite(pinInjector3, LOW); digitalWrite(pinInjector5, LOW);BIT_CLEAR(currentStatus.squirt, 0); }
//As above but for ignition (Wasted COP mode)
void beginCoil1and3Charge() { digitalWrite(pinCoil1, coilHIGH); digitalWrite(pinCoil3, coilHIGH); digitalWrite(pinTachOut, LOW); }
void endCoil1and3Charge() { digitalWrite(pinCoil1, coilLOW); digitalWrite(pinCoil3, coilLOW); }
@ -81,4 +61,3 @@ void beginCoil2and4Charge() { digitalWrite(pinCoil2, coilHIGH); digitalWrite(pin
void endCoil2and4Charge() { digitalWrite(pinCoil2, coilLOW); digitalWrite(pinCoil4, coilLOW); }
void nullCallback() { return; }

View File

@ -26,7 +26,7 @@ See page 136 of the processors datasheet: http://www.atmel.com/Images/doc2549.pd
#define SCHEDULER_H
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__)
#if defined(CORE_AVR)
#include <avr/interrupt.h>
#include <avr/io.h>

View File

@ -224,12 +224,13 @@ timeout: The number of uS in the future that the startCallback should be trigger
duration: The number of uS after startCallback is called before endCallback is called
endCallback: This function is called once the duration time has been reached
*/
void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
//void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
void setFuelSchedule1(unsigned long timeout, unsigned long duration)
{
if(fuelSchedule1.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
fuelSchedule1.StartCallback = startCallback; //Name the start callback function
fuelSchedule1.EndCallback = endCallback; //Name the end callback function
//fuelSchedule1.StartCallback = startCallback; //Name the start callback function
//fuelSchedule1.EndCallback = endCallback; //Name the end callback function
fuelSchedule1.duration = duration;
/*
@ -249,12 +250,12 @@ void setFuelSchedule1(void (*startCallback)(), unsigned long timeout, unsigned l
interrupts();
FUEL1_TIMER_ENABLE();
}
void setFuelSchedule2(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
void setFuelSchedule2(unsigned long timeout, unsigned long duration)
{
if(fuelSchedule2.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
fuelSchedule2.StartCallback = startCallback; //Name the start callback function
fuelSchedule2.EndCallback = endCallback; //Name the end callback function
//fuelSchedule2.StartCallback = startCallback; //Name the start callback function
//fuelSchedule2.EndCallback = endCallback; //Name the end callback function
fuelSchedule2.duration = duration;
/*
@ -272,12 +273,13 @@ void setFuelSchedule2(void (*startCallback)(), unsigned long timeout, unsigned l
interrupts();
FUEL2_TIMER_ENABLE();
}
void setFuelSchedule3(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
//void setFuelSchedule3(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)())
void setFuelSchedule3(unsigned long timeout, unsigned long duration)
{
if(fuelSchedule3.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
fuelSchedule3.StartCallback = startCallback; //Name the start callback function
fuelSchedule3.EndCallback = endCallback; //Name the end callback function
//fuelSchedule3.StartCallback = startCallback; //Name the start callback function
//fuelSchedule3.EndCallback = endCallback; //Name the end callback function
fuelSchedule3.duration = duration;
/*
@ -295,12 +297,13 @@ void setFuelSchedule3(void (*startCallback)(), unsigned long timeout, unsigned l
interrupts();
FUEL3_TIMER_ENABLE();
}
void setFuelSchedule4(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()) //Uses timer 4 compare B
//void setFuelSchedule4(void (*startCallback)(), unsigned long timeout, unsigned long duration, void(*endCallback)()) //Uses timer 4 compare B
void setFuelSchedule4(unsigned long timeout, unsigned long duration) //Uses timer 4 compare B
{
if(fuelSchedule4.Status == RUNNING) { return; } //Check that we're not already part way through a schedule
fuelSchedule4.StartCallback = startCallback; //Name the start callback function
fuelSchedule4.EndCallback = endCallback; //Name the end callback function
//fuelSchedule4.StartCallback = startCallback; //Name the start callback function
//fuelSchedule4.EndCallback = endCallback; //Name the end callback function
fuelSchedule4.duration = duration;
/*
@ -463,13 +466,17 @@ static inline void fuelSchedule1Interrupt() //Most ARM chips can simply call a f
if (timer3Aqueue[0]->Status == OFF) { FUEL1_TIMER_DISABLE(); return; } //Safety check. Turn off this output compare unit and return without performing any action
if (timer3Aqueue[0]->Status == PENDING) //Check to see if this schedule is turn on
{
timer3Aqueue[0]->StartCallback();
//timer3Aqueue[0]->StartCallback();
if (configPage1.injLayout == INJ_SEMISEQUENTIAL) { openInjector1and4(); }
else { openInjector1(); }
timer3Aqueue[0]->Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
FUEL1_COMPARE = popQueue(timer3Aqueue);
}
else if (timer3Aqueue[0]->Status == RUNNING)
{
timer3Aqueue[0]->EndCallback();
//timer3Aqueue[0]->EndCallback();
if (configPage1.injLayout == INJ_SEMISEQUENTIAL) { closeInjector1and4(); }
else { closeInjector1(); }
timer3Aqueue[0]->Status = OFF; //Turn off the schedule
timer3Aqueue[0]->schedulesSet = 0;
FUEL1_COMPARE = popQueue(timer3Aqueue);
@ -484,13 +491,17 @@ static inline void fuelSchedule2Interrupt() //Most ARM chips can simply call a f
{
if (fuelSchedule2.Status == PENDING) //Check to see if this schedule is turn on
{
fuelSchedule2.StartCallback();
//fuelSchedule2.StartCallback();
if (configPage1.injLayout == INJ_SEMISEQUENTIAL) { openInjector2and3(); }
else { openInjector2(); }
fuelSchedule2.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
FUEL2_COMPARE = fuelSchedule2.endCompare;
}
else if (fuelSchedule2.Status == RUNNING)
{
fuelSchedule2.EndCallback();
//fuelSchedule2.EndCallback();
if (configPage1.injLayout == INJ_SEMISEQUENTIAL) { closeInjector2and3(); }
else { closeInjector2(); }
fuelSchedule2.Status = OFF; //Turn off the schedule
fuelSchedule2.schedulesSet = 0;
FUEL2_TIMER_DISABLE();
@ -505,13 +516,19 @@ static inline void fuelSchedule3Interrupt() //Most ARM chips can simply call a f
{
if (fuelSchedule3.Status == PENDING) //Check to see if this schedule is turn on
{
fuelSchedule3.StartCallback();
//fuelSchedule3.StartCallback();
//Hack for 5 cylinder
if(channel5InjEnabled) { openInjector3and5(); }
else { openInjector3(); }
fuelSchedule3.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
FUEL3_COMPARE = fuelSchedule3.endCompare;
}
else if (fuelSchedule3.Status == RUNNING)
{
fuelSchedule3.EndCallback();
//fuelSchedule3.EndCallback();
//Hack for 5 cylinder
if(channel5InjEnabled) { closeInjector3and5(); }
else { closeInjector3and5(); }
fuelSchedule3.Status = OFF; //Turn off the schedule
fuelSchedule3.schedulesSet = 0;
FUEL3_TIMER_DISABLE();
@ -526,13 +543,15 @@ static inline void fuelSchedule4Interrupt() //Most ARM chips can simply call a f
{
if (fuelSchedule4.Status == PENDING) //Check to see if this schedule is turn on
{
fuelSchedule4.StartCallback();
//fuelSchedule4.StartCallback();
openInjector4();
fuelSchedule4.Status = RUNNING; //Set the status to be in progress (ie The start callback has been called, but not the end callback)
FUEL4_COMPARE = fuelSchedule4.endCompare;
}
else if (fuelSchedule4.Status == RUNNING)
{
fuelSchedule4.EndCallback();
//fuelSchedule4.EndCallback();
closeInjector4();
fuelSchedule4.Status = OFF; //Turn off the schedule
fuelSchedule4.schedulesSet = 0;
FUEL4_TIMER_DISABLE();

View File

@ -68,7 +68,7 @@ bool fuelPumpOn = false; //The current status of the fuel pump
void (*trigger)(); //Pointer for the trigger function (Gets pointed to the relevant decoder)
void (*triggerSecondary)(); //Pointer for the secondary trigger function (Gets pointed to the relevant decoder)
int (*getRPM)(); //Pointer to the getRPM function (Gets pointed to the relevant decoder)
uint16_t (*getRPM)(); //Pointer to the getRPM function (Gets pointed to the relevant decoder)
int (*getCrankAngle)(int); //Pointer to the getCrank Angle function (Gets pointed to the relevant decoder)
byte cltCalibrationTable[CALIBRATION_TABLE_SIZE];
@ -164,14 +164,16 @@ void setup()
{
//enable local can interface
}
#elif defined(CORE_TEESNY)
#elif defined(CORE_TEENSY)
if (configPage10.enable_canbus == 1) { Serial2.begin(115200); }
else if (configPage10.enable_canbus == 2)
{
//Teensy onboard CAN not used currently
//enable local can interface
FlexCAN CANbus0(2500000, 0); //setup can interface to 250k
static CAN_message_t txmsg,rxmsg;
CANbus0.begin();
//setup can interface to 250k
//FlexCAN CANbus0(2500000, 0);
//static CAN_message_t txmsg,rxmsg;
//CANbus0.begin();
}
#endif
@ -710,7 +712,7 @@ void setup()
channel1IgnDegrees = channel1InjDegrees = 0;
channel2IgnDegrees = channel2InjDegrees = 90;
channel3IgnDegrees = channel3InjDegrees = 180;
channel4IgnDegrees = channel3InjDegrees = 270;
channel4IgnDegrees = channel4InjDegrees = 270;
//For alternatiing injection, the squirt occurs at different times for each channel
/*
@ -830,8 +832,10 @@ void setup()
digitalWrite(pinFuelPump, HIGH);
fuelPumpOn = true;
//Perform the priming pulses. Set these to run at an arbitrary time in the future (100us). The prime pulse value is in ms*10, so need to multiple by 100 to get to uS
setFuelSchedule1(openInjector1and4, 100, (unsigned long)(configPage1.primePulse * 100), closeInjector1and4);
setFuelSchedule2(openInjector2and3, 100, (unsigned long)(configPage1.primePulse * 100), closeInjector2and3);
setFuelSchedule1(100, (unsigned long)(configPage1.primePulse * 100));
setFuelSchedule2(100, (unsigned long)(configPage1.primePulse * 100));
setFuelSchedule3(100, (unsigned long)(configPage1.primePulse * 100));
setFuelSchedule4(100, (unsigned long)(configPage1.primePulse * 100));
}
void loop()
@ -1364,22 +1368,10 @@ void loop()
if (injector1StartAngle <= crankAngle && fuelSchedule1.schedulesSet == 0) { injector1StartAngle += CRANK_ANGLE_MAX_INJ; }
if (injector1StartAngle > crankAngle)
{
if (configPage1.injLayout == INJ_SEMISEQUENTIAL)
{
setFuelSchedule1(openInjector1and4,
((unsigned long)(injector1StartAngle - crankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW1,
closeInjector1and4
);
}
else
{
setFuelSchedule1(openInjector1,
((unsigned long)(injector1StartAngle - crankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW1,
closeInjector1
);
}
setFuelSchedule1(
((unsigned long)(injector1StartAngle - crankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW1
);
}
/*-----------------------------------------------------------------------------------------
@ -1402,22 +1394,10 @@ void loop()
if (tempStartAngle <= tempCrankAngle && fuelSchedule2.schedulesSet == 0) { tempStartAngle += CRANK_ANGLE_MAX_INJ; }
if ( tempStartAngle > tempCrankAngle )
{
if (configPage1.injLayout == 1)
{
setFuelSchedule2(openInjector2and3,
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW2,
closeInjector2and3
);
}
else
{
setFuelSchedule2(openInjector2,
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW2,
closeInjector2
);
}
setFuelSchedule2(
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW2
);
}
}
@ -1430,10 +1410,9 @@ void loop()
if (tempStartAngle <= tempCrankAngle && fuelSchedule3.schedulesSet == 0) { tempStartAngle += CRANK_ANGLE_MAX_INJ; }
if ( tempStartAngle > tempCrankAngle )
{
setFuelSchedule3(openInjector3,
setFuelSchedule3(
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW3,
closeInjector3
(unsigned long)currentStatus.PW3
);
}
}
@ -1447,10 +1426,9 @@ void loop()
if (tempStartAngle <= tempCrankAngle && fuelSchedule4.schedulesSet == 0) { tempStartAngle += CRANK_ANGLE_MAX_INJ; }
if ( tempStartAngle > tempCrankAngle )
{
setFuelSchedule4(openInjector4,
setFuelSchedule4(
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW4,
closeInjector4
(unsigned long)currentStatus.PW4
);
}
}
@ -1465,10 +1443,15 @@ void loop()
if ( tempStartAngle > tempCrankAngle )
{
//Note the hacky use of fuel schedule 3 below
/*
setFuelSchedule3(openInjector3and5,
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW1,
closeInjector3and5
);*/
setFuelSchedule3(
((unsigned long)(tempStartAngle - tempCrankAngle) * (unsigned long)timePerDegree),
(unsigned long)currentStatus.PW1
);
}
}

View File

@ -33,14 +33,14 @@ void writeConfig()
for(int x=EEPROM_CONFIG1_MAP; x<EEPROM_CONFIG1_XBINS; x++)
{
offset = x - EEPROM_CONFIG1_MAP;
if(EEPROM.read(x) != fuelTable.values[15-offset/16][offset%16]) { EEPROM.write(x, fuelTable.values[15-offset/16][offset%16]); } //Write the 16x16 map
if( EEPROM.read(x) != (fuelTable.values[15-(offset/16)][offset%16]) ) { EEPROM.write(x, fuelTable.values[15-(offset/16)][offset%16]); } //Write the 16x16 map
}
//RPM bins
for(int x=EEPROM_CONFIG1_XBINS; x<EEPROM_CONFIG1_YBINS; x++)
{
offset = x - EEPROM_CONFIG1_XBINS;
if(EEPROM.read(x) != byte(fuelTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) { EEPROM.write(x, byte(fuelTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
if( EEPROM.read(x) != (byte(fuelTable.axisX[offset]/TABLE_RPM_MULTIPLIER)) ) { EEPROM.write(x, byte(fuelTable.axisX[offset]/TABLE_RPM_MULTIPLIER)); } //RPM bins are divided by 100 and converted to a byte
}
//TPS/MAP bins
for(int x=EEPROM_CONFIG1_YBINS; x<EEPROM_CONFIG2_START; x++)
@ -74,7 +74,7 @@ void writeConfig()
for(int x=EEPROM_CONFIG3_MAP; x<EEPROM_CONFIG3_XBINS; x++)
{
offset = x - EEPROM_CONFIG3_MAP;
if(EEPROM.read(x) != ignitionTable.values[15-offset/16][offset%16]) { EEPROM.write(x, ignitionTable.values[15-offset/16][offset%16]); } //Write the 16x16 map with translation
if(EEPROM.read(x) != (ignitionTable.values[15-(offset/16)][offset%16]) ) { EEPROM.write(x, ignitionTable.values[15-(offset/16)][offset%16]); } //Write the 16x16 map with translation
}
//RPM bins
for(int x=EEPROM_CONFIG3_XBINS; x<EEPROM_CONFIG3_YBINS; x++)
@ -114,7 +114,7 @@ void writeConfig()
for(int x=EEPROM_CONFIG5_MAP; x<EEPROM_CONFIG5_XBINS; x++)
{
offset = x - EEPROM_CONFIG5_MAP;
if(EEPROM.read(x) != afrTable.values[15-offset/16][offset%16]) { EEPROM.write(x, afrTable.values[15-offset/16][offset%16]); } //Write the 16x16 map
if(EEPROM.read(x) != (afrTable.values[15-(offset/16)][offset%16]) ) { EEPROM.write(x, afrTable.values[15-(offset/16)][offset%16]); } //Write the 16x16 map
}
//RPM bins
for(int x=EEPROM_CONFIG5_XBINS; x<EEPROM_CONFIG5_YBINS; x++)
@ -167,9 +167,9 @@ void writeConfig()
for(int x=EEPROM_CONFIG8_MAP1; x<EEPROM_CONFIG8_XBINS1; x++)
{
offset = x - EEPROM_CONFIG8_MAP1;
if(EEPROM.read(x) != boostTable.values[7-offset/8][offset%8]) { EEPROM.write(x, boostTable.values[7-offset/8][offset%8]); } //Write the 8x8 map
if(EEPROM.read(x) != (boostTable.values[7-(offset/8)][offset%8]) ) { EEPROM.write(x, boostTable.values[7-(offset/8)][offset%8]); } //Write the 8x8 map
offset = y - EEPROM_CONFIG8_MAP2;
if(EEPROM.read(y) != vvtTable.values[7-offset/8][offset%8]) { EEPROM.write(y, vvtTable.values[7-offset/8][offset%8]); } //Write the 8x8 map
if(EEPROM.read(y) != (vvtTable.values[7-(offset/8)][offset%8]) ) { EEPROM.write(y, vvtTable.values[7-(offset/8)][offset%8]); } //Write the 8x8 map
y++;
}
//RPM bins
@ -213,13 +213,13 @@ void writeConfig()
for(int x=EEPROM_CONFIG9_MAP1; x<EEPROM_CONFIG9_XBINS1; x++)
{
offset = x - EEPROM_CONFIG9_MAP1;
EEPROM.update(x, trim1Table.values[5-offset/6][offset%6]); //Write the 6x6 map
EEPROM.update(x, (trim1Table.values[5-(offset/6)][offset%6]) ); //Write the 6x6 map
offset = y - EEPROM_CONFIG9_MAP2;
EEPROM.update(y, trim2Table.values[5-offset/6][offset%6]); //Write the 6x6 map
EEPROM.update(y, trim2Table.values[5-(offset/6)][offset%6]); //Write the 6x6 map
offset = z - EEPROM_CONFIG9_MAP3;
EEPROM.update(z, trim3Table.values[5-offset/6][offset%6]); //Write the 6x6 map
EEPROM.update(z, trim3Table.values[5-(offset/6)][offset%6]); //Write the 6x6 map
offset = i - EEPROM_CONFIG9_MAP4;
EEPROM.update(i, trim4Table.values[5-offset/6][offset%6]); //Write the 6x6 map
EEPROM.update(i, trim4Table.values[5-(offset/6)][offset%6]); //Write the 6x6 map
y++;
z++;
i++;
@ -283,12 +283,10 @@ void loadConfig()
//Fuel table (See storage.h for data layout)
//fuelTable.xSize = EEPROM.read(EEPROM_CONFIG1_XSIZE); //Read the VE Tables RPM dimension size
//fuelTable.ySize = EEPROM.read(EEPROM_CONFIG1_YSIZE); //Read the VE Tables MAP/TPS dimension size
for(int x=EEPROM_CONFIG1_MAP; x<EEPROM_CONFIG1_XBINS; x++)
{
offset = x - EEPROM_CONFIG1_MAP;
fuelTable.values[15-offset/16][offset%16] = EEPROM.read(x); //Read the 8x8 map
fuelTable.values[15-(offset/16)][offset%16] = EEPROM.read(x); //Read the 8x8 map
}
//RPM bins
for(int x=EEPROM_CONFIG1_XBINS; x<EEPROM_CONFIG1_YBINS; x++)
@ -314,13 +312,10 @@ void loadConfig()
//IGNITION CONFIG PAGE (2)
//Begin writing the Ignition table, basically the same thing as above
//ignitionTable.xSize = EEPROM.read(EEPROM_CONFIG2_XSIZE); //Read the ignition Table RPM dimension size (Currently not supproted)
//ignitionTable.ySize = EEPROM.read(EEPROM_CONFIG2_YSIZE); //Read the ignition Table MAP/TPS dimension size (Currently not supproted)
for(int x=EEPROM_CONFIG3_MAP; x<EEPROM_CONFIG3_XBINS; x++)
{
offset = x - EEPROM_CONFIG3_MAP;
ignitionTable.values[15-offset/16][offset%16] = EEPROM.read(x); //Read the 8x8 map
ignitionTable.values[15-(offset/16)][offset%16] = EEPROM.read(x); //Read the 8x8 map
}
//RPM bins
for(int x=EEPROM_CONFIG3_XBINS; x<EEPROM_CONFIG3_YBINS; x++)
@ -345,13 +340,10 @@ void loadConfig()
//AFR TARGET CONFIG PAGE (3)
//Begin writing the Ignition table, basically the same thing as above
//ignitionTable.xSize = EEPROM.read(EEPROM_CONFIG2_XSIZE); //Read the ignition Table RPM dimension size (Currently not supproted)
//ignitionTable.ySize = EEPROM.read(EEPROM_CONFIG2_YSIZE); //Read the ignition Table MAP/TPS dimension size (Currently not supproted)
for(int x=EEPROM_CONFIG5_MAP; x<EEPROM_CONFIG5_XBINS; x++)
{
offset = x - EEPROM_CONFIG5_MAP;
afrTable.values[15-offset/16][offset%16] = EEPROM.read(x); //Read the 16x16 map
afrTable.values[15-(offset/16)][offset%16] = EEPROM.read(x); //Read the 16x16 map
}
//RPM bins
for(int x=EEPROM_CONFIG5_XBINS; x<EEPROM_CONFIG5_YBINS; x++)
@ -374,13 +366,10 @@ void loadConfig()
//*********************************************************************************************************************************************************************************
//CONFIG PAGE (4) //############
//CONFIG PAGE (4)
pnt_configPage = (byte *)&configPage4; //Create a pointer to Page 3 in memory
//Begin writing the Ignition table, basically the same thing as above
//ignitionTable.xSize = EEPROM.read(EEPROM_CONFIG2_XSIZE); //Read the ignition Table RPM dimension size (Currently not supproted)
//ignitionTable.ySize = EEPROM.read(EEPROM_CONFIG2_YSIZE); //Read the ignition Table MAP/TPS dimension size (Currently not supproted)
//The next 64 bytes can simply be pulled straight from the configTable
//The first 64 bytes can simply be pulled straight from the configTable
for(int x=EEPROM_CONFIG7_START; x<EEPROM_CONFIG7_END; x++)
{
*(pnt_configPage + byte(x - EEPROM_CONFIG7_START)) = EEPROM.read(x);
@ -392,9 +381,9 @@ void loadConfig()
for(int x=EEPROM_CONFIG8_MAP1; x<EEPROM_CONFIG8_XBINS1; x++)
{
offset = x - EEPROM_CONFIG8_MAP1;
boostTable.values[7-offset/8][offset%8] = EEPROM.read(x); //Read the 8x8 map
boostTable.values[7-(offset/8)][offset%8] = EEPROM.read(x); //Read the 8x8 map
offset = y - EEPROM_CONFIG8_MAP2;
vvtTable.values[7-offset/8][offset%8] = EEPROM.read(y); //Read the 8x8 map
vvtTable.values[7-(offset/8)][offset%8] = EEPROM.read(y); //Read the 8x8 map
y++;
}
@ -428,13 +417,13 @@ void loadConfig()
for(int x=EEPROM_CONFIG9_MAP1; x<EEPROM_CONFIG9_XBINS1; x++)
{
offset = x - EEPROM_CONFIG9_MAP1;
trim1Table.values[5-offset/6][offset%6] = EEPROM.read(x); //Read the 6x6 map
trim1Table.values[5-(offset/6)][offset%6] = EEPROM.read(x); //Read the 6x6 map
offset = y - EEPROM_CONFIG9_MAP2;
trim2Table.values[5-offset/6][offset%6] = EEPROM.read(y); //Read the 6x6 map
trim2Table.values[5-(offset/6)][offset%6] = EEPROM.read(y); //Read the 6x6 map
offset = z - EEPROM_CONFIG9_MAP3;
trim3Table.values[5-offset/6][offset%6] = EEPROM.read(z); //Read the 6x6 map
trim3Table.values[5-(offset/6)][offset%6] = EEPROM.read(z); //Read the 6x6 map
offset = i - EEPROM_CONFIG9_MAP4;
trim4Table.values[5-offset/6][offset%6] = EEPROM.read(i); //Read the 6x6 map
trim4Table.values[5-(offset/6)][offset%6] = EEPROM.read(i); //Read the 6x6 map
y++;
z++;
i++;

View File

@ -157,6 +157,7 @@ void setPinMapping(byte boardID)
#if defined(CORE_TEENSY)
pinTrigger = 23;
pinStepperDir = 33;
pinStepperStep = 34;
pinCoil1 = 31;
pinTachOut = 28;
pinFan = 27;
@ -233,6 +234,7 @@ void setPinMapping(byte boardID)
pinTrigger = 23;
pinTrigger2 = 35;
pinStepperDir = 33;
pinStepperStep = 34;
pinCoil1 = 31;
pinTachOut = 28;
pinFan = 27;