-
-
Moderator
Robotik Einstein
encoder init beeinflusst die interrupts. evtl wird dadurch während einer linedata-messung der prozessor unterbrochen, der adc wird vom encoder ausgemessen (dadurch werden die werte der linedata versaut) und dann rechnet linedata halt mist aus.. könnte ich mit vorstellen. mach mal folgendes:
EncoderInit starten
cli(); //deaktiviert alle interrupts.
Jetzt Linedata messen
sei(); //aktiviert die interrupts wieder
achtung: zwischen cli() und sei() darf nichts benutzt werden, was auf interrupts basiert. also encoder-irgendwas, sleep, msleep usw. sind verboten, ansonsten bleibt der asuro hier in einer endlosschleife hängen.
deshalb sollte zwischen cli und sei so wenig wie möglich stehen!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen