-
        

Ergebnis 1 bis 9 von 9

Thema: Beispielcode: stromsparender Datalogger mit Butterfly (LCD)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185

    Beispielcode: stromsparender Datalogger mit Butterfly (LCD)

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Ich habe mal den AVR butterfly IAR-C Code
    http://www.atmel.com/dyn/products/to...p?tool_id=3146
    and die GCC-Portierung
    http://www.siwawi.arubi.uni-kl.de/avr_projects/#bf_app
    genommen und das ganze nach Bascom übertragen und um einen Datalogger erweitert.

    Der Butterfly kommt bei 3V mit 8µA (ohne LCD) bis 25µA (mit LCD, das sind 220mAh pro Jahr) aus und ist damit mit Abstand der Rekordhalter unter den Atmegas im Batteriebetrieb.

    Der Original C-Code belegt 99% des Speichers (14300 Byte + 2048 Byte for the Bootloader). Nach tausend Codezeilen ist es sicher: Bascom erzeugt etwa 50% bis 100% mehr Hex-Code als GCC. Die Umsetzung wurde möglich, durch das nette Bascom-Feature Assembler und Basic zu mischen.

    Nach konsequenter Straffung der AVR-Algorithmen blieb noch Platz für einen 4MBit Datalogger. Die Module music und vcard habe ich nicht übertragen.
    Der Bascom Hex-Code ist kleiner als 8KByte, womit für eigene Erweiterungen genügend Platz bleibt.

    Der Code ist gut kommentiert aber länger als die zulässige Nachrichenlänge. Ich hab die Datei hochgeladen:
    Code:
    ***************************************************************************
    'Datalogger software for AVR Butterfly demo board.
    '
    'This code based on the ATMEL sample code for the Butterfly (for IAR-C)
    'parts not implemented (from IAR-C sample code): music and vcard
    '
    'BASCOM code with:
    '    State machine menu (over 100 entries)
    '    Clock (time+date)
    '    Datalogger with 4Mbit dataflash
    '       32768 Logs at 16 Byte
    '       free intervall from 1 minute to 24 hours
    '       restore old datalogger counter after a reset
    '       formated print of datalogs at 9600 Baud:
    '          HH:MM:SS DD.MM.YY ADC1[RAW] ADC2[RAW] ADC3[RAW] Temp[°C]
    '    ADC ASM Code for fast conversion 8 times and averaging for better accuracy
    '      Temperature measurements
    '      Light measurements
    '      Voltage readings
    '    LCD interrupt
    '      scrolling text (over 6 chars)
    '      LCD auto power off (timer interrupt)
    '      Adjust LCD contrast
    '    Key interrupt
    '      detect permanent pressed key (interrupt)
    '      Key Click (Speaker)
    '    Main Loop with power save mode (loop with 1sec and 63ms)
    '
    'very low power consumption: 8µA LCD OFF
    '                           25µA LCD ON  (220mAh a year !!!)
    '                           40µA scrolling text
    '
    'hex code length: <8 KByte (under 50% of 16K memory)
    '
    'Attention! The dataflash actice current peak while a erase is 35mA (<12ms).
    'If you use a external battery, the schottky diode BAT54C (Vcc_ext) has a
    'forward voltage of 0,4V-0,5V. The dataflash needs min 2,5V.
    ' => The minimal external voltage with Datalogger is 3,0V!!!!
    'If the external voltage sink under 3V the SPI-Bus reads only &HFF.
    '
    'code testet with Bascom 1.11.8.1 and 1.11.8.3
    'workaround for following Bascom AVR-Register-Bugs (Atmega169):
    '    Config Spi = ...
    '    Config Clock = Soft
    '    Powersave
    '    Clockdivison
    '***************************************************************************
    
    $regfile = "m169def.dat"
    
    $framesize = 32                                             'Stack
    $swstack = 32
    $hwstack = 64
    hier mal die Print-Ausgabe im Format:
    HH:MM:SS DD.MM.YY ADC1[RAW] ADC2[RAW] ADC3[RAW] Temp[°C]
    400: 15:50:0 1.7.6 529 0 494 +23C
    401: 16:0:0 1.7.6 529 0 496 +23C
    402: 16:10:0 1.7.6 524 0 492 +24C
    403: 16:20:0 1.7.6 499 0 370 +26C
    404: 16:30:0 1.7.6 476 0 139 +28C
    405: 16:40:0 1.7.6 467 0 146 +28C
    406: 16:50:0 1.7.6 464 0 152 +29C
    407: 17:0:0 1.7.6 466 0 161 +28C
    408: 17:10:0 1.7.6 489 0 199 +26C
    409: 17:20:0 1.7.6 511 0 528 +25C
    410: 17:30:0 1.7.6 510 0 212 +25C
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    Der Butterfly ist im Roboternetz wohl eher ein Exot

    Zur Übersicht als Ergänzung des Menüsystem der extrem effektiven State Machine.

    Ich habe noch den guten Hinweis von dennisstrehl http://www.roboternetz.de/phpBB2/zei...229&highlight= umgesetzt und das Menü um die Messung der Batteriespannung erweitert.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken butterflymenu.gif  
    Angehängte Dateien Angehängte Dateien

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    hi,

    ich finde deinen Butterfly Datalogger schon sehr interessant. Pragrammiere selbst aber eher auf der AVR-GCC Schiene. Ich wollte den Butterfly vor einiger Zeit (huch, das ist auch schon wieder 1 Jahr her) als Coprozessor für den Asuro einsetzen. Siehe auch http://www.roboternetz.de/phpBB2/zei...rag.php?t=9633. Leider kamen immer wieder wichtigere Dinge dazwischen.

    Da ich jetzt mal wieder etwas Zeit habe, werde ich es mal mit deinem Programm und Bascom versuchen, vielleicht komme ich damit schneller zu Potte.

    BTW. Es gibt es auch einen Roboter mit dem Butterfly, den Flutterbot.
    http://www.flutterbot.com. Das Problem beim Butterfly ist halt, das er zu wenig freie Ports hat. Das meiste geht leider für das LCD drauf. Beim Flutterbot kann das Display wohl gar nicht benutzt werden.

    Gruß m.a.r.v.i.n

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    Habe den Butterfly als Sample erhalten. Ich sehe für das Teil außer für den Stromspar-Batteriebetrieb (bei niedriger Taktfrquenz) keine sinnvolle Verwendung. Da I2C und SPI (DF deaktiv) frei sind, ist er ideal geeignet um (Mess-) Peripherie überm Bus anzusprechen (Datalogger).

    Der AVR-GCC Code ist leider zu groß, um darauf noch sinnvoll aufzusetzen.
    Da kam die Idee auf, mit Bascom und ASM zu arbeiten. Trotz der verdammt schlechten Ausgangsposition mit Bascom konnte ich den Hex-Code etwa halbieren.

    Bascom ist ausgesprochen unzuverlässig, wenn es an die Register (Hardware) geht und der Atmega nicht 8/16/32 heißt. Ich empfehle alle Register (>32) in ASM direkt zu setzen. Wenn es um schlanken Code geht, sollte man auch insbes. höherwertige Basic-Befehle vermeiden. Die Parameterübergabe ist eine wahre Register-Orgie. Nicht zu vergleichen mit GCC.

    Einen Roboter würde ich mit einem Butterfly nicht bauen.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    Ich habe die State Machine des Menüsystems extrahiert und für den Bascom-Simulator umgeschrieben.

    Wer es mal im Simulator testen will:
    http://www.roboternetz.de/wissen/ind...e_Machine_Menu

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    7

    Programm zu groß für die Demo-Version

    Hallo Thomas,

    ich würde dein Programm gerne mal auf meinen Butterfly einspielen.
    Kann das Teil aber nicht übersetzten, der Code ist für die Demo-Ver zu groß.
    Kannst Du den Hex Code bereitstellen?

    Im vorraus herzlichen Dank
    Bernd

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    02.12.2006
    Beiträge
    7

    Butterfly: Datenlogger, Uhrmodul -- Anzeige unruhig

    Hallo Thomas,
    so jetzt habe ich das Zeitmodul extrahiert und es läuft auch.
    Aber die Sekunden blitzen zwischendurch nur alle paar Sek auf
    und die Minuten sind auch nicht immer zu sehen, bzw. werden ständig neu "aufgebaut".
    Ist das bei dir auch so?
    Woran liegt das?
    Hängt es an der Interupt-Steuerung oder den flashen (Stromspar...), die ich noch nicht verstanden habe!!!
    Gruß
    Bernd

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185

    Re: Butterfly: Datenlogger, Uhrmodul -- Anzeige unruhig

    Zitat Zitat von mail_bernd
    Ist das bei dir auch so?
    nee, bei mir läuft es normal.
    Du hast sicherlich beim Eindampfen des Quellcodes etwas weggespart

    Als Anlage mal die die compilierte Version 1.1.
    Angehängte Dateien Angehängte Dateien

  9. #9
    Hallo Thomas,

    Dein Projekt finde ich sehr interessant. Ich habe mir darauf hin auch einen Butterfly besorgt und die Programmierung auch hin bekommen. Lediglich mit dem Auslesen der Daten über die Com-schnitte klappt es bei mir nicht. Ich bekomme da nichts sinnvolles gelesen. Womit hast Du das ausgelesen?

    Ich hoffe Du erinnerst Dich noch, ist ja doch schon einiges her.

    Danke

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •