1Wire DS1820 und Werte speichern im EEProm Mega8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    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!

    • 1Wire DS1820 und Werte speichern im EEProm Mega8

      Hallo Leute,

      ich habe ein Problem mit meinem Prog! Ich möchte meine Klimaanlage im Auto steuern und die Temperatur mit dem 1Wire DS1820 messen. Dazu habe ich mir den Entwurf von Stefan Hamburg zu Hilfe genommen, welcher auch sehr gut funktioniert! Nun möchte ich aber auch Temperatur Sollwert und Umluft Sollwert im EEProm Bereich des Mega8 speichern und mit dem Istwert des DS1820 vergleichen. So weit so gut, es funktioniert alles bis auf die Eingabe ins EEProm! Kann es eventuell sein, dass 1Wire und Writeeeprom bzw. Readeeprom sich irgendwie gegenseitig behindern? Kann mir eventuell jemand behilflich sein bei meinem Problem?

      Gruß
      Klaus
      Dateien
    • READEEPROM var , address
      Die Adressen werden Byteweise hochgezählt.
      Wenn hinter Readeeprom Wert_soll , 1 ein Interger steckt,
      dann kann die nächste Variable nach meinem Verständnis erst an Ardesse 3 beginnen.

      Ich lasse Bascom die Adressen verteilen, dann gibt es da keine Probleme

      Dim E_Variable1 as Byte
      Dim E_Variable2 as Integer
      Dim X as Integer

      Lesen: X = E_Variable1
      Schreiben: E_Variable2 = X
    • Hi Klaus,
      du kannst direkt Variablen im ERAM definieren und ansprechen...

      BASCOM-Quellcode

      1. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      2. ' BASCOM-Programm für Klimaanlagen Steuerung im Kfz '
      3. ' Stefan Hoffmanns Entwurf ist der Grundstock für die Anzeige des Thermometers!'
      4. ' Soll und Umluft Wert sollen im EEprom Bereich des AVR gespeichert '
      5. ' und mit Istwert verglichen werden! '
      6. ' Autor: Klaus = veryoldman Datum: 13.05.2018 '
      7. ' Thermometer mit DS1820 1-Wire '
      8. ' Von Daten-Pin 4,7k Widerstand nach Plus '
      9. ' In: PC.1: LDR '
      10. ' In: PC.0: DS1820 1-Wire '
      11. ' Out: Portd2 bis Portd7: LCD '
      12. ' Out: PB.1: blaue LED = Klima an '
      13. ' Out: PB.2: Displaybeleuchtung '
      14. ' In: PC.4: TasterUm '
      15. ' In: PB.3: TasterUp '
      16. ' In: PB.4: TasterDown '
      17. ' In: PB.5: TasterSoll '
      18. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      19. $regfile = "M8def.dat"
      20. $crystal = 8000000
      21. $hwstack = 64
      22. $swstack = 64
      23. $framesize = 40
      24. '---- LC Display Port Beschaltung --------------------------
      25. Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
      26. Config Lcd = 20 * 4
      27. Cursor Off
      28. Cls
      29. '---- Display Sonderzeichen --------------------------------
      30. Deflcdchar 0 , 6 , 9 , 9 , 6 , 32 , 32 , 32 , 32 ' LCD Sonderzeichen Eigenentwurf "°"
      31. Deflcdchar 1 , 4 , 10 , 4 , 32 , 31 , 32 , 32 , 32 ' LCD Sonderzeichen Eigenentwurf "°"
      32. '---- Timer 1 PWM Ausgang für Helligkeitsanpassung ---------
      33. Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
      34. Enable Timer1
      35. '--------AD Eingänge----------------------------------------
      36. Config Adc = Single , Prescaler = Auto , Reference = Avcc ' Referenzspannung = VCC
      37. Start Adc
      38. '---- AC Schalter Amaturenbrett ----------------------------
      39. Config Pinb.0 = Input ' PortB.0 über !!!Schutzbeschaltung!!! an 12V AC Schalter
      40. Ac Alias Pinb.0 '
      41. Portb.0 = 1 ' Pull_Up gesetzt PortB.0
      42. '---- Portbeschaltung PWM Ausgänge -------------------------
      43. Config Portb.1 = Output ' PWM Ausgang OC1A = PortB.1
      44. Led_kom Alias Pwm1a ' Blaue LED zeigt Kühlung an
      45. Config Portb.2 = Output ' PWM Ausgang OC1B = PortB.2
      46. Disp Alias Pwm1b ' Display Backlight Helligkeit
      47. '---- Portbelegung Taster ----------------------------------
      48. Config Portc.4 = Input ' TasterUm = PC.4
      49. Portc.4 = 1
      50. Tasterum Alias Pinc.4
      51. Config Portb.3 = Input ' TasterUp = PB.3
      52. Portb.3 = 1
      53. Tasterup Alias Pinb.3
      54. Config Portb.4 = Input ' TasterDown = PB.4
      55. Portb.4 = 1
      56. Tasterdown Alias Pinb.4
      57. Config Portb.5 = Input ' TasterSoll = PB.5
      58. Portb.5 = 1
      59. Tastersoll Alias Pinb.5
      60. '--------Ausgänge-------------------------------------------
      61. Config Portc.3 = Output ' PortC.3 als Ausgang Kompressor
      62. Rel1 Alias Portc.3 ' Rel1 Kompressor wird geschaltet
      63. Config Portc.2 = Output ' PortC.2 als Ausgang Umluft
      64. Rel2 Alias Portc.2 ' Rel2 Umluft wird geschaltet
      65. '---- LDR an ADC1 ------------------------------------------
      66. Config Portc.1 = Input ' ADC1 = LDR
      67. Config 1wire = Portc.0 ' Pin fuer 1Wire festlegen
      68. Dim ee_Wert_soll As eram Integer '
      69. Dim ee_Wert_um As eram Integer '
      70. Dim Ldr As Integer ' Display und blaue LED Helligkeit
      71. Dim Wert_aus_ds1820 As Integer ' Register 2 Byte lang auslesen
      72. Dim Um As Byte ' Temperatur Umluft Klappe
      73. Dim Soll As Byte ' Temperatur Soll-Wert
      74. Dim Wert_um As Integer '
      75. Dim Wert_soll As Integer '
      76. Dim Istwert As Integer '
      77. Dim Ein As Byte '
      78. Dim Aus As Byte '
      79. Dim I As Byte ' For Next Schleife
      80. '$eeprom
      81. '---- Einlesen der gespeicherten Werte ---------------------
      82. Wert_soll = ee_Wert_soll ' Lesen des gespeicherten Sollwerts
      83. Wert_um = ee_Wert_um ' Lesen des gespeicherten Umluftwerts
      84. '--------Voreinstellungen-----------------------------------
      85. Rel1 = 0 ' Kompressor "Aus"
      86. Rel2 = 0 ' Umluft "Aus"
      87. Ac = 1 ' Aircondition "Aus"!!! AC Schalter im Auto liefert 12V Signal !!!
      88. ' über Schutzbeschaltung an PortB.0
      89. Ein = 1
      90. Aus = 0
      91. Led_kom = 0 ' Blaue LED Aus
      92. Do
      93. '---- Abfrage ob "AC" an oder aus --------------------------
      94. If Ac = 1 Then ' AC Schalter am Armaturenbrett "Aus"
      95. Waitms 20 ' Kann je nach Ausführung variieren
      96. Cls
      97. Gosub Ac_aus
      98. End If
      99. '---- LED Kom Helligkeitsanpassung -------------------------
      100. Ldr = Getadc(1) ' LDR an ADC1 = PortC.1 für LED(Blau) Leuchtstärke
      101. Disp = Ldr ' Display-Backlight helligkeit abhängig vom Tageslicht
      102. If Ldr < 1 Then '
      103. Ldr = 1
      104. End If
      105. If Disp < 1 Then
      106. Disp = 1 ' Display Grundhelligkeit
      107. End If
      108. If Wert_soll > 100 Then
      109. Wert_soll = 70
      110. End If
      111. If Wert_um > 100 Then
      112. Wert_um = 70
      113. End If
      114. '---- Solleinstellung von Umluft und Temperaturwert --------
      115. If Tastersoll = 0 And Tasterup = 0 Then ' wenn Taster gedrueckt wird ..
      116. Waitms 20
      117. Wert_soll = Soll + 1
      118. ee_Wert_soll = Wert_soll
      119. End If
      120. If Tastersoll = 0 And Tasterdown = 0 Then ' wenn Taster gedrueckt wird ..
      121. Waitms 20
      122. Wert_soll = Soll - 1
      123. ee_Wert_soll = Wert_soll
      124. End If
      125. If Tasterum = 0 And Tasterup = 0 Then ' wenn Taster gedrueckt wird ..
      126. Waitms 20
      127. Wert_um = Um + 1
      128. ee_Wert_um = Wert_um
      129. End If
      130. If Tasterum = 0 And Tasterdown = 0 Then ' wenn Taster gedrueckt wird ..
      131. Waitms 20
      132. Wert_um = Um - 1
      133. ee_Wert_um = Wert_um
      134. End If
      135. '---- Auslesen DS1820 --------------------------------------
      136. 1wreset
      137. 1wwrite &HCC 'Bausteinauswahl ignorieren
      138. 1wwrite &H44 'Messvorgang anstossen
      139. Waitus 200
      140. 1wreset
      141. 1wwrite &HCC 'Bausteinauswahl ignorieren
      142. 1wwrite &HBE 'Read Scratchpad
      143. Wert_aus_ds1820 = 1wread(2) '2 Bytes lesen: MSB, LSB
      144. 1wreset
      145. Shift Wert_aus_ds1820 , Right 'Bit 0 rausschieben
      146. If Wert_aus_ds1820.7 = 0 Then
      147. ' -- >= Null Grad
      148. Istwert = Wert_aus_ds1820
      149. Else
      150. ' -- Minus-Temperatur
      151. ' -- Zweierkomplement bilden:
      152. Wert_aus_ds1820 = Wert_aus_ds1820 And &B0000000011111111
      153. Decr Wert_aus_ds1820 '1 subtrahieren
      154. For I = 0 To 7 'jedes Bit invertieren
      155. Toggle Wert_aus_ds1820.i
      156. Next
      157. Istwert = -wert_aus_ds1820 'Vorzeichen setzen
      158. End If
      159. '---- Anzeige Display --------------------------------------
      160. Locate 1 , 1
      161. Lcd " Umluft = " ; Wert_um ; Chr(0) ; "C " ' Anzeige Sollwert Umluft
      162. Locate 2 , 1
      163. Lcd " Kompressor = " ; Rel1 ; " " ' Anzeige Kompressor "1" oder "0"
      164. Locate 3 , 1
      165. Lcd " Sollwert = " ; Wert_soll ; Chr(0) ; "C " ' Anzeige Sollwert Temperatur
      166. Locate 4 , 1
      167. Lcd " Istwert = " ; Istwert ; Chr(0) ; "C " ' Anzeige Istwert Innentemp
      168. Waitms 500
      169. If Istwert > Wert_soll Then ' Temp-Fühler mit Soll-Voreinstellung vergleichen
      170. Gosub K_ein ' Kompressor ein
      171. End If
      172. If Istwert < Wert_soll Then ' Temp-Fühler mit Soll-Voreinstellung vergleichen
      173. Gosub K_aus ' Kompressor aus
      174. End If
      175. If Istwert > Wert_um Then ' Wenn Innentemp höher Um_Wert dann
      176. Gosub Um_ein ' Umluft ein um Innentemp schneller
      177. End If ' abzusenken, wenn Umluftschalter = ein
      178. If Istwert < Wert_um Then ' Wenn Innentemp kleiner Um_Wert dann
      179. Gosub Um_aus ' Umluft aus
      180. End If
      181. Loop
      182. End
      183. '---- Unterroutinen ----------------------------------------
      184. '---- Anzeige solange AC nicht eingeschaltet ist -----------
      185. '---- Innenraum Ist-Wert anzeigen bei Zündung an -----------
      186. Ac_aus:
      187. Do
      188. Ldr = Getadc(1) ' LDR an ADC1 = PortC.1 für LED(Blau) Leuchtstärke
      189. Disp = Ldr ' Display-Backlight helligkeit abhängig vom Tageslicht
      190. If Disp < 1 Then
      191. Disp = 1 ' Display Grundhelligkeit
      192. End If
      193. '---- Auslesen DS1820 --------------------------------------
      194. 1wreset
      195. 1wwrite &HCC 'Bausteinauswahl ignorieren
      196. 1wwrite &H44 'Messvorgang anstossen
      197. Waitus 200
      198. 1wreset
      199. 1wwrite &HCC 'Bausteinauswahl ignorieren
      200. 1wwrite &HBE 'Read Scratchpad
      201. Wert_aus_ds1820 = 1wread(2) '2 Bytes lesen: MSB, LSB
      202. 1wreset
      203. Shift Wert_aus_ds1820 , Right 'Bit 0 rausschieben
      204. If Wert_aus_ds1820.7 = 0 Then
      205. ' -- >= Null Grad
      206. Istwert = Wert_aus_ds1820
      207. Else
      208. ' -- Minus-Temperatur
      209. ' -- Zweierkomplement bilden:
      210. Wert_aus_ds1820 = Wert_aus_ds1820 And &B0000000011111111
      211. Decr Wert_aus_ds1820 '1 subtrahieren
      212. For I = 0 To 7 'jedes Bit invertieren
      213. Toggle Wert_aus_ds1820.i
      214. Next
      215. Istwert = -wert_aus_ds1820 'Vorzeichen setzen
      216. End If
      217. '---- Anzeige Display --------------------------------------
      218. Rel1 = 0 ' Kompressor Aus
      219. Led_kom = Aus ' LED(Blau) Aus
      220. Locate 2 , 1
      221. Lcd " MI" ; Chr(1) ; "XX XX" ' Kfz Kennzeichen "nur zur Personifizierung der Steuerung"
      222. Locate 3 , 1
      223. Lcd " Innentemp " ; Istwert ; Chr(0) ; "C " ' Anzeige Innentemperatur Istwert
      224. Waitms 20
      225. If Ac = 0 Then ' Taste "AC" ein
      226. Waitms 20
      227. Cls
      228. Return ' Zurück zur Klimasteuerung / Regelung
      229. End If
      230. Loop
      231. '---- Kompressor ein / ausschalten -------------------------
      232. K_ein:
      233. Rel1 = Ein ' Rel 2 = Kompressor "Ein"
      234. Led_kom = Ldr ' Anpassung der LED(Blau) Helligkeit PB.1
      235. Return
      236. K_aus:
      237. Rel1 = Aus ' Rel 1 = Kompressor "Aus"
      238. Led_kom = 0 ' LED(Blau) Aus
      239. Return
      240. '---- Umluft-Klappe steuern --------------------------------
      241. Um_ein:
      242. Rel2 = Ein ' Rel 2 Umluftklappe "Ein"
      243. Return
      244. Um_aus:
      245. Rel2 = Aus ' Rel 2 Umluftklappe "Aus"
      246. Return
      Alles anzeigen
      Code first, think later - Natural programmer :D
    • Die waitus 200 erscheinen mit etwas kurz, zwischen Anstoßen der Messung und auslesen. So, wie ich das mal laut Datenblatt verstanden hab', liest man dann die vorher gehende Messung aus, weil die aktuelle noch läuft. Wenn das Anstoßen so schnell hintereinander kommt, dass die Messung noch nicht ganz fertig ist, dann erhält man ungenauere 'Teilergebnisse'.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Noch was: das scratchpad wird gelesen, die 2 bytes für die Temperatur. Dieses word/integer wird nach rechts geshiftet und dann wird bit7 überprüft. Ist das jetzt das richtige bit? Es hat ja den Wert vom ursprünglichen bit8.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      Ist das jetzt das richtige bit?
      Natürlich ja, weil ja bei negativen Temperaturen alle bit ab dem original 8.bit=1 sind. Ich hätte vor meinem post nochmal in DB schauen sollen ||
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Eigendlich fand ich veryoldmans Lösung besser, allein hätte Wert_um bei Adresse 3 sein sollen. Wenn man es den Compiler überläßt schreibt er sie irgendwo? Beim Simulieren gerade in 0 und 1 bzw Wert_um in 2 und 3. Was nun ganz schlecht ist da Adresse 0 instabil ist. Belegt er immer die erste, die benannt wird bei Adresse 0 ? Dann könnte man ein nutzloses Byte ganz oben Definieren.
      Dim nicht_benutzen as eram Byte
    • Soweit ich weiß werden die Speicherplätze in der Reihenfolge der dim-Anweisungen belegt. Die 'unsichere' erste Stelle im eeram kann man so mit einem dummy belegen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Das sind jetzt Zitate aus dem post von six1, der hat's aber auch nur kopiert. Es geht jetzt nur um den Inhalt, ohne Zuordnung, wer es geschrieben hat!

      six1 schrieb:

      ' -- Zweierkomplement bilden:
      Wert_aus_ds1820 = Wert_aus_ds1820 And &B0000000011111111
      Äh, wie geht das? Das ist für mich kein Zweierkomplement, für mich wird hier Maskiert, die obersten 8 bits werden ausgeblendet (die ja bei negativen Temperaturen alle =1 sind).
      Der Rest der Berechnung bei negativen Temperaturen ist bisschen übertrieben

      six1 schrieb:

      Shift Wert_aus_ds1820 , Right 'Bit 0 rausschieben

      If Wert_aus_ds1820.7 = 0 Then
      ' -- >= Null Grad
      Istwert = Wert_aus_ds1820
      Else
      ' -- Minus-Temperatur
      ' -- Zweierkomplement bilden:
      Wert_aus_ds1820 = Wert_aus_ds1820 And &B0000000011111111
      Decr Wert_aus_ds1820 '1 subtrahieren

      For I = 0 To 7 'jedes Bit invertieren
      Toggle Wert_aus_ds1820.i
      Next

      Istwert = -wert_aus_ds1820 'Vorzeichen setzen
      End If
      Ich nehm' mal das Beispiel aus dem Datenblatt, -25,0° = 1111_1111_1100_1110
      bit0 ist das 1/2 Grad und wird weggeschiftet, das Ergebnis ist dann die Temperatur auf Grad genau
      0111_1111_1110_0111
      Wenn man das bit15, das durch das shiften 0 ist, durch eine 1 ersetzt, hätte man schon die -25°. a_15_a5ddcf85
      Aber es wird jetzt Maskiert und es bleibt 0000_0000_1110_0111.
      1 abgezogen ergibt 0000_0000_1110_0110
      ersten 8 bits invertieren 0000_0000__0001_1001
      jetzt wird negiert und es kommt 1111_1111_1110_0111 raus. Also nur das bit15 hat sich verändert. ^^
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Pluto25 schrieb:

      Eigendlich fand ich veryoldmans Lösung besser, allein hätte Wert_um bei Adresse 3 sein sollen. Wenn man es den Compiler überläßt schreibt er sie irgendwo? Beim Simulieren gerade in 0 und 1 bzw Wert_um in 2 und 3. Was nun ganz schlecht ist da Adresse 0 instabil ist. Belegt er immer die erste, die benannt wird bei Adresse 0 ? Dann könnte man ein nutzloses Byte ganz oben Definieren.
      Dim nicht_benutzen as eram Byte
      das geht mit AT

      Dim my_byte as eram byte at 10
      Code first, think later - Natural programmer :D
    • tschoeatsch schrieb:

      Berechnung bei negativen Temperaturen ist bisschen übertrieben
      als Schlusswort meinerseits:
      dieses

      BASCOM-Quellcode

      1. Wert_aus_ds1820 = 1wread(2) '2 Bytes lesen: MSB, LSB
      2. 1wreset
      3. Shift Wert_aus_ds1820 , Right 'Bit 0 rausschieben
      4. If Wert_aus_ds1820.7 = 0 Then
      5. ' -- >= Null Grad
      6. Istwert = Wert_aus_ds1820
      7. Else
      8. ' -- Minus-Temperatur
      9. ' -- Zweierkomplement bilden:
      10. Wert_aus_ds1820 = Wert_aus_ds1820 And &B0000000011111111
      11. Decr Wert_aus_ds1820 '1 subtrahieren
      12. For I = 0 To 7 'jedes Bit invertieren
      13. Toggle Wert_aus_ds1820.i
      14. Next
      15. Istwert = -wert_aus_ds1820 'Vorzeichen setzen
      16. End If
      Alles anzeigen


      mit dem Ergebnis der ganzzahligen Temperatur samt Vorzeichen erhält man so

      Quellcode

      1. Wert_aus_ds1820 = 1wread(2) '2 Bytes lesen: MSB, LSB
      2. 1wreset
      3. Shift Wert_aus_ds1820 , Right,signed 'Bit 0 rausschieben aber Vorzeichen beachten
      4. Istwert = wert_aus_ds1820
      oder so

      Quellcode

      1. Wert_aus_ds1820 = 1wread(2) '2 Bytes lesen: MSB, LSB
      2. 1wreset
      3. Istwert = Wert_aus_ds1820 / 2
      Nachdem hier ja mit integer gearbeitet wird und der Befehl LCD ja auch negative Zahlen mit einem vorgesetzten Minus anzeigen kann, ist es ganz einfach.
      Allerdings wird jetzt nicht 'sauber' gerundet, die Halbgrad werden ja einfach ignoriert. Aus 22,5° wird 22°. Ein 23° erhält man, wenn man direkt nach dem Füllen von Wert_aus_ds1820 mit den 2 bytes aus dem scratchpad bei positiven Temperaturen 1 addiert (0,5° wärmer macht), bei negativen Werten 1 subtrahiert (0,5° kälter macht), und dann shiftet bzw dividiert
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo Leute,

      nachdem ich gestern dann per Notarzt und Rettungswagen ins Krankenhaus gebracht wurde, muss ich mich erst mal in Ruhe mit euren Antworten beschäftigen! Es ist nicht einfach, so ohne Hardware, kann leider nichts ausprobieren, hab nur mein Laptop hier und die I-Net Verbindung ist total besch....n! Ich bedanke mich aber erstmal für eure Antworten!

      Gruß
      Klaus
    • Dann erst mal 'gute Besserung'! a_35_aee4835d
      Und nicht die piepsenden und blinkenden Geräte in deiner Nähe auf der Suche nach hardware aufschrauben!
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hey Leute,

      wenn alles gut geht bin ich morgen wieder zu Hause! Danke für die Genesungswünsche!!

      Übrigens, die Geräte sind schon interessant ^^ .

      Ich hab mir die Antworten von euch durchgelesen. An tschoeatsch hab ich eine Frage: Dir ist aber schon klar, es geht um das Sollwerte schreiben in den EEProm Bereich des Mega8? Die eigentliche Messfunktion mit dem DS1820 funktioniert einwandfrei (danke nochmal an Stefan!). Die Frage hier war ob eventuell die 1Wire Funktion das Speichern der Sollwerte beeinträchtigt. Ich hab vor ca. 3 oder 4 Jahren das gleiche Projekt gebaut, damals allerdings mit dem "KTY81" als Temperaturfühler. Die Sollwerte wurden da auch ins EEProm geschrieben und blieben dort. Das Ganze hatte nur ein Problem, sobald die Ist Temperatur unter Null Grad ging, fing der Mega8 an zu spinnen, war ja eigentlich klar! Deswegen jetzt halt der Wechsel zum DS1820. Die Plus und die Negativ Messung hab ich schon gemacht und kann bestätigen, alle Werte wurden super angezeigt, nur die Sache mit dem EEProm Bereich funktioniert nicht mehr und das macht mich schon etwas nervös. Ich wüsste wirklich nicht was ich anders machen könnte, dazu bin ich leider nicht der Fachmann!

      Gruß
      Klaus
    • Wie Michael in Beitrag 2 geschrieben hat:
      1.) Wenn Du längere Variablen als Byte hast, musst Du auch beim Speichern im EEPROM entsprechend Platz berücksichtigen - also nicht DIREKT aufeinanderfolgende Adressen verwenden.
      2.) Schöner (und moderner) ist das Benutzen von ERAM-Variablen. Hat six1 ja oben als Programm geschrieben. Sieh Dir das einmal in Ruhe an. Das ist eine elegante Sache. Man muss nur immer hin und her Zuweisen und nicht direkt mit den ERAM-Variablen arbeiten.
    • Hallo Leute,

      da bin ich wieder, nach einem kleinen Rückfall bin ich dann heute endlich entlassen worden! Es macht keinen Spaß so ganz alleine im Zimmer mit den ganzen Schläuchen am Körper.

      Jetzt kann ich mich aber wieder meinem Projekt widmen. Ich hab mal die Änderung von six1 in den Mega8 geschoben (in freudiger Erwartung!), das war es aber nicht. Das Ergebnis war, was soll ich sagen, keine Verbesserung. Wenn ich versuche die Sollwerte zu schreiben bzw. zu verändern, tut sich nichts. Ich kann mit der Down Taste -1 einstellen und dann mit der Up Taste diesen Wert auf 1 ändern, weiter passiert nichts. Das gilt für beide Einstellungen "Umluft" und "Sollwert Temperatur"!

      Gruß
      Klaus
    • Ich denke, da hat sich ein Schreibfehler eingeschlichen. Im Programm steht:
      Wert_um = Um + 1
      Ich denke, es wäre besser, wenn es
      Wert_um=Wert_um+1
      heißt.
      Das kommt öfters vor, auch Wert_soll und +1 und -1, musst halt mal das Programm durch gehen, wo mit Tasten was eingestellt wird. Durch den Tastendruck soll ja der alte Wert um 1 verändert werden.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von tschoeatsch ()