mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehler Temperatur kleinster und größter Wert (Bascom)


Autor: Conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
bei mir taucht leider immer wieder ein Fehler auf, den ich nicht finden 
kann. Vielleicht kann mir hier ja jemand helfen.
Auf meinem LCD wird die aktuelle Temperatur angezeigt. Zusätzlich habe 
ich das Programm so programmiert, dass jeweils der kleinste und der 
größte gemessene Wert als Minimal- bzw. Maximaltemperatur in der zweiten 
Zeile meines Displays angezeigt wird. Mit dem größten Wert klappt dies 
auch einwandfrei, aber beim kleinsten wird immer 0°C angezeigt, obwohl 
dieser Wert nie gemessen wurde. Kann den Fehler jedoch nicht entdecken.
Meiner Meinung nach habe ich nämlich bei der Minimal und 
Maximaltemperatur dasselbe entsprechend den Werten programmiert. Wo ist 
der Fehler?


  ' Vorlage-Datei für Attiny-Platine
'**********************************************************
$regfile = "attiny2313.dat"                                 'Attiny2313
$crystal = 4000000                                          '4 MHz
$baud = 9600                                                ' Baudrate 
RS232

'******************* Deklarationen ************************
   Config Lcd = 16 * 2
   Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , 
Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6
   Config Lcdbus = 4
   Initlcd
   Cls
Config Scl = Portb.5
Config Sda = Portb.7

Dim Aktuell As Byte
Dim Mindest As Byte
Dim Maximal As Byte

Dim X As Byte
Dim Y As Byte
'****************** Initialisierung ***********************

Ddrb = &B11111111                                           'Port B als 
Ausgangsport
Ddrd = &B01110000                                           'D4, D5, D6 
als Ausgang; Rest als Eingang
Portd = &B10001111                                          'Eingänge 
auf high legen




'******************** Hauptprogramm ***********************

  Do

    Deflcdchar Print , 32 , 3 , 3 , 32 , 32 , 32 , 32 , 32  ' replace ? 
with number (0-7)
I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
Locate 1 , 1


Lcd Aktuell
      Lcd Chr(0)
      Lcd "C"
   Locate 1 , 0



 I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop


Locate 2 , 1

If Mindest > Aktuell Then
Mindest = Aktuell
End If
Lcd Mindest

 Lcd Chr(0)
 Lcd "C"



 I2cstart
I2cwbyte 145
I2crbyte Aktuell , Nack
I2cstop
If Maximal < Aktuell Then
  Maximal = Aktuell
End If

Locate 2 , 7
 Lcd Maximal
 Lcd Chr(0)
 Lcd "C"
Cursor Off


Wait 1
Loop

End

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so wie ich das sehe musst du Mindest einen Startwert zuweisen, denn am 
anfang ist er 0 und das ist immer kleiner als die aktuelle Temperatur, 
setzte dein Minimal beim ersten durchgang auf den aktuellen wert oder 
auf den größten wert.

Gruß Marc

Autor: Conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe jetzt mal Mindest=Aktuelle eingegeben, aber das funktioniert 
nicht. Die Temperatur ist dann immer die aktuelle. Welchen Befehl 
benötige ich denn, um den Startwert zuzuweisen?

Autor: Helfer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'****************** Initialisierung ***********************
Mindest = 255      ' <===== 
Ddrb = &B11111111  ' Port B als

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Conrad schrieb im Beitrag #2072413:
> ich habe jetzt mal Mindest=Aktuelle eingegeben, aber das funktioniert
> nicht. Die Temperatur ist dann immer die aktuelle. Welchen Befehl
> benötige ich denn, um den Startwert zuzuweisen?

Lesen hilft.

Marc schrieb:
> setzte dein Minimal beim ersten durchgang
Du sollst nur beim ersten Durchlauf (oder falls möglich vor deiner 
Schleife) dem Min Wert die aktuelle Temperatur zuweisen.
Übrigens auch dem Max Wert, sonst hast du bei einer Umgebung die 
dauerhaft unter 0 Grad ist das selbe Problem mit der Max Anzeige.

Autor: Conrad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tausend Dank...funktioniert perfekt;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.