Ich bin hier echt am verzweifeln.
Also ich habe ein RN-Board und einen Temperatursensor DS1621
Ich habe den Temperatursensor wie folgt an meinen AtMega32 angeschlossen.
Folgenden Code benutze ich zum testen.Code:DS1621 AtMega32 SDA PC1 SCL PC0 GND GND A0 GND A1 GND A2 GND VDD +5V
Da ich keinen RS232-Port am Laptop habe und ich mein erst heute gekauftes Display nicht anschließen kann, teste ich meinen ebenfalls heute gekauften Temperatursensor indem ich sage dass das Board, wenn eine Temperatur überschritten wird, piepen soll.
Hier der Code den ich hier im Forum gefunden habe.
Das Problem ist nun dass er ständig piept.Code:'------------------------------------------------------------------------------- '----- Beispiel für das Auslesen des Temperatursensors DS1621/1631 ------------ ' HR 2006 ' 'Anmerkung: Dieses Beispiel ist sowohl für den 1621 als auch für den 1631 'geeignet. Der 1631 wird dabei im 1621 Kompatibilitätsmodus betrieben. 'Auf die Auswertung negativer Temperaturen wird verzichtet. '------------------------------------------------------------------------------- $regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 32 Config Scl = Portc.0 Config Sda = Portc.1 Portc.0 = 1 'Pin wird auf High, also 5V geschaltet Portc.1 = 1 Sound Portd.7 , 400 , 450 'BEEP Sound Portd.7 , 400 , 250 'BEEP Sound Portd.7 , 400 , 450 'BEEP I2cinit 'entbehrlich '------------------------------------------------------------------------------- Declare Sub Readtemp(byval Device As Byte) Declare Sub Convertvalue_komma1() Dim Value As Word Dim Ton As Integer Dim Convert_strg As String * 10 Const Ds1 = 150 'ggf. anpassen '----------------------------- Hauptprogramm ----------------------------------- Do Call Readtemp(ds1) Call Convertvalue_komma1() Print Convert_strg Waitms 500 Loop End '----------------------------- Subroutinen ------------------------------------- 'Readtemp liest die Temperatur und stellt sie nach Aufruf in der Variable Value 'in 10tel Grad zu Verfügung. Übergeben wird die Deviceadresse des Sensors. Sub Readtemp(byval Device As Byte) Local Deviceread As Byte Local Lowtemp As Byte Local Hightemp As Byte Deviceread = Device + 1 I2cstart I2cwbyte Device I2cwbyte &HEE 'Temperaturmessung anstoßen I2cstop I2cstart I2cwbyte Device I2cwbyte &HAA 'Temperaturmessung Lesekommando I2cstop I2cstart I2cwbyte Deviceread I2crbyte Lowtemp , Ack 'LSByte holen (Ganze Grad) I2crbyte Hightemp , Nack 'MSByte holen (0,5 Grad Indikator) I2cstop Value = Lowtemp * 10 If Hightemp = 128 Then Value = Value + 5 End If If Hightemp > 10 Then Ton = 550 End If If Hightemp > 40 Then Ton = 250 End If End Sub '------------------------------------------------------------------------------- 'Convertvalue_komma1 wandelt Value in einen String mit einer Nachkommastelle. 'Es wird gezeigt wie ein Zahlenwert in ein String gewandelt wird und dieser 'formatiert werden kann. 'Alternativ kann natürlich auch die "/10, Mod 10 Methode" angewandt werden. Sub Convertvalue_komma1() Convert_strg = Str(value) Convert_strg = Format(convert_strg , " 0.0") End Sub '---------------------------------
Bei Const Ds1 = 150 steht "gegebenenfalls anpassen"
Anpassen auf welchen Wert?
Ich hoffe mir kann einer helfen weil ich echt langsam die Geduld verliere.
Danke







 
			
			 
					
					
					
						 Zitieren
Zitieren

Lesezeichen