-
-
Neuer Benutzer
Öfters hier
Hallo,
könnte mir vielleicht jemand helfen?!
Wenn ich auslesen möchte, also Datenübertragen bekomme ich immer den wert 255 würde mich sehr freuen wenn mir jemand helfen würde.
Mit freundlichen Grüßen
$regfile = "m32def.dat" 'definieren des verwendeten Chips
$crystal = 8000000 'Quarz 8MHz
$baud = 9600
'--------- Eeprom Anschlüße ------
Config Sda = Portc.1 'SDA und SCL definieren
Config Scl = Portc.0
'--------- Temperatursensor DS1821 --------------
Config 1wire = Porta.0 'DS1821 DQ an PD6
'================================================= =============================
Dim Ar As Byte 'Variablenname und Typ festlegen
Dim Temperatur As Integer , Temperatur_lesen As Integer
Dim I As Integer , Z As Integer
Dim Adrcount As Word , H As Byte , L As Byte , Wert As Byte
Dim Adrcount_lesen As Word , H_lesen As Byte , L_lesen As Byte
Do
'---- Temperatur Routine ----
1wreset 'Reset DS1821
1wwrite &HEE 'starte Temperaturkonvertierung
Waitms 100 'warte 100 Millisekunden
1wreset 'Reset DS1821
1wwrite &HAA 'DS1821 sende Daten an Atmel
Ar = 1wread() 'lesen die empfangenen Daten
1wwrite &H22 'stop Temperaturkonvertierung
Temperatur = Ar 'Temperatur übergeben
'---- schreibe in EEprom ----
H = High(adrcount)
L = Adrcount
I2cstart 'Start I2C
I2cwbyte Adr
I2cwbyte H 'Speicherstelle im Eeprom
I2cwbyte L
I2cwbyte Temperatur 'Sende Wert
Print "Schreibe " ; Temperatur ; " Grad ins Eeprom"
I2cstop 'Stop I2C
If Adrcount < &H7FEB Then Adrcount = Adrcount + 1 Else Adrcount = 0 'Prüfen ob Speicher voll ist? Wenn nicht 1 hochzählen oder bei 0 wieder anfangen
Gosub Zeitschleife
Loop
'---- Zeitschleife 30Min ----
Zeitschleife:
'ungefähr 1Min Zeitschleife
For I = 0 To 59
If Pina.1 = 1 Then
Adrcount_lesen = &H0000
Gosub Datenuebertragung 'Über RS232 Daten vom Eeprom ans Terminalprogramm senden
End If
Print "Warte 1 sec."
Wait 1
Next I
Return
'--- lesen vom EEprom bzw. Auslesen über RS232 aufs Teminal Programm ----
Datenuebertragung:
Schleife:
If Adrcount > Adrcount_lesen Then
H_lesen = High(adrcount_lesen)
L_lesen = Adrcount_lesen
I2cstart 'Start I2C
I2cwbyte &HA0 'sende Slave Adresse
I2cwbyte H_lesen 'sende Speicheradresse High
I2cwbyte L_lesen 'sende Speicheradresse Low
I2cstart 'Start I2C
I2cwbyte &HA1 'sende Slave Adresse +1 für schreiben
I2crbyte Temperatur_lesen , Nack 'lese Adresse vom EEprom
I2cstop 'Stop I2C
Waitms 10 'warte 10ms
Print Temperatur_lesen ; " C"
Print Chr(13)
Adrcount_lesen = Adrcount_lesen + 1
Gosub Schleife
Else
Print "Übertragung beendet"
End If
Return
End
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen