PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : "richtiges" abfragen von sensoren



madcyborg
31.03.2005, 19:06
mein roboter macht bis jetzt nichts weiter als so lange geradeausfahren, bis er mit einem der zwei bumper (die an einem port hängen) irgenwo gegn stößt. wenn das passiert fährt er ein stück rückwärts, dreht sich um ca 90 grad und fährt wieder normal gerade weiter.
gelöst habe ich das so, das zu beginn, die beiden ports für vorwärts (-->ich hab einen rechten und einen linken motor) auf 1 gesetzt werden.
dann kommt eine do-loop-schleife, in der mit jedem durchlauf geprüft wird, ob der sensorport 0 ist(das ist der fall wenn der bumper ausgelöst wird) oder eben nicht. wenn er 0 ist wird die wendeprozedur ausgelöst, sonst nicht.

das funktioniert soweit wunderbar, aber irgendwie kommt es mir so vor als wenn das so nicht die "feine art" ist...
vorallem wenn man dann viele sensoren zu überprüfen hat wird das doch zeitaufwendig und muss dadurch zu verzögerungen führen!?
oder sind microcontroller (in meinem fall atm ein at90s2313) schnell genug um das so zu bewerkstelligen?

recycle
31.03.2005, 20:32
oder sind microcontroller (in meinem fall atm ein at90s2313) schnell genug um das so zu bewerkstelligen?


Die Geschwindigkeit mit der dein AT90S2313 arbeitet, hängt davon ab, welchen Quarz du an geschlossen hast.
Bei z.B. einem 4 MHz Quarz würde der Controller mit 4 Millionen Takten pro Sekunde getaktet.
Für ganz einfache Operationen braucht der Controller einen einzigen Takt, für etwas aufwendigere Operationen einige Takte.
Wenn du sie nicht gerade mit "WAIT" Befehlen zugepflastert hast, wird der Controller deine Schleife vermutlich wesentlich öfter durchlaufen als unbedingt nötig wäre um ein Hindernis rechtzeitig zu erkennen.



dann kommt eine do-loop-schleife, in der mit jedem durchlauf geprüft wird, ob der sensorport 0 ist(das ist der fall wenn der bumper ausgelöst wird) oder eben nicht. wenn er 0 ist wird die wendeprozedur ausgelöst, sonst nicht.
das funktioniert soweit wunderbar, aber irgendwie kommt es mir so vor als wenn das so nicht die "feine art" ist...

Funktionen bei denen es darauf ankommt, dass sie in bestimmten Zeitintervallen ausgeführt werden, würde man über einen Timer-Interrupt aufrufen.
Bei einfachen Sensoren wie z.B. deinem Taster ist es völlig OK die in einer Endlosscheife abzufragen.
Bei etwas komplexeren Schaltungen kombiniert man dann meist beides.