#include "asuro.h"
gehe zum Quellcode dieser Datei
Funktionen | |
int | Battery (void) |
Liest die Batteriespannung und gibt sie zurueck. Es erfolgt keine Konvertierung in einen Spannungswert. | |
void | LineData (unsigned int *data) |
Liest die Daten der beiden Linienverfolgungssensoren. Die Linien-Beleuchtungs-LED kann sowohl an- als auch ausgeschaltet sein. | |
void | OdometryData (unsigned int *data) |
Liest die Daten der beiden Odometriesensoren (Radsensoren). Diese Funktion schaltet die Odometrie-LED's immer an. Diese Funktion schaltet die Back-LED's immer aus. |
V--- - bis zum 07.01.2007 -
Bitte in Datei CHANGELOG nachsehen.
V001 - 13.01.2007 - m.a.r.v.i.n
+++ Alle Funktionen
Zerlegte Sourcen in einzelne Dateien fuer eine echte Library.
V002 - 22.01.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
V003 - 20.02.2007 - m.a.r.v.i.n
In Battery und OdometryData Funktion autoencode temporaer abschalten
V004 - 06.04.2007 - m.a.r.v.i.n
Batterie und OdometrieData Funktionen umbenannt in Battery und OdometryData.
Alte Funktionsnamen ueber Defines beibehalten
Definiert in Datei adc.c.
int Battery | ( | void | ) |
Liest die Batteriespannung und gibt sie zurueck.
Es erfolgt keine Konvertierung in einen Spannungswert.
keine |
// In Variable wert den 10-Bit-Bateriespannungswert lesen // und bei Unterschreitung von 810 eine alles_stop-Funktion // aufrufen. int wert; wert = Battery(); if (wert < 810) // 810 entsprechen ca. 4,455 Volt alles_stop (); // Spannung zu klein, Akkus schonen
Definiert in Zeile 83 der Datei adc.c.
00085 { 00086 int ec_bak = autoencode; // Sichert aktuellen Zustand 00087 int data; 00088 00089 /* 00090 Autoencode-Betrieb vom ADC-Wandler unterbinden. 00091 */ 00092 autoencode = FALSE; 00093 00094 ADMUX = (1 << REFS0) | (1 << REFS1) | BATTERIE; // interne 2.56V Referenz 00095 // Ref. mit ext. Kapazitaet 00096 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00097 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00098 ; 00099 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00100 data = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00101 /* 00102 Autoencode-Betrieb vom ADC-Wandler wiederherstellen. 00103 */ 00104 autoencode = ec_bak; 00105 return data; 00106 }
void LineData | ( | unsigned int * | data | ) |
Liest die Daten der beiden Linienverfolgungssensoren.
Die Linien-Beleuchtungs-LED kann sowohl an- als auch ausgeschaltet sein.
[out] | data | Zeiger auf die gelesenen Daten: data[0] linker Sensor (Bereich 0..1023) data[1] rechter Sensor (Bereich 0..1023) |
Definiert in Zeile 144 der Datei adc.c.
00146 { 00147 int ec_bak = autoencode; // Sichert aktuellen Zustand 00148 00149 /* 00150 Autoencode-Betrieb vom ADC-Wandler unterbinden. 00151 */ 00152 autoencode = FALSE; 00153 00154 /* 00155 Linken Linien-Sensor lesen 00156 */ 00157 ADMUX = (1 << REFS0) | IR_LEFT; // Referenz mit externer Kapazitaet 00158 Sleep (10); 00159 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00160 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00161 ; 00162 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00163 data [0] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00164 00165 /* 00166 Rechten Linien-Sensor lesen 00167 */ 00168 ADMUX = (1 << REFS0) | IR_RIGHT; // Referenz mit externer Kapazitaet 00169 Sleep (10); 00170 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00171 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00172 ; 00173 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00174 data [1] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00175 00176 /* 00177 Autoencode-Betrieb vom ADC-Wandler wiederherstellen. 00178 */ 00179 autoencode = ec_bak; 00180 }
void OdometryData | ( | unsigned int * | data | ) |
Liest die Daten der beiden Odometriesensoren (Radsensoren).
Diese Funktion schaltet die Odometrie-LED's immer an.
Diese Funktion schaltet die Back-LED's immer aus.
[out] | data | Zeiger auf die gelesenen Daten: data[0] linker Sensor, data[1] rechter Sensor. (Bereich 0..1023) |
unsigned int data [2]; OdometryData (data); if (data [0] > data [1]) // 0 linker Sensor; 1 ist rechter Sensor fahre_links (); // Ein bisschen nach links fahren if (data [0] < data [1]) fahre_rechts (); // Ein bisschen nach rechts fahren BackLED (ON, OFF); // linke Back-LED mal wieder anschalten
Definiert in Zeile 221 der Datei adc.c.
00223 { 00224 int ec_bak = autoencode; // Sichert aktuellen Zustand 00225 00226 /* 00227 Autoencode-Betrieb vom ADC-Wandler unterbinden. 00228 */ 00229 autoencode = FALSE; 00230 /* 00231 Vorbereitung zum lesen der Odometrie-Sensoren. 00232 */ 00233 DDRC &= ~((1 << PC0) | (1 << PC1)); // Port auf Input=>Back-LEDs gehen aus 00234 ODOMETRIE_LED_ON; // Odometrie-LED's einschalten 00235 00236 /* 00237 Linken Odometrie-Sensor lesen 00238 */ 00239 ADMUX = (1 << REFS0) | WHEEL_LEFT; // Referenz mit externer Kapazitaet 00240 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00241 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00242 ; 00243 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00244 data [0] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00245 00246 /* 00247 Rechten Odometrie-Sensor lesen 00248 */ 00249 ADMUX = (1 << REFS0) | WHEEL_RIGHT; // Referenz mit externer Kapazitaet 00250 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00251 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00252 ; 00253 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00254 data [1] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00255 00256 /* 00257 Autoencode-Betrieb vom ADC-Wandler wiederherstellen. 00258 */ 00259 autoencode = ec_bak; 00260 }