-
-
Erfahrener Benutzer
Roboter-Spezialist
Hallo Basti!
Ich kann dir jetzt nicht sicher sagen, an was genau es liegt. Aber vielleicht ist es einer der Punkte,die ich an dem Programm noch verbessern würde ...
1. Wenn dein Roboter nicht gerade mit Schallgeschwindigkeit durch den Raum fährt (natürlich übertrieben - aber die meisten Roboter fahren doch recht langsam) benötigst du weder für den Abstandssensor noch für den taster eine Interrupt Routine. Ohne zu wissen mit welchem uC du arbeitest noch welche Taktfrequenz du verwendest würde ich mal mutmaßen, dass das ganz einfach mit Polling auch funktionieren sollte. Wenn nicht, dann reicht auf jeden Fall ein einzelner Interrupt für beide Ereignisse aus ...
2. Du solltest den Taster auf jeden Fall hardwaremäßig (oder besser softwaremäßig entprellen). Jeder mechanische Taster hat die angewohnheit mehrmals auszulösen (innerhalb von wenigen us). Damit dann nicht deine Interruptroutine 10 Mal aufgerufen wird musst du nach eiem Interruptereignis ein paar us (je nach Tasterqualität) warten, bis du das nächste Interruptereignis zulässt. In deinem Fall würde ich einfach zu Beginn der Interruptroutine den Int0 und Int1 abschalten und vor dem Return wieder anschalten. Das sollte ausreichend sein.
3. So - jetzt noch meine Vermutung, warum dein Programm nicht richtig geht: Bei dir im Programm fehlt die Hauptschleife. Ich denke, dass dein uC irgendow im nicht genutzen Flash rumgeistert und das etl. Probleme macht. Also füg mal unter der Initialisierung eine Hauptschleife ein...
Hoffe dir geholfen zu haben.
Grüße
Flite
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen