Bibliothek

1.  Einleitung

Die erweiterte ASURO Bibliothek ist eine Sammlung von Funktionen zur Vereinfachung der Programmierung des ASURO. Die Originalbibliothek auf der Installations CD wurde im Roboternetz u.a. von Weja, Waste, Stochri und Andun weiterentwickelt. Diese Version beinhaltet alle Änderungen und wurde im wesentlichen nur um Kommentare erweitert. Für die Bibliothek wurde ein Projekt auf Sourceforge und bei gna.org eingerichtet.

2.  Features

Die Features der Asuro Lib im Überblick:

3.  Roadmap

Ein Ausblick auf die Features kommender Versionen der Asuro Lib:

  • interruptgesteuerte A/D Wandler Abfrage
  • interruptgesteuerte UART Sende Empfangs Funktionen
  • Kommando Parser mit Callback Funktionsaufruf
  • Funktionen zur Ultraschall Erweiterung aus dem 1 Asuro Buch
  • Soundausgabe in Stereo

4.  bekannte Fehler

4.1  PollSwitch Aufrufe stört die Encoder Abfrage im Interrupt Betrieb

  • Aufruf der PollSwitch Funktion führen zu falschen Ergebnissen bei den Encoder Werten, wenn diese im Interrupt Betrieb abgefragt werden. Leider noch keine Lösung in Sicht.

5.  Versions History

5.1  Version 2.8.0rc1

Datum 29.03.2008

  • Unterstützung von ATmega168 Prozessoren
  • neue Funktion ReadADC zur A/D Wandler Abfrage
  • neue Funktion PrintLCD_p zur Ausgabe von Strings aus dem Programmspeicher
  • neue Funktion SetCharLCD zum Setzen von Sonderzeichen
  • neue Funktion PollSwitchLCD zur Abfrage der Tasten des Arexx LCD
  • neue Funktion MyMotorSpeed die Korrekturwerte aus der myasuro.h berücksichtigt.
  • neue Funktion SerPrint_p zur Ausgabe von Strings aus dem Programmspeicher
  • UART Baudrate einstellbar durch Define
  • Interrupt User Funktionen für Timer und A/D Wandler
  • AVR Studio Projektfiles für alle Beispielprojekte

5.2  Version 2.7.1

Datum 17.11.2007 asuro_libv271.zip

  • Installationsprogramm vereinfacht (ohne Abfrage ob WinAVR installiert ist) (Autor: m.a.r.v.i.n)
  • Pfadangaben in Makefiles geändert (Autor: m.a.r.v.i.n)
  • Projekt Files für AVR Studio und Programmers Notepad (Autor: m.a.r.v.i.n)
  • PrintFloat Funktion (Autor: M1.R)
  • Unterstützung der Ultraschall Erweiterung (Autor: dopez)
  • kleinere Bugfixes (Variablen volatile gemacht, falls diese in Interruptfunktionen verändert werden) (Autoren: Sternthaler, m.a.r.v.i.n)

5.3  Version 2.7.0rc3

Datum 09.04.2007 v270rc3.zip, v270rc3.exe,

  • I2C Funktionen. I2C Master Emulation (Autor raid_ox)
  • LCD Funktionen. LCD Modul Anschluss ueber I2C Port Erweiterungs Chip PCF8574 (Autor raid_ox)
  • RC5 Funktionen. Fernbedienung ueber RC5 kompatibel Fernbedienungen (Autoren: Benjamin Benz, m.ar.v.i.n)
  • SelfTest Demomode wieder mit IRDemo und RechteckDemo. Demomode startet, wenn nach dem Einschalten eine Taste gedrückt wurde.
  • teilweise englische Dokumentation (Autoren: MadMan2k, m.ar.v.i.n, raid_ox)

5.4  Version 2.7.0rc2

Datum: 20.02.2007 v270rc2.zip, v270rc2doc.zip,

  • Kommentare zur Doku ueber Doxygen in print.c (Autor Sternthaler)
  • Funktion PrintLong dazu (Autor HermannSW)
  • Bugfix: PrintInt für negative Werte (Bugreport HermannSW)
  • Kommentare zur Doku ueber Doxygen in leds.c, motor.c (Autor Sternthaler)
  • Kommentare zur Doku ueber Doxygen in encoder.c (Autor Sternthaler)
  • intro.c fuer Doxygen HTML Doku mainpage (Autor m.a.r.v.i.n)
  • Kommentare zur Doku ueber Doxygen in adc.c, uart.c, globals.c (Autor Sternthaler)

5.5  Version 2.7.0rc1

Datum: 19.01.2007

  • Umstellung der Asuro Lib auf eine Objekt Library (Autor m.a.r.v.i.n)

5.6  Version 2.7.0beta

Datum: 07.01.2007

  • void Go(int distance, int power) mm Einheit als Wegstreckenangabe (Autor stochri)
  • void SetMotorPower(int8_t leftpwm, int8_t rightpwm ) (Autor stochri)
  • Funktion zum setzen der PWM Werte, negative Zahlen für Rückwärtsgang.

Vorteil MotorDir muss nicht getrennt aufgerufen werden, der Entwurf von Reglern vereinfacht sich.

  • void SerPrint(unsigned char *data) 0-terminierte Strings ausgeben

man muss nicht mehr die Buchstaben von Hand zählen

  • void Sound(uint16_t freq, uint16_t duration_msec, uint8_t amplitude) Einführung einer Sound Funktion (Autor stochri)

5.7  Version 2.6.1

Datum: 20.11.2006 Bugfixes: (Autor: m.a.r.v.i.n)

  • PrinInt Funktion: evtl. Fehler beim Flashen mit RS232/IR Transceiver, wg. Folge von 0-Bytes im erzeugten Hex-File. Bug report von francesco
  • SIGNAL (SIG_ADC): static Variable toggle initialisiert. Bug report von Rolf_Ebert.
  • Warnings entfernt wg. obsolete Header File bei neueren WinAVR Versionen.

5.8  Version 2.6

Datum 28.09.2005 (Autor: m.a.r.v.i.n)

  • Doxygen Kommentare.

5.9  Version 2.5

Datum: 31.07.2005 (Autor: Andun)

  • Turn() Funktion mit speed Parameter.

5.10  Version 2.4

Datum: 30.07.2005 Erweiterungen, (Autoren: stochri, Andun)

  • Go() Funktion
  • Turn() Funktion.

5.11  Version 2.3

Datum: 10.06.2005 Anpassungen wg. Umbau der Infrarot Schnittstelle als Kollisionsdetektor (Autor: waste)

  • count36kHz ersetzt count72kHz. Timer2 geändert.

5.12  Version 2.2

Datum: 31.03.2005 Erweiterte Funktionen (Autor: weja - Robotrixer Buxtehude) Kurzbeschreibung der Funktionen in der neuen asuro.h, asuro.c vom 31.03.05 Leider konnten die neuen Funktionen nicht mehr in einer Extradatei untergebracht werden, weil mehrere "alte" Funktionen verändert wurden, damit z.B. die Systemzeit integriert werden konnte. Auch wurde die PollSwitch Funktion vom Ballast der Fließkomma-berechnung befreit. Nun ist wieder mehr Platz für eigenen Code vorhanden.

  • Encoder_Init() Dieser Befehl installiert die Interrupt Funktion für den automatischen Wegzähler.
  • Encoder_Start() Startet die automatische Zählung nach
  • Encoder_Stop() neu. Diese Stopp Funktion hält den Zähler an
  • Encoder_Set(int,int) Setzt die Variablen encoder[0] und encoder[1]. Z.B.: Encoder_Set(0,0) setzt beide Variablen auf Null.
  • switches ist eine Variable, die, wenn Startswitch() gestartet wurde, auf wahr gesetzt wird, sobald eine Taste gedrückt wurde. gleichzeitig wird die Tastenüberwachung wieder abgeschaltet. Beispiel:

Start_Switch();
while (!switches){;} //wartet auf Tastendruck
// an dieser Stelle kann mit Pollswitch geprüft werden
// welche Taste gedrückt wurde, wenn nötig.
switches=FALSE// für eine neuen Aufruf von Startswitch()

  • Msleep(int) wartet die angegebene Zeit in ms. Z.B warte 10 Sekunden: Msleep(10000);
  • Gettime() Gibt die Zeit, die seit dem letzten Start des Asuro vergangen ist als unsigned long zurück. Die Angabe erfolgt auch hier in Millisekunden.
  • PrintInt(int) Eine kleine Ausgabehilfe für Integerwerte. Beispiel Zeilenweise Ausgabe der encoder Werte:

PrintInt(encoder[0]);
SerWrite("   ",3);
PrintInt(encoder[1]);
SerWrite("\n\r",2);

5.13  Version 2.1

Datum: 10.11.2003

  • Original Version von der ASURO CD (Autor: Jan Grewe - DLR)

6.  Weiterführende Links