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 }