ASURO Library  2.80
Funktionen
encoder_low.c-Dateireferenz

Low Level Funktionen für Radencoder und Odometrie. Mehr ...

#include "asuro.h"
#include "myasuro.h"
Include-Abhängigkeitsdiagramm für encoder_low.c:

gehe zum Quellcode dieser Datei

Funktionen

void EncoderInit (void)
 Den Interrupt Betrieb der Odometriesensoren-Messung initialisieren und starten.
 
void EncoderStop (void)
 Den Interrupt Betrieb der Odometriesensoren-Messung anhalten.
 
void EncoderStart (void)
 Den Interrupt Betrieb der Odometriesensoren-Messung starten.
 
void EncoderSet (int setl, int setr)
 Interruptbetriebene Odometriesensoren Werte vorbelegen.
 

Ausführliche Beschreibung

Low Level Funktionen für Radencoder und Odometrie.

Siehe auch
Defines zum setzen von Port's und Konfigurationen in asuro.h
TRUE, FALSE, LEFT, RIGHT
Version
V— - KEINE original Version von der ASURO CD vom DLR
V— - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
Das Grundgeruest dieser Funktionen wurde von stochri erstellt.
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
V002 - 27.01.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
V003 - 21.02.2007 - Sternthaler
+++ EncoderStart()
KEINE Funktionsaenderung
Die Fehlerbeschreibung von Sternthaler ersatzlos gestrichen, da
die Funktionalitaet von stochri durch das Starten des AD-Wandlers
in EncoderInit() im sogenannten 'free running'-Mode gegeben ist.
V004 - 27.01.2008 - m.a.r.v.i.n
Die Encoder Interrupt Funktion IsrEnc wird in der EncoderInit
Funktion über die Variable AdcIntFunc in den ADC Interrupt
eingebunden und von dort aufgerufen
V005 - 29.03.2009 - rossir
A/D Wandler Abfrage ueber Interrupt

Definiert in Datei encoder_low.c.

Dokumentation der Funktionen

void EncoderInit ( void  )

Den Interrupt Betrieb der Odometriesensoren-Messung initialisieren und starten.

Siehe auch
autoencode, encoder
Funktionsweise:
Globale Variable autoencode auf TRUE.
Diese Funktion wird nun verlassen und das aufrufende Hauptprogramm arbeit
weiter. In der Zwischenzeit ist der AD-Wandler beschaeftigt um das Mess-
ergebniss zu ermitteln.
Ist der Wandler fertig, wird der Interrupt zum AD-Wandler aufgerufen und in
der dazu vorhandene Interrupt-Funktion aus asuro.c bearbeitet.
Dort wird nun AUTOMATISCH das Messergebnis ausgewertet, ein erkannter
Hell- Dunkel-Wechsel an der Encoderscheibe erkannt und dadurch der Zaehler
in der globalen Variablen encoder[] weitergezaehlt.
Ausserdem wird dort dann der AD-Wandler fuer die andere Seite gestartet.
Da dies dann immer im Wechsel laeuft, kann das Hauptprogramm, ohne
weiters Zutun von nun ab auf die Zaehlerwerte in encoder[] zugreifen.
Beispiel:
(Nur zur Demonstration der Parameter/Returnwerte)
int main (void)
{
Init ();
MotorSpeed (150, 150);
while (1)
(
// Dein Programm
if (encoder [0] > 500)
{
MotorSpeed (0, 0);
}
}
return 0;
}

Definiert in Zeile 94 der Datei encoder_low.c.

{
/*
Alle definierten Interrupts im Asuro sperren.
*/
cli();
/*
Odometrie im Interruptbetrieb weiter bearbeiten.
*/
/*
Die Odometrie Hell-/Dunkel-Zaehler zuruecksetzen/initialisieren.
*/
EncoderSet (0, 0);
/*
Alle definierten Interrupts im Asuro wieder zulassen.
*/
sei();
}
void EncoderSet ( int  setl,
int  setr 
)

Interruptbetriebene Odometriesensoren Werte vorbelegen.

Parameter
[in]setlWert fuer links
[in]setrWert fuer rechts
Hinweis:
Initialisiert die beiden Werte in der globalen Variable encoder.
Normalerweise werden die Zaehlerwerte mit 0 initialisiert. Fuer einige
Anwendungen kann es sinnvoll sein auch schon bestimmte Werte vorzubelegen.
Siehe auch
Die globale Variable encoder wird hier initialisiert.
Beispiel:
(siehe unter den examples)

Definiert in Zeile 182 der Datei encoder_low.c.

{
encoder [LEFT] = setl;
encoder [RIGHT] = setr;
}
void EncoderStart ( void  )

Den Interrupt Betrieb der Odometriesensoren-Messung starten.

Siehe auch
Die globale Variable autoencode hier auf TRUE gesetzt.
Beispiel:
(siehe unter EncoderInit bzw. in den examples)

Definiert in Zeile 153 der Datei encoder_low.c.

void EncoderStop ( void  )

Den Interrupt Betrieb der Odometriesensoren-Messung anhalten.

Siehe auch
Die globale Variable autoencode hier auf FALSE gesetzt.
Funktionsweise:
Durch das setzen der globalen Variablen autoencode auf FALSE wird in
der AD-Wandler-Interruptfunktion der Teil zur Bearbeitung uebersprungen.
Dadurch wird der Wandler nicht mehr neu gestartet und somit stopp die
Automatik.
Beispiel:
(siehe unter EncoderInit bzw. in den examples)

Definiert in Zeile 135 der Datei encoder_low.c.