encoder_low.c

gehe zur Dokumentation dieser Datei
00001 /****************************************************************************/
00028 /*****************************************************************************
00029 *                                                                            *
00030 *   This program is free software; you can redistribute it and/or modify     *
00031 *   it under the terms of the GNU General Public License as published by     *
00032 *   the Free Software Foundation; either version 2 of the License, or        *
00033 *   any later version.                                                       *
00034 *                                                                            *
00035 *****************************************************************************/
00036 #include "asuro.h"
00037 
00038 
00039 
00040 /****************************************************************************/
00096 void EncoderInit (void)
00097 {
00098   /*
00099     Alle definierten Interrupts im Asuro sperren.
00100   */
00101   cli();
00102 
00103   /*
00104     Port C als Input => dadurch gehen die Back-LED aus ...
00105   */
00106   DDRC &= ~ ((1<<PC0) | (1<<PC1));
00107   /*
00108     ... aber nun koennen die LED's am Rad eingeschaltet werden, und die
00109         Sensoren koennen gemessen werden.
00110   */
00111   ODOMETRIE_LED_ON;
00112 
00113   /*
00114     AD-Wandler einschalten, Parameter einstellen und Starten. (clk/128)
00115     Startet den ADC im 'free running'-Mode (ADFR). Das heisst, der Wandler
00116     nach einer Messung automatisch wieder ne startet.
00117   */
00118   ADCSRA = (1<<ADEN) | (1<<ADFR) | (1<<ADIE) | (1<<ADSC) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2);
00119 
00120   /*
00121     Linken Odometrie-Sensor auswaehlen. (AVCC ref. with external capacitor)
00122   */
00123   ADMUX = (1<<ADLAR) | (1<<REFS0) | WHEEL_LEFT;
00124 
00125   /*
00126     Odometrie im Interruptbetrieb weiter bearbeiten.
00127   */
00128   autoencode = TRUE;
00129 
00130   /*
00131     Alle definierten Interrupts im Asuro wieder zulassen.
00132   */
00133   sei();
00134 
00135   /*
00136     Die Odometrie Hell-/Dunkel-Zaehler zuruecksetzen/initialisieren.
00137   */
00138   EncoderSet (0, 0);
00139 }
00140 
00141 
00142 
00143 /****************************************************************************/
00166 void EncoderStop (void)
00167 {
00168   autoencode = FALSE;
00169 }
00170 
00171 
00172 
00173 /****************************************************************************/
00190 void EncoderStart (void)
00191 {
00192   autoencode = TRUE;
00193 }
00194 
00195 
00196 
00197 /****************************************************************************/
00222 void EncoderSet (
00223   int setl,
00224   int setr)
00225 {
00226   encoder [LEFT]  = setl;
00227   encoder [RIGHT] = setr;
00228 }

Erzeugt am Sun Nov 18 18:24:52 2007 für ASURO Library von  doxygen 1.5.1-p1