#include "asuro.h"
gehe zum Quellcode dieser Datei
Funktionen | |
int | Batterie (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 | OdometrieData (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)
Definiert in Datei adc.c.
int Batterie | ( | 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 = Batterie (); if (wert < 810) // 810 entsprechen ca. 4,455 Volt alles_stop (); // Spannung zu klein, Akkus schonen
Definiert in Zeile 80 der Datei adc.c.
00082 { 00083 ADMUX = (1 << REFS0) | (1 << REFS1) | BATTERIE; // interne 2.56V Referenz 00084 // Ref. mit ext. Kapazitaet 00085 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00086 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00087 ; 00088 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00089 return ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00090 }
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 128 der Datei adc.c.
00130 { 00131 int ec_bak = autoencode; // Sichert aktuellen Zustand 00132 00133 /* 00134 Autoencode-Betrieb vom ADC-Wandler unterbinden. 00135 */ 00136 autoencode = FALSE; 00137 00138 /* 00139 Linken Linien-Sensor lesen 00140 */ 00141 ADMUX = (1 << REFS0) | IR_LEFT; // Referenz mit externer Kapazitaet 00142 Sleep (10); 00143 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00144 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00145 ; 00146 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00147 data [0] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00148 00149 /* 00150 Rechten Linien-Sensor lesen 00151 */ 00152 ADMUX = (1 << REFS0) | IR_RIGHT; // Referenz mit externer Kapazitaet 00153 Sleep (10); 00154 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00155 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00156 ; 00157 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00158 data [1] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00159 00160 /* 00161 Autoencode-Betrieb vom ADC-Wandler wiederherstellen. 00162 */ 00163 autoencode = ec_bak; 00164 }
void OdometrieData | ( | 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]; OdometrieData (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 208 der Datei adc.c.
00210 { 00211 /* 00212 Vorbereitung zum lesen der Odometrie-Sensoren. 00213 */ 00214 DDRC &= ~((1 << PC0) | (1 << PC1)); // Port auf Input=>Back-LEDs gehen aus 00215 ODOMETRIE_LED_ON; // Odometrie-LED's einschalten 00216 00217 /* 00218 Linken Odometrie-Sensor lesen 00219 */ 00220 ADMUX = (1 << REFS0) | WHEEL_LEFT; // Referenz mit externer Kapazitaet 00221 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00222 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00223 ; 00224 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00225 data [0] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00226 00227 /* 00228 Rechten Odometrie-Sensor lesen 00229 */ 00230 ADMUX = (1 << REFS0) | WHEEL_RIGHT; // Referenz mit externer Kapazitaet 00231 ADCSRA |= (1 << ADSC); // Starte AD-Wandlung 00232 while (!(ADCSRA & (1 << ADIF))) // Ende der AD-Wandlung abwarten 00233 ; 00234 ADCSRA |= (1 << ADIF); // AD-Interupt-Flag zuruecksetzen 00235 data [1] = ADCL + (ADCH << 8); // Ergebnis als 16-Bit-Wert 00236 }