#include "asuro.h"
#include "myasuro.h"
gehe zum Quellcode dieser Datei
Funktionen | |
void | Init (void) |
Initialisiert die Hardware: Ports, A/D Wandler, Serielle Schnittstelle, PWM Die Init Funktion muss von jeden Programm beim Start aufgerufen werden. |
V--- - 20.11.2006 - m.a.r.v.i.n
+++ SIGNAL (SIG_ADC)
static Variable toggle mit FALSE initialisiert.
(Bug report von Rolf_Ebert)
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 - 27.01.2007 - Sternthaler
+++ Alle Funktionen
Kommentierte Version (KEINE Funktionsaenderung)
V003 - 20.02.2007 - m.a.r.v.i.n
Defines fuer Dometrie High/Low Werte aus myasuro.h verwenden StopSwitch ersetzt. Deshalb wurde immer die komplette switches.o mitgelinkt
V004 - 15.11.2007 - m.a.r.v.i.n
RIGHT_DIR und LEFT_DIR waren in der Init Funktion vertauscht
Definiert in Datei asuro.c.
void Init | ( | void | ) |
Initialisiert die Hardware: Ports, A/D Wandler, Serielle Schnittstelle, PWM
Die Init Funktion muss von jeden Programm beim Start aufgerufen werden.
keine |
// Die Init()-Funktion MUSS IMMER zu Anfang aufgerufen werden. int main (void) { int wert; Init (); while (1) ( // Dein Programm } return 0; }
Definiert in Zeile 117 der Datei asuro.c.
00119 { 00120 /* 00121 Timer2, zum Betrieb mit der seriellen Schnittstelle, fuer die 00122 IR-Kommunikation auf 36 kHz eingestellt. 00123 */ 00124 TCCR2 = (1 << WGM20) | (1 << WGM21) | (1 << COM20) | (1 << COM21) | (1 << CS20); 00125 OCR2 = 0x91; // duty cycle fuer 36kHz 00126 TIMSK |= (1 << TOIE2); // 36kHz counter 00127 00128 /* 00129 Die serielle Schnittstelle wurde waerend der Boot-Phase schon 00130 programmiert und gestartet. Hier werden die Parameter auf 2400 1N8 gesetzt. 00131 */ 00132 UCSRA = 0x00; 00133 UCSRB = 0x00; 00134 UCSRC = 0x86; // 1 Stop Bit | No Parity | 8 Data Bit 00135 UBRRL = 0xCF; // 2400bps @ 8.00MHz 00136 00137 /* 00138 Datenrichtung der I/O-Ports festlegen. Dies ist durch die Beschaltung der 00139 Asuro-Hardware nicht aenderbar. 00140 Port B: Seriell Senden; Richtungsvorgabe Motor links; Takt fuer die 00141 Geschwindigkeit beider Motoren; Grueneanteil-Status-LED 00142 Port D: Richtungsvorgabe Motor rechts; Vordere LED; 00143 Odometrie-LED (Radsensor); Rotanteil-Status-LED 00144 */ 00145 DDRB = IRTX | RIGHT_DIR | PWM | GREEN_LED; 00146 DDRD = LEFT_DIR | FRONT_LED | ODOMETRIE_LED | RED_LED; 00147 00148 /* 00149 PWM-Kanaele OC1A und OC1B auf 8-Bit einstellen. 00150 Sie werden fuer die Geschwindigkeitsvorgaben der Motoren benutzt. 00151 */ 00152 TCCR1A = (1 << WGM10) | (1 << COM1A1) | (1 << COM1B1); 00153 TCCR1B = (1 << CS11); // tmr1-Timer mit MCU-Takt/8 betreiben. 00154 00155 /* 00156 Einstellungen des A/D-Wandlers auf MCU-Takt/64 00157 */ 00158 ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); 00159 00160 /* 00161 Sonstige Vorbereitungen. 00162 - Alle LED's ausschalten 00163 - Motoren stoppen und schon mal auf Vorwaerts einstellen. 00164 - Globale Variable autoencoder ausschalten. 00165 */ 00166 ODOMETRIE_LED_OFF; 00167 FrontLED (OFF); 00168 BackLED (ON, ON); 00169 BackLED (OFF, OFF); 00170 StatusLED (GREEN); 00171 00172 MotorDir (FWD, FWD); 00173 MotorSpeed (0, 0); 00174 00175 autoencode = FALSE; 00176 00177 /* 00178 Funktion zum ALLGEMEINEN ZULASSEN von Interrupts. 00179 */ 00180 sei (); 00181 }