Spartakaktus
13.05.2006, 17:10
Hiho!
Da ich für nen Freund ein Steuergerät für nen Motor entwickeln soll,
zumindest so, dass er mal halbwegs läuft, bräucht ich bitte ein wenig (bis viel ^^)
Hilfe von euch!
Zuerst mal die Funktionsweise bzw. Aufgabe des Boards:
Durch einen Hallsensor bekommt der Controller (Siemens SAB80C51) bei jeder Umdrehung ein Signal, welches einen Interrupt auslöst - ich nens jetzt mal Bleep :)
Jetzt gibts für mich leider nur ein paar Verständnisprobleme bei den Interrupts bzw den Timern...
Einen Timer brauch ich für die Drehzahlmessung, das is schonmal fix...
Die Zeit zwischen den Bleeps gemessen und daraus resultiert die Drehzahl.
Nun hat der Controller nur noch einen Timer, ich brauch aber 2 -
einmal für den Einspritzzeitpunkt und gleich darauf für die Einspritzdauer...
Jetzt mal die erste Frage:
Wenn ich eine bestimmte Zeit warten muss, eben Zeitpunkt und dann Einspritzdauer, sollt ich da nen Timer verwenden oder reicht eine einfache Waitfunktion mit nem passend hohen Wert?
Den mit Timern kann das (nach meinem Verständis) irgendwie ned funktionieren...
Jetzt mal meine Überlegungen zum Ablauf:
-> Initialisierungsphase: Standardwerte werden in Variablen geschrieben, "Drehzahltimer" wird gestartet.
-> Bleep startet Interruptroutine
-> Interruptroutine holt sich aus einer Variable, die im Mainprogramm errechnet wird, den Wert für den Timer aus einer globalen Variable (Einspritzzeitpunkt) und startet ihn
-> Nach Ablauf der Zeit wird der Wert für die Einspritzdauer geholt (wieder aus ner Variable - kann man das überhaupt in ner Interruptroutine?)
-> der vorrige Timer läuft nochmal (startet sich also quasi selbst neu mit nem anderen Wert)
-> nach dem Ablauf wirds Ventil geschlossen
-> Drehzahltimer wird gestoppt und sein Wert ausgelesen und in einer Variable gespeichert
-> Drehzahltimer wird wieder gestartet
-> aus Drehzahlvariable wird die Drahzahl berechnet
-> Gaspedalstellung wird gemessen
-> Gaspedalstellung und Drehzahl ergeben Werte für Einspritzzeitpunkt und Dauer
-> Warten auf den nächsten Bleep
Kann das so funktionieren oder denk ich komplett verkehrt?
Von mir aus zeichne ich auch gern ne Skizze, bin nur leider grad im Stress :)
Schonmal vielen Dank fürs Helfen (... eigentlich schon mal danke fürs Durchlesen .. :P )
LG Alex
Da ich für nen Freund ein Steuergerät für nen Motor entwickeln soll,
zumindest so, dass er mal halbwegs läuft, bräucht ich bitte ein wenig (bis viel ^^)
Hilfe von euch!
Zuerst mal die Funktionsweise bzw. Aufgabe des Boards:
Durch einen Hallsensor bekommt der Controller (Siemens SAB80C51) bei jeder Umdrehung ein Signal, welches einen Interrupt auslöst - ich nens jetzt mal Bleep :)
Jetzt gibts für mich leider nur ein paar Verständnisprobleme bei den Interrupts bzw den Timern...
Einen Timer brauch ich für die Drehzahlmessung, das is schonmal fix...
Die Zeit zwischen den Bleeps gemessen und daraus resultiert die Drehzahl.
Nun hat der Controller nur noch einen Timer, ich brauch aber 2 -
einmal für den Einspritzzeitpunkt und gleich darauf für die Einspritzdauer...
Jetzt mal die erste Frage:
Wenn ich eine bestimmte Zeit warten muss, eben Zeitpunkt und dann Einspritzdauer, sollt ich da nen Timer verwenden oder reicht eine einfache Waitfunktion mit nem passend hohen Wert?
Den mit Timern kann das (nach meinem Verständis) irgendwie ned funktionieren...
Jetzt mal meine Überlegungen zum Ablauf:
-> Initialisierungsphase: Standardwerte werden in Variablen geschrieben, "Drehzahltimer" wird gestartet.
-> Bleep startet Interruptroutine
-> Interruptroutine holt sich aus einer Variable, die im Mainprogramm errechnet wird, den Wert für den Timer aus einer globalen Variable (Einspritzzeitpunkt) und startet ihn
-> Nach Ablauf der Zeit wird der Wert für die Einspritzdauer geholt (wieder aus ner Variable - kann man das überhaupt in ner Interruptroutine?)
-> der vorrige Timer läuft nochmal (startet sich also quasi selbst neu mit nem anderen Wert)
-> nach dem Ablauf wirds Ventil geschlossen
-> Drehzahltimer wird gestoppt und sein Wert ausgelesen und in einer Variable gespeichert
-> Drehzahltimer wird wieder gestartet
-> aus Drehzahlvariable wird die Drahzahl berechnet
-> Gaspedalstellung wird gemessen
-> Gaspedalstellung und Drehzahl ergeben Werte für Einspritzzeitpunkt und Dauer
-> Warten auf den nächsten Bleep
Kann das so funktionieren oder denk ich komplett verkehrt?
Von mir aus zeichne ich auch gern ne Skizze, bin nur leider grad im Stress :)
Schonmal vielen Dank fürs Helfen (... eigentlich schon mal danke fürs Durchlesen .. :P )
LG Alex