Om du skulle byta till if-statements istället för ett switch skulle du kunna ta bort många dubbletter:
Kod: Markera allt
...
} else if (tand == 15 || tand == 45) {
...
} else if (tand == 31) {
...
}
Kod: Markera allt
...
} else if (tand == 15 || tand == 45) {
...
} else if (tand == 31) {
...
}
Ja, jag sa eventuellt. Men behöver man hålla koll på kuggarna under insprutningstiden så kan man hålla igång ISR:en även då.Janson1 skrev:Vevaxelgivaren triggas in av kamaxelgivaren sen behövs inte den mera... Jag har försökt ta bort "dubblett" case men då blir det fel senare. Det finns säkert nåt bättre/smartare sätt att programmera på... Om man måste ta bort interupet under insprutningstiden, då försvinner väl hela interruptgrejen? Det är väl där man skulle ha det istället för död räkning.
Kod: Markera allt
case 1:
case 2:
....
....
break;
case 3:
case 45:
....
....
break;
Jag bara tänker lite på hur det fungerar på min bensinmotor som sitter i min opel. Där läser den båda givarna hela tiden och jämför de mot varandra. Om kamlägesgivaren ger upp så beräknas allt på vevaxelgivaren och om vevaxelgivaren ger upp så beräknas faktiskt allt efter kamlägesgivaren, men då är den väldigt ”svårstartad” eftersom motorn måste gå flera varv innan den har beräknat rätt. Jag antar att den vill ha flera medelvärden innan den är säker på att det är rätt ställe.Janson1 skrev:Ang. kamaxelgivaren: som det är nu så behövs inte den givaren efter ca 125 motorvarv. Vitsen med det är om givaren går sönder/ger felvärden/hänger sig eller vad som så kan den inte fördärva motorgången.
Efter en veckas sängliggande i influensa där bland annat denna tråd hart lättat upp är jag nu på bättringsvägen. För att minska tristessen lite testade jag att kompilera koden för en ESP32. Det är för övrigt en fantastiskt välkommenterad kod!Janson1 skrev:Jag är inne lite på att skaffa en ZERO eller en DUE, den har en annan processor, 32 bitar istället för 8 vad det nu innebär...
Den går i alla fall att programmera i Arduinomiljön som jag blivit van vid. Rent teoretiskt så borde jag kunna flytta över min ECU sketch till den och få lite respit på tiderna, jag är nu ganska nära max.
Kortet jag laddade upp det på är ett Wemos lolin32 ( https://wiki.wemos.cc/products:lolin32:lolin32 ). Otroligt prisvärt skulle jag vilja säga. Strax över 50:- på kinamarknaden. Det är så billigt att de extra 75:- + lite moms vi snart kommer att få betala knappt spelar någon rollSketch uses 165585 bytes (12%) of program storage space. Maximum is 1310720 bytes.
Global variables use 11192 bytes (3%) of dynamic memory, leaving 283720 bytes for local variables. Maximum is 294912 bytes.