-
-
Erfahrener Benutzer
Robotik Einstein
ich hab noch ne idee .... wenn der impusl kommt, zündert der interrupt, den leg ich dann lahm und prüfe solange zyklisch den eingang auf high pegel bis der impuls zu ende ist, dann schreib ich die verstrichene zeit in ne variable und schalt den interrupt wieder ein.
theoretisch sollte es gehen denk ich mir mal ... oder kommt da doch wieder der hammer ?
-
Moderator
Robotik Einstein
du könntest einen timer starten wenn der interrupt kommt; und wenn der pegel wieder high wird den counter stoppen. dann hättest du ne exakte zeitmessung.
-
Erfahrener Benutzer
Robotik Einstein
zwische 2 high flanken liegen leider IMMER 65ms ... ich muss schon die länge des impulses messen, d.h. die zeit zwischen high flanke und dem abfallen des impulses
ich werde aber EVENTUELL I2C benutzen ... aber der umbau iss etwas komplizierter ...
zur ersten lösung, ich hab das modul fertig angeschlossen, mit dem oszi geprüft ... alles bestens, kalibrierung iss auch super ... nun muss ich nurnoch das programm schreiben ... 37ms idle iss aber nich SO toll Q_Q
wenn ich den interrupt für die odometrie aber anlasse müsste das doch in einer verschachtelung enden oder ?
-
Moderator
Robotik Einstein
dann warte bis high wird, starte den counter, und wenn es wieder low wird machste ihn wieder aus...
-
Erfahrener Benutzer
Robotik Einstein
ja aber wie oben im editierten muss ich leider 37ms das hauptprogramm unterbrechen und nach min. 33ms kommt schon der nächste impuls ... ich seh schon es wird eng mit der rechenzeit XD ... oder ich mache es über ein flag und prüfe das signal im hauptprogramm zyklisch mit
-
Moderator
Robotik Einstein
hm ich sehe das problem nicht. warte auf eine high-flanke, dann startest du den counter. da dieser im hintergrund läuft, brauchst du dich um nichts zu kümmern und dein programm kann normalen aufgaben folgen. wenn der pin wieder low wird, wird der counter gestoppt. wenn das programm es dann zulässt und nichts anderes zu tun hat, kann der counter ausgelesen und der wert bearbeitet werden.
dazu muss das hauptprogramm eigentlich gar nicht unterbrochen werden.
-
Erfahrener Benutzer
Robotik Einstein
dann muss ich eben im hauptprogramm zyklisch den pegel messen und den counter anhalten wenn low iss ^_^
-
Moderator
Robotik Einstein
oder du lässt den interrupt auf die stegende flanke reagieren, startest den counter und stellst in der interruptroutine den interrupt so ein dass er bei einer fallenden flanke wieder zündet. und beim zweiten ausführen wird dann der counter weider gestoppt.
-
Erfahrener Benutzer
Robotik Einstein
fallende flanke geht doch net Q_Q wegen der diode und die will ich net opfern Q_Q
-
Moderator
Robotik Einstein
ja dann musst du wohl mit der einschränkung leben dass du per hand kontrollieren musst wie sich das verändert...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen