Discussion in 'MiniLogger' started by Thomas, Apr 22, 2005.

  1. Thomas

    Thomas New Member

    Auf mehrfachen Wunsch eines einzelnen Herrn...

    Die Software ist erst vorläufig, bis wir uns über das Protokoll geeinigt haben. Bisher siehts so aus:

    Code:
    no connect
    no connect
    MiniLogger;                                     'Kennung
    ;20;10;16383;                      'Version;Bytes pro Datensatz;EEPromgrösse
    ;
    75;                                                 'Anzahl der folgenden Datensätze
    ;0;4;0;32;122;255;0;239;90;62;       'Datensätze
    ;0;6;0;2;126;255;0;236;90;62;
    ;255;255;0;2;126;255;0;236;89;62;
    
    .
    .
    .
    
    ;0;10;0;3;126;255;0;236;89;62;
    ;255;255;0;2;126;255;0;236;90;62;
    ;0;98;0;3;126;255;0;236;90;62;
    ;
    225;
    ;255;255;0;15;108;255;0;237;89;62;
    ;255;255;0;12;108;255;0;232;89;63;
    ;255;255;0;11;109;255;0;237;88;63;
    
    .
    .
    .
    
    ;255;255;0;11;109;255;0;237;89;63;
    ;255;255;0;9;109;255;0;237;89;62;
    ;255;255;0;6;109;255;0;236;87;63;
    ;
    100;
    ;255;255;0;6;109;255;0;236;88;62;
    ;255;255;0;9;109;255;0;236;89;63;
    ;0;12;0;7;109;255;0;236;88;62;
    
    .
    .
    .
    ;0;4;0;11;109;255;0;238;88;62;
    ;255;255;0;14;109;255;0;208;90;64;
    ;255;255;0;6;109;255;0;234;84;62;
    ;
    0;                                                     'keine weiteren Datensätze=Ende
    

    Attached Files:

  2. Thomas

    Thomas New Member

    Die Software (Bascom):
    Code:
    $crystal = 1000000                                          '1 MHz, Damit auch die Software davon weiss
    $regfile = "at26def.dat"                                    'Wir benutzen einen Tiny26
    $noramclear
    
    Const Eeprom_adress_w = &HA0                                'Basisadresse des verwendeten EEPROMs 24C64A = &HA0 / 24C256 = &HA0
    Const Eeprom_adress_r = Eeprom_adress_w + 1                 'Nicht aendern!
    
    Dim Eeprom_size As Word                                     '
    Dim Last_icadr As Word                                      '
    Dim Measured_bytes As Byte                                  '
    Dim Version As Byte                                         '
    
    Dim Icadr As Word At &H74                                   'Adresse im I2C-EEProm
    Dim Icadrlo As Byte At &H74 Overlay                         '
    Dim Icadrhi As Byte At &H75 Overlay                         '
    Dim Collected As Word At &H78                               'Anzahl gespeicherter Datensätze im akt. Block
    Dim Collectedlo As Word At &H78 Overlay                     '
    Dim Collectedhi As Word At &H79 Overlay                     '
    Dim Wtemp0 As Word At &H7C                                  '16Bit temporär
    Dim Wtemp0lo As Byte At &H7C Overlay                        '
    Dim Wtemp0hi As Byte At &H7D Overlay                        '
    Dim Wtemp1 As Word At &H7E                                  '16Bit temporär
    Dim Btemp0 As Byte                                          '
    Dim Btemp1 As Byte                                          '
    Dim Stemp As String * 16                                    'String temporär
    
    'Config & Init ----------------------------------------------
    Ddra = &B00000000                                           'Ddra Input
    Porta = &B11111111                                          'pull-up
    
    Ddrb = &B01100000                                           'Ddrb.0 Input SDA (Mini-Datenlogger)
                                                                'DDrb.1 Input
                                                                'DDrb.2 Input SCL (Mini-Datenlogger)
                                                                'DDrb.3 Input Button
                                                                'DDrb.4 Input Seriell
                                                                'DDrb.5 Output Seriell
                                                                'DDrb.6 Output Reset (Mini-Datenlogger)
                                                                'DDrb.7 Input (Reset)
    
    Portb = &B01001000                                          'Portb.0 SDA (Mini-Datenlogger)
                                                                'Portb.1 
                                                                'Portb.2 SCL (Mini-Datenlogger)
                                                                'Portb.3 pull-up für Button
                                                                'Portb.4 seriell
                                                                'Portb.5 seriell
                                                                'Portb.6 Reset (Mini-Datenlogger)
                                                                'Portb.7
    
    Config Sda = Portb.0                                        'Ports fuer die I2C-Schnittstelle
    Config Scl = Portb.2
    'I2cinit                                                     'wird mit DDRB= und PORTB= miterledigt
                                                                 'Reset Portb.0 (Sda)
                                                                 'Reset Portb.2 (Scl)
                                                                 'Reset Ddrb.0 (Sda)
                                                                 'Reset DDrb.2 (Scl)
    
    Open "COMB.5:9600,8,N,1,INVERTED" For Output As #1          'Port für serielle Ausgabe
                                                                  'Set Ddrb.5
                                                                  'Reset Portb.5
    
    'Program ----------------------------------------------------
    
    _read_i2c:                                                  '
      I2cstop                                                   '
      Waitms 500                                                '
      Icadr = 0                                                 '
      Gosub Read_eeprom                                         '
      Measured_bytes = Wtemp0lo                                 '
      Version = Wtemp0hi                                        '
      Gosub Read_eeprom                                         '
      Eeprom_size = Wtemp0                                      '
    
      Print #1 , "no connect"
      If Version = 0 Then Goto _read_i2c
      If Version = 255 Then Goto _read_i2c
      If Measured_bytes = 0 Then Goto _read_i2c
      If Measured_bytes = 255 Then Goto _read_i2c
      If Eeprom_size = 0 Then Goto _read_i2c
    
      Shift Eeprom_size , Left , 8                              '
      Eeprom_size = Eeprom_size + 255                           '
      Print #1 , "MiniLogger;"
      Print #1 , ";" ; Version ; ";" ; Measured_bytes ; ";" ; Eeprom_size ; ";"
      Shift Measured_bytes , Right , 1                          'lesen erfolgt word-weise
    
      Last_icadr = Eeprom_size - 4                              '
      Last_icadr = Last_icadr - Measured_bytes                  '
    
      Gosub Read_eeprom                                         '
    
      Do                                                          'Beginn Hauptschleife
        Gosub Read_eeprom                                       '
        Print #1 , ";"
        Print #1,Wtemp0 ; ";"
        Collected = Wtemp0                                      '
        For Wtemp1 = 1 To Collected                             'Datensätze lesen
          If Icadr > Last_icadr Then
            Collected = 0
            Exit For                                            '
          End If
          For Btemp1 = 1 To Measured_bytes
            Gosub Read_eeprom
            Print #1,";" ; Wtemp0hi ; ";" ; Wtemp0lo ;
          Next Btemp1
          Print #1 , ";"
        Next Wtemp1
      Loop Until Collected = 0                                  'Ende Hauptschleife
    
    Do                                                          '
    Loop                                                        '
    
    'I2C-Routinen
    '-----------------------------------
    Read_eeprom:
      I2cstart                                                  'generate start
      I2cwbyte Eeprom_adress_w                                  'slave adsress
      I2cwbyte Icadrhi                                          'address of EEPROM
      I2cwbyte Icadrlo                                          'address of EEPROM
      I2cstart                                                  'repeated start
      I2cwbyte Eeprom_adress_r                                  'slave address (read)
      I2crbyte Wtemp0hi , Ack                                   'read byte
      I2crbyte Wtemp0lo , Nack                                  'read byte
      I2cstop                                                   'generate stop
      Incr Icadr
      Incr Icadr
    Return
  3. Thomas

    Thomas New Member

    wat denn nu...

    ...erst jammern alle und wollen einen Vermittler zwischen I2C und RS232 und dann meldet sich keiner?

    Gruss
    Thomas
  4. Michael Franz

    Michael Franz New Member

    wenn Du mir sagen kannst wozu dat Teil gebraucht wird? Geht doch auch ohne oder? Ich habe von sowas wenig Ahnung. Ich kann nur nachbauen und benutzen.
  5. Dominik

    Dominik Administrator Staff Member

    Moin !

    Ich schreibe heute oder Morgen was dazu.

    Muss jetzt erstmal Geburtstag feiern, denn der is heute :D
  6. Dominik

    Dominik Administrator Staff Member

    Moin !

    So, Sorry das ich jetzt erst schreibe. :smt009

    Das schaut schonmal sehr gut aus was du da gebastelt hast. Ich werde es auch demnächst in LogView einbinden aber vorher muss ich noch zwei Sachen erledigen:
    - Format genau ansehen und verstehen ... ;-)
    - Grafikengine von LogView 1.10 fertig stellen. Da muss ich im Moment leider noch ein bisserl mehr Arbeit reinstecken. Deswegen hakt es leider im Moment bei anderen Bereichen.
  7. Michael Franz

    Michael Franz New Member

    Aha, langsam ahne ich wozu das gut ist. Aber Ahnen ist nicht Wissen, darum wäre mal 'ne richtige Beschreibung eine gute Sache. Danke :smt023
  8. Dominik

    Dominik Administrator Staff Member

    Moin !

    Also ... Damit wir in LogView nicht diese I2C und ISP Geschichte mitschleppen müssen, gibt es halt jetzt diesen Adapter. Der ermöglicht es halt, den Minilogger ganz normal über eine serielle Schnittstelle anzusprechen.
    Bedeutet, wir können den Minilogger jetzt wie jedes andere Gerät in LogView einbinden und müssen keine "Klimmzüge" mehr machen wie es halt bis dato war.
    Hoffe das hilft ein bisserl :smt017

    Bitte :smt023
  9. Michael Franz

    Michael Franz New Member

    Hab mal noch 'ne Frage dazu. Läßt sich dadurch der Logger, zusammen mit Logview, in "Echtzeit" betreiben? z.B. in ständiger Verbindung mit dem PC zwecks Langzeitmessung oder so? So daß man die Daten direkt über die Serielle geschickt bekommt und nicht in den EEProm vom Logger geschrieben werden?
  10. Dominik

    Dominik Administrator Staff Member

    Moin !

    Ein ganz klares JAIN :D

    Damit das funzt, müsste LogView (und zwar die aktuelle Version) erstmal wieder den MiniLogger unterstützen. Das dauert aber noch ein bissel, weil wir im Moment an einer anderen Front kämpfen ...
    Prinzipiell wäre es aber aus LogView Sicht kein Problem, denn es gibt ja die Analog Anzeigen.

    Aus MiniLogger sicht muss Thomas was dazu sagen ... ;-)
  11. Thomas

    Thomas New Member

    @Michael,
    der MiniLogger kann das auch jetzt schon, die Software 2.01XT gibt die Daten seriell aus. In der Zusammenfassung bei RCl steht noch mehr dazu

    Gruss
    Thomas
  12. Michael Franz

    Michael Franz New Member

    na toll, jetzt wollte ich das gerade alles zum testen vorbereiten, nun ist die Hompage von Dietrich Meissner nicht mehr erreichbar :smt017
    Wenn jemand das telePC02 noch auf der Platte hat, würde ich mich freuen, wenn es mir jemand per Mail zuschicken könnte.

    Nachtrag: meine Mailadresse michaelfranz@gmx.de
  13. Thomas

    Thomas New Member

    Jetzt geht sie wieder.

    Gruss
    Thomas
  14. Michael Franz

    Michael Franz New Member

    Irgendwie will das alles nicht so laufen wie ich mir das dachte. Geht schon beim einspielen der 2.01XT los. Wie wann und in welcher Reihenfolge muß ich das .hex und .eep einspielen? Heht das überhaupt mit den AVR-Tools im LogView? Benötige ich für die XT-Version zwingend die Hardwareerweiterung (externer Stromverstärker & Höhenmesser)? Oder kann ich das mit dem "normalen" Minilogger zusammen mit dem TelePC02 auch zum laufen bekommen? Stehe momentan völlig im Wald :smt017

    PS: hätte so richtig Lust auf 'nen "Midi-Logger" basteln ;-)
  15. Dominik

    Dominik Administrator Staff Member

    Moin !

    Ich habe heute meinen AVR in Betrieb genommen. Ich werde mich dann bald mal an meinem GPS Modul und dem SD-Slot versuchen ... Es geht also langsam los :D
    Werde dazu aber noch ein paar Posts machen!
  16. Thomas

    Thomas New Member

    Hallo Michael

    Die Reihenfolge ist egal, hauptsache beide Files sind im AVR.
    Ich glaube nicht ... Dominik?
    Nicht unbedingt, aber die zusätzliche LED2 wäre ganz nützlich, da die vorhandene durch die serielle Ausgabe Ihre Funktion verliert.
    Ja, siehe oben (mit der LED). Ansonsten musst Du halt den Telemetrie-Teil aus der Firmware der XT-Version nehmen und in die Firmware der Standard-Version implantieren. Wenn Du bis morgen Geduld hast kann ich es DIr auch zusenden.

    Die Frage nach Details spare ich mir dann mal, viel Spass.

    Gruss
    Thomas
  17. minga

    minga New Member

    Hallo zusammen,
    meine Frage kommt zwar etwas spät, aber ich hoffe es gibt noch jemand, der mir antwortet...
    - Auf der I2C-RS232 Brücke sind TP1 und TP2 vorhanden. Ist das die Spannungsversorgung? Falls Ja, >7 Volt?
    - Soll mit dem Schalter S1 die Datenübertragung gestartet werden?

    Frank
  18. Thomas

    Thomas New Member

    Hallo Frank,

    Korrekt.

    Das war so angedacht, ist aber in der Software, die im Posting steht, nicht implementiert.

    Gruss
    Thomas
  19. minga

    minga New Member

    Hallo @all,
    inzwischen habe ich die I2C-Brücke mal zusammengebaut. Für eine saubere Pegelwandlung wurde R2 durch einen MAX232 ersetzt. In der Firmware habe ich nur das "INVERTED" beim Öffnen des Ports weggelassen. Mit einem kleinen Test unter Linux mit einem USB-RS232 Adapter und ein paar wenigen Zeilen Python (Modul pyserial) konnte ich die Rohdaten aus dem Logger auf der Console auslesen. Gute Python Coder könnten jetzt z.B. mit matplotlib eine plattformunabhängige graphische Messwertausgabe "zaubern"...

    Frank
  20. S.Schiller

    S.Schiller New Member

    Hallo,

    ich hab jetzt mal ne frage und zwar:

    den I2C-RS232 umsetzer brauch ich um den minilogger mit der aktuellen version 1.14 von logview auszulesen oder???

    So jetzt die nächste frage...wie geht das genau von statten habe den Logger1.0 geht das damit überhaupt???

    Gruß Sebastian

Share This Page