Datenlogger auf ARDUINO- Basis

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Ulrich wrote:

      an den 328-Pins feine Drähte anlöten.
      Ich zitiere mal aus der ins deutsche übersetzten Beschreibung:

      SPARKFUN wrote:

      SPI


      Am gegenüberliegenden Ende der Platine sind außerdem vier
      SPI-Testpunkte herausgebrochen. Mit diesen können Sie den Bootloader auf
      dem ATmega328 neu programmieren.

      Das neueste OpenLog (DEV-13712) bricht diese Punkte in kleineren durchkontaktierten Löchern heraus. Wenn Sie einen ISP zum Neuprogrammieren oder Hochladen eines neuen Bootloaders auf OpenLog verwenden müssen, können Sie Pogo-Pins verwenden, um eine Verbindung zu diesen Testpunkten herzustellen.
      Die Pins müssten eigentlich von links nach rechts Reset, SCK, Mosi und Miso sein, entweder der ganz linke oder ganz rechte verlötete Punkt wird die 3.3V des Chips führen (lt. Schaltplan gibt es einen TP1 also Testpunkt), das müsste man heraus messen. Gnd wiederum ist sowieso unten herausgeführt.

      Einfache Flasher brauchen auch keine Verbindung zur Stromversorgung, der MKII meckert aber, wenn der nicht erkennt, dass die Zielschaltung nicht stromversorgt ist.
      Daher sollte die Stromversorgung des Moduls aufrecht sein und auch nicht fremdversorgt werden (viele einfache Flasher tun das) da da ein eigener Spannungsregler alles tut was das Modul braucht während der MKII wiederum die Zielschaltung gar nicht versorgt sondern nur prüft ob die Stromversorgung aufrecht ist.

      Und während dem Flashen sollte auch keine SD-Karte gesteckt sein, weil die wohl auch an den ISP-Punkten hängt.
      Und natürlich kann man über den SPI dann nicht nur einen Bootloader flashen.
    • @Mitch64

      hallo Mitch, vielen Dank für deine weiteren Hinweise und Unterstützung, leider komme ich erst heute Nachmittag dazu, weiter zu testen. Da werde ich alles noch mal von Grund auf kontrollieren und einstellen.

      Die Frage die ich mir auch stelle, wo liegt die Resonatorfrequenz des Moduls und wie kommt der 328 bei 3,3V+/- ? mit den 16MHz zurecht?

      Gruß
      Ulrich
    • Ulrich wrote:

      Die Frage die ich mir auch stelle, wo liegt die Resonatorfrequenz des Moduls und wie kommt der 328 bei 3,3V+/- ? mit den 16MHz zurecht?
      Das Quarz hat keine Aufschrift oder einen Code?
      Was immer funktioniert ist Messen, am besten Mit Oszi.

      Ob der 328p mit 16MHz bei 3,3V klar kommt?
      Er benötigt 2,7V für 10MHz; und 4,5V für 20MHz.
      In einem Diagramm im Datenblatt kann man auslesen, dass bei 3,3V nur ca. 12,25 MHz erreicht werden.
      Ich vermute daher, dass der nicht mit 16MHz läuft.

      Auch da hilft messen, welche VCC der Controller tatsächlich bekommt.
    • Laut Schaltplan ist ein ATMEGA328P_TQFP verbaut der mit 3.3V (Spannungsregler 3.3V MIC5205) versorgt wird.

      Die 3.3V sind wohl wiederum der SD-Karte geschuldet.

      Möglicherweise ist das ganze ja mit der heißen Nadel gestrickt :D .


      Laut Sparkfun sind die Daten aber wohl korrekt.


      SPARKFUN wrote:

      Der SparkFun OpenLog ist ein Open-Source-Datenlogger, der über eine einfache serielle Verbindung funktioniert und microSD-Karten bis zu 32GB unterstützt. Der OpenLog kann große Mengen serieller Daten speichernoder „protokollieren“ und als eine Art Blackbox fungieren, um alle seriellen Daten, die Ihr Projekt generiert, für wissenschaftliche oder Debugging-Zwecke zu speichern.

      Der SparkFun OpenLog verwendet dank des integrierten Resonators einen ATmega328, der mit 16 MHz läuft.
      Der OpenLog verbraucht im Leerlaufmodus (nichts aufzuzeichnen) etwa 2-3mA. Während einer vollständigen Aufzeichnung kann OpenLog je nach verwendeter microSD-Karte 10 bis 20 mA verbrauchen.

      Alle vom OpenLog protokollierten Daten werden auf der microSD-Karte gespeichert.
      Jede microSD-Karte mit 512 MB bis 32 GB sollte funktionieren. OpenLog unterstützt sowohl die SD-Formate FAT16 als auch FAT32.

      Für eine noch bessere Leistung ist OpenLog Artemis das Tool, das Sie benötigen, mit Protokollierungsgeschwindigkeiten von bis zu 500.000 Bit/s.
    • Ulrich wrote:

      an den 328-Pins feine Drähte anlöten
      Die benötigten Pins liegen auf den Bohrungen der unbelegten Seite. (Rst,Sck,Mo(si) und Mi(so). Fehlt nur noch Gnd , der kann von der anderen Seite genommen werden ;)
      Direkt an den Pins ist greußlich, das würde ich auch vermeiden wenn möglich.

      Der Bootloader wird sich vermutlich nicht überreden lassen den Flash Inhalt aus zu geben?
    • Aufgrund des Schaltbild sehe ich eine Beschaltung des SCK-Pins.
      Daran hängt eine LED (keine Low-Current) mit 330 Ohm Vorwiderstand.

      Diesen Pin muss ja der Programmer Takten, denn während der Programmierung über ISP ist der Controller Slave.
      Möglicherweise ist genau das das Problem.

      Ich glaube nicht, dass der SCK-Ausgang des Programmers mit 1MHz Takt die LED auch noch mit ca. 5mA treiben kann,
      ohne dass der SCK-Pegel zusammen bricht.

      LED oder Vorwiderstand auslöten und dann nochmal flashen mit anschließendem Verify durchführen.
      Gehts dann, was das das Problem.

      Wenn nicht, geht die Suche weiter.
    • Guter Hinweis

      Mitch64 wrote:

      ohne dass der SCK-Pegel zusammen bricht.
      Dann hat der einfach keinen "Dampf" X( Mein MKII ist da auch schlapp. Mit 125kHz schafft er es (so gerade) mit dem Mosi über 220R ein LCD Backlight zum Flackern zu bringen.
      Weniger Speed könnte da helfen.
      Oder sind da Reihenwiderstände verbaut? Die 5 mA sollte er eigentlich spielend hin bekommen?
      Schwach, daß so ein "Profigerät" gegen einen 2€ Usbasp "abstinkt"
    • Hallo alle zusammen!

      Um auch meinen Senf dazuzugeben:
      Meinem "no name" OpenLog Modul habe ich vor einigen Tagen ebenfalls die V4.3 Firmware des Sparkfun-Moduls gegönnt. Die Beschaltung ist zwar nicht 100% gleich, aber beide haben den ATMEGA328P_TQFP verbaut.
      Mit meinem alten myAVR MKII Prommer und meiner altbewährten Software (myAVR ProgTool V1.56) zum Brennen hat dies auch Anhieb ohne Probleme funktioniert.
      Beim Brennvorgang hatte ich nicht mal die Verbindung zum Mega2560-Board getrennt und die Stromversorgung während des Brennvorganges erfolgte ausschließlich über den Prommer! (Das Mega2560 Board wurde dadurch natürlich die ganze Zeit vom Prommer spannungsmäßig mitversorgt).

      Hier noch ein Bild vom Anschluss des Adapterkabels (SPI/ISP) für den Prommer:
      ISP_Openlog.JPG
      Ganz links, mit der weißen Markierung, dass ist GND und die 5V vom Prommer habe ich an VCC auf der gegenüberliegenden Anschlussreihe eingespeist.
    • Hallo liebe Untertsützer und Hinweisgeber,

      Habe heute alle Pegel an dem No-Name Modul (mit Update Problem) nachgemessen, siehe Bilder MISO, MOSI, SCK.

      Mitch64 wrote:

      Ich glaube nicht, dass der SCK-Ausgang des Programmers mit 1MHz Takt die LED auch noch mit ca. 5mA treiben kann,
      ohne dass der SCK-Pegel zusammen bricht.


      Zu diesem Modul, habe ich via Fusebit-Einstellung den Clock-Out gemessen: 15,993MHz sowie die Spannung am AVR-328 Pin4 von 3,255V

      Wenn ich den Chip-Inhalt nach dem Schreiben (Chip/write buffer into chip) in den Buffer zurücklese, deckt er sich nur in Teilen mit dem OpenLog_V43.hex. (siehe Bilder: Buffer zurückgelesen/OpenLog_V43) Vielleicht hängt das mit der niedrigen Spannung zusammen.

      Beim Sparkfun Modul lässt sich offenbar die Fusebit Einstellung nicht auslesen????

      @avralfred

      Erstellt dein No-Name Modul auch automatisch eine Config.txt, wenn auf der SD-Card beim Power-Up keine vorhanden ist?

      Viele Grüsse Ulrich
      Files
      • Prommer Bild2.jpg

        (70.59 kB, downloaded 9 times, last: )
      • Buffer zurückgelesen.JPG

        (273.81 kB, downloaded 8 times, last: )
      • OpenLog_V43 im Buffer.JPG

        (310.98 kB, downloaded 7 times, last: )
      • MISO.BMP

        (998.45 kB, downloaded 10 times, last: )
      • MOSI.BMP

        (998.45 kB, downloaded 5 times, last: )
      • SCK.BMP

        (998.45 kB, downloaded 9 times, last: )
    • Mal davon abgesehen, dass der Controller mit 16MHz und 3,3V außerhalb der Spezifikation betrieben wird,
      fallen doch noch die Pegel an der ISP-Schnittstelle auf.

      • Miso passt mit 3,3V. Das ist in Ordnung.
      • Mosi liegt höher, bei 3,8V. Wieso? Treibt dein Programmer 5V am MOSI?
      • Und der SCK (am Controller-Pin gemessen?) hat nur 2,5V. Das sind 75% von VCC. Das halte ich für zu wenig.
      Wie sieht das Reset-Signal aus von den Pegeln?

      Löte mal den Widerstand raus von der LED am SCK-Pin, oder probiere mal einen anderen Programmer, so wie es auch schon Pluto geschrieben hat.
    • Ulrich wrote:

      wenn auf der SD-Card beim Power-Up keine vorhanden ist?
      Wobei es auch noch eventuell auf den Softwarestand ankommt.
      In der aktuellen Version wird jedenfalls eine Config.TXT angelegt.
      Deren Inhalt ist davon abhängig was vorher mit dem Modul passiert ist.
      Ist das Modul "nagelneu" (z.B. neu geflasht und das EEPROM wurde dabei auch gelöscht) werden die Standard-Vorgabewerte für das Config geschrieben, während bei einem bereits verwendeten Modul jene Werte in die Config.TXT geschrieben werden, welche auch die vorhergehende SD-Karte kannte (die auch abweichend vom Standard sein können.
    • An alle meine Unterstützer und andere Interessierte

      No-Name OpenLog-Modul läuft nun mit Update OpenLog_V43.hex

      Die Aufgabe bestand darin, ein Programm welches nur als *.hex File vorliegt, in einen AVR328 mit einem Diamex-Prommer zu übertragen.

      Die entscheidende Maßnahme war letztlich anstatt:

      Chip/write Buffer into chip das andere

      Chip/Autoprogram auszuwählen.



      Für alle, die sich ebenfalls für diese preiswerten Logger-Module (OpenLog-Module) interessieren und bei Bedarf ein erforderliches update einspielen wollen, hier meine Vorgehensweise. (Diese gilt prinzipiell für alle Dateien, die nur im *.hex Format vorliegen und in einen AVR-Prozessor einprogrammiert werden sollen)

      Hier speziell: Update-Adapter für das No-Name Modul präparieren, d.h. eine ISP-Verbindung mit Prommer herstellen (Ist etwas Lötarbeit, MISO-,MOSI-,SCK-,Reset- sowie Power-Pins des Moduls mit ISP vom Prommer verbinden. Prommer auf 3,3V Spannung einstellen. (Diamex-Bedienungsanleitung/ Bild vom Adapter in Post#68 von avralfred, Modulbilder in Post#39/#41)

      Zunächst im Menue Options/Programmer das Autoflash deaktivieren.

      Um beim Aufruf von Bascom Zugriff auf die ausgegrauten Menue-Icons zu erhalten, ist ein kurzes (beliebiges) Bascom-Programm mit dem entsprechenden AVR-Typ aufzurufen.

      Danach ist der Zugriff auf die Menue-Icons freigegeben und es kann wie folgt weitergehen:
      • Program Chip (F4) aufrufen
      • Im erscheinenden Menue: Buffer/clear anklicken (im Buffer-Bereich zeigen alle Werte nun „FF“/ dies nur zur Sicherheit, kann auch entfallen)
      • Buffer/Load from file anklicken (*.hex file mit Explorer suchen und mit öffnen auswählen, danach wechseln die im Buffer-Bereich angezeigten FF-Werte in die geladenen Hex-Werte )
      • Im Menue nun Chip/Autoprogram! auswählen und

      • warten bis der grüne Fortschrittsbalken abgelaufen ist und das Fenster geschlossen wird. Falls das Fenster nicht schließt, ist wohl ein Fehler aufgetreten.
      • Modul aus dem Update-Adapter entnehmen, und an den Logger-Prozessor anschließen, der die Daten für die SD-Card des Moduls liefern soll.



      Diese Vorgehensweise hat bei mir zum Erfolg geführt (zwei Module upgedated). Die No-Name Module funktionieren damit entsprechend der im Forum-Lexikon zu findenden OpenLog Beschreibung . Auf Basis der detaillierten Programm-Schnipsel von Zitronenfalter (Post#21/#23) kann ich noch mein Programmbeispiel zum Testen und Betrieb solcher Module beisteuern. (Anlegen weiterer Files zur Runtime)

      Ich hoffe, ich habe nichts vergessen…

      Gruß

      Ulrich
    • OpenLog Ergänzung/Hinweise

      Micro SD-Card: wenn möglich schnelle Variante, z.B. Class 10
      Formatierung SD-Card: Fat32
      Max. Grösse SD-Card : 32GB
      Verdrahtung: siehe Bild
      Beispiel/Test-Programm für Arduino Mega2560

      Mit Editor: 38400,26,3,0,0,0,0 als Config.txt vor Betrieb auf die SD-Card schreiben. (es sind alle Baudraten definierbar, 9600Bd ist Standardrate)

      Zur Vorgeschichte:

      Es gab in meinem Umfeld die Anforderung alle 5ms einen ADC-Wert über 12 Stunden mit 115200Bd auf einer SD-Card zu speichern.

      Zudem sollte das SD-Card Modul so klein wie technisch möglich sein, und eine einfache Ansteuerung aufweisen. Die Wahl fiel auf ein OpenLog Modul, welches mit der entsprechenden Config.txt (115200Bd,26,3,0,0,0,0) sowie via Tx-Port zu beschreiben ist.

      Da sonst keine weiteren Einstellungen (auch kein update) vorzunehmen waren, funktionierte das Loggen auf Anhieb und es wurde eine einzige große *.txt Datei erstellt. (8,64MB)

      Um diese riesige Datenmenge auch grafisch darstellen zu können, bot sich der Flow-CSV-Viewer an, welcher vermittels Zoomeinstellung jeden Abschnitt der dargestellten Grafik einsehbar macht, lediglich die Endung *.txt musste vorher in *.csv umbenannt werden.

      Um jedoch auch während der Laufzeit schon mehrere Files anlegen zu können (nicht nur nach Powerup) und zugleich den Namen der Files sowie die File-Endung *.csv selbst definieren zu können, wurde das Testprogramm erstellt.

      Testprogramm folgt....
      Files
    • Und hier noch mein Testprogramm für die Kommunikation mit OpenLog-Modul

      BASCOM Source Code

      1. '( Datum: 03.10.2023, Bascom Version 2.0.8.6
      2. Programm-Name: Forum V5 Test mit Gosub.bas
      3. Test-Programm für Kommunikation zum Openlog Modul
      4. In diesem Testprogramm wird auch ein Uhr Modul verwendet, z.B.
      5. ' https://www.reichelt.de/raspberry-pi-real-time-clock-modul-rtc-ds3231sn-rpi-rtc-clock-p224214.html?search=RTC-Modul
      6. Hier wurde der Einfachheit halber eine Sub Newfile zur Erkennung der
      7. OpenLog-Quittungszeichen gewählt.
      8. Auf SD-Card config.txt erstellen, Inhalt mittels Editor: 38400,26,3,0,0,0,0
      9. (das OpenLog-Modul wird hier mit 38400Bd beschrieben)
      10. Das Programm wurde auf einem upgedateten No-Nome Modul getestet.
      11. Sicherlich kann man Verbesserungen vornehmen, jedoch ist es ja auch nur
      12. ein Testprogramm
      13. **************************************************************************
      14. Mein besonderer Dank gilt Forums-Mitglied "Zitronenfalter", da ohne seine
      15. Vorarbeit dieses Programm so nicht möglich gewesen wäre
      16. **************************************************************************
      17. ')
      18. $regfile = "m2560def.dat"
      19. $crystal = 15875949 '!!!anstatt 16MHz hat mein Mega2560 nur 15,875MHz
      20. 'bei zu großer Abweichung von 16Mhz anpassen
      21. $hwstack = 200
      22. $swstack = 400
      23. $framesize = 400
      24. Disable Jtag
      25. Dim Naked_date As String * 8
      26. Dim Weekday As Byte
      27. Dim Sekunde As Byte
      28. Dim Got_time As String * 8
      29. Dim Got_date As String * 8
      30. Dim Newfilename As String * 12
      31. Dim Filenumber As Byte
      32. Dim F_nr As String * 3
      33. Dim S As String * 2
      34. Dim Fa As Byte
      35. Dim Fs As String * 3
      36. Dim Op_sent As String * 50
      37. Dim Substring1 As String * 2
      38. Dim Substring2 As String * 1
      39. Dim Cnt As Word
      40. Dim Text As String * 30
      41. Dim A As Byte
      42. Config Portf.0 = Output 'Ersatz-Reset Port für OpenLog Modul
      43. Testport Alias Portf.0
      44. Reset Testport 'separater Start-Reset für OpenLog-Modul
      45. Config Com4 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
      46. Open "Com4:" For Binary As #3 'Output zum OpenLog für Daten
      47. Config Com3 = 38400 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
      48. Open "Com3:" For Binary As #2 'Input vom Openlog für Quittungen und anderes
      49. Config Serialin2 = Buffered , Size = 200
      50. Config Com1 = 115200 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
      51. Open "Com1:" For Binary As #1 'Output zu Hterm, Mitlesen der Kommunikation
      52. Enable Interrupts
      53. $lib "i2c_twi.lbx"
      54. '-------------I2C Parameter---------------------------
      55. Config Scl = Portd.0 ' serial clock SCL am mega2560
      56. Config Sda = Portd.1 ' serial data SDA am mega2560
      57. I2cinit
      58. Config Twi = 400000 ' Taktrate 400KHz
      59. Const Ds3231w = &HD0 ' RTCadresse fuers schreiben
      60. Const Ds3231r = &HD1 ' RTCadresse fuers lesen
      61. Config Clock = User
      62. ''setze 32,768kHz (1Hz) Takt-Ausgang
      63. I2cstart
      64. I2cwbyte Ds3231w
      65. I2cwbyte 7
      66. 'I2cwbyte &B10010000 ' Control-Byte für 1Hz am SOW-Out
      67. I2cwbyte &B00010011 ' Control-Byte für 32,768kHz am SOW-Out
      68. I2cstop
      69. Config Date = Dmy , Separator = Minus 'Datumsformat TT-MM-JJ
      70. ''Zum Stellen der Uhr (DS3231) Date und Time aktualisieren und aktivieren
      71. 'Date$ = "03-10-23" 'z.B.: für Tests, Startzit definieren
      72. 'Time$ = "16:15:00" '
      73. ''---------------------Versions-Daten
      74. 'F_name = Version(3)
      75. 'F_date = Version(1)
      76. 'F_datum = Left(f_date , 10)
      77. 'F_time = Right(f_date , 8)
      78. 'Text = F_datum + " " + F_time
      79. 'Print #1, Text
      80. '-----------------------------------------------------------
      81. Clear Serialin2 'Eingangsbuffer für OpenLog Quittungen Löschen
      82. Wait 3 'Wartezeit damit OpenLog nach Powerup bereit wird
      83. ' '*******************************************************************************
      84. Filenumber = 0
      85. ''#############################
      86. Do
      87. Print #1 , "Do-Loop " 'Ausgabe für Hterm zur Kontrolle
      88. Gosub Newfile
      89. If A <> 0 Then 'Schreibfreigabe bei ungleich 0, aus Sub Newfile
      90. 'ab hier beliebige Daten auf Openlog Modul speichern
      91. ' Zur Kontrolle und auch für den Flow CSV Viewer doppelte Ausgabe
      92. 'z.B. Header-Zeilen
      93. Got_time = Time$
      94. Text = "#" + Got_time + "," + "new-Testfile " + "," + "2-Headerline" 'Beispiel Texte
      95. Print #3 , Text
      96. Text = "#" + Got_time + "," + "new-Testfile " + "," + "2-Headerline" 'Beispiel Texte
      97. Print #3 , Text
      98. Wait 1 'dieses Wait hier, nur damit der Time-Wert ein neuer ist
      99. Got_time = Time$
      100. 'ab hier Beispiel Daten, nur um zu sehen ob alles auch auf SD-Card landet
      101. Cnt = 0
      102. Do
      103. Incr Cnt
      104. Text = Str(cnt) + " , " + Got_time
      105. Print #3 , Text 'Daten zur SD-Card
      106. Loop Until Cnt > 100
      107. Print #1 , "---Daten sind geschrieben---" 'Für Hterm ausgabe
      108. End If
      109. Wait 3 'Pause bevor ein neues File angelegt wird
      110. Loop Until Filenumber > 1 'neues File anlegen,
      111. End
      112. '****************************************************************************
      113. Newfile: ''neues File im Command Modus anlegen
      114. Print #1, 'Kontrollausgaben für Hterm
      115. Print #1 , "***sub Newfile*******"
      116. Incr Filenumber
      117. Text = "Filenumber= " + Str(filenumber)
      118. Print #1 , Text 'Kontrollausgaben für Hterm
      119. Print #3 , "{026}{026}{026}"; ' bisherige Datenübertragung beenden
      120. 'und in Command-Modus wechseln
      121. 'Dieses Wait mit 200ms ist wichtig, da sonst nichts auf der SD-Card landet
      122. Waitms 200 'Offenbar benötigt das Modul einige Zeit
      123. ' 'um den Config.txt Inhalt zu interpretieren
      124. Op_sent = ""
      125. Substring1 = "~>" 'Quittungs-Zeichen für Modul im Command-Modus
      126. While Ischarwaiting(#2) = 1 '#2=Com3 für Empfang von OpenLog
      127. Fa = Waitkey(#2) 'Fa als Byte
      128. Fs = Chr(fa) 'von Byte nach Charakterzeichen
      129. Op_sent = Op_sent + Fs 'alle Zeichen sammeln
      130. Waitms 1 '???? Wartezeit, da Programm zu schnell ????
      131. Wend
      132. A = Instr(op_sent , Substring1) 'ist Command_modus?
      133. Print #1 , "A1=" ; A
      134. If A <> 0 Then 'substring gefunden wenn ungleich 0
      135. Print #3 , "sync" ' Restbuffer in file schreiben
      136. '
      137. Got_date = Date$
      138. Naked_date = Got_date
      139. Delchars Naked_date , "-" 'Binde-Striche zwischen den Uhr-Ziffern..
      140. '..entfernen, da max. 8 Zeichen erlaubt sind
      141. F_nr = Str(filenumber) 'wurde in Hauptschleife inkrementiert
      142. S = Format(f_nr , "0") 'einstellig, da sonst nicht in Filenamen passt
      143. Newfilename = Naked_date + "-" + S + ".csv" 'Erweiterung wichtig 8.3
      144. Clear Serialin2 'frei für neue Quitungs-Zeichen
      145. Print #3 , "append " ; Newfilename 'hier neues File erstellen
      146. Print #1 ,
      147. ''*******auf Freigabe zum Daten-Schreiben prüfen
      148. Op_sent = ""
      149. Substring2 = "<" 'Quittungs-Signal vom Modul, bin im Schreib-Modus
      150. Print #1 , "-------" 'Hterm Ausgabe
      151. Print #1 , "Check Freigabe" 'Hterm Ausgabe
      152. While Ischarwaiting(#2) = 1 '#2=Com3 für Empfang von OpenLog
      153. Fa = Waitkey(#2) 'Fa als Byte
      154. Fs = Chr(fa) 'von Byte nach Zeichen
      155. Op_sent = Op_sent + Fs 'alle Zeichen sammeln
      156. Waitms 1 '???? Wartezeit, da Programm zu schnell ????
      157. Wend
      158. A = Instr(op_sent , Substring2) ' Write-Modus
      159. Print #1 , "A2=" ; A 'Hterm Kontroll ausgabe
      160. End If
      161. Return
      162. ''*******************************************************************************
      163. Getdatetime:
      164. I2cstart
      165. I2cwbyte Ds3231w
      166. I2cwbyte 0
      167. I2cstart
      168. I2cwbyte Ds3231r
      169. I2crbyte _sec , Ack
      170. I2crbyte _min , Ack
      171. I2crbyte _hour , Ack
      172. I2crbyte Weekday , Ack
      173. I2crbyte _day , Ack
      174. I2crbyte _month , Ack
      175. I2crbyte _year , Nack
      176. I2cstop
      177. _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
      178. _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
      179. Return
      180. '*******************************************************************************
      181. Setdate:
      182. _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
      183. I2cstart
      184. I2cwbyte Ds3231w
      185. I2cwbyte 4
      186. I2cwbyte _day
      187. I2cwbyte _month
      188. I2cwbyte _year
      189. I2cstop
      190. Return
      191. '*******************************************************************************
      192. Settime:
      193. _sec = Sekunde 'Hier wird die Sekundenvariable mit dem gestellten Wert ersetzt.
      194. _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
      195. I2cstart
      196. I2cwbyte Ds3231w
      197. I2cwbyte 0
      198. I2cwbyte _sec
      199. I2cwbyte _min
      200. I2cwbyte _hour
      201. I2cstop
      202. Return
      203. '*******************************************************************************
      Display All