mathias172
29.04.2008, 03:34
Einen wunderschönen guten Morgähn liebe Leute.
Ich habe nun die halbe Nacht an einer Kleinigkeit gesessen. Ich wollte eine Funktion fürs Auslesen mehrerer Temperatursensoren schreiben und bin an einer ganz simplen Stelle gescheitert - einer function.
'------------------------------------------------------------------------------
' I2C: Sda = Portc.4 Scl = Portc.5
' UART: RxD = Portd.0 TxD = Portd.1
'------------------------------------------------------------------------------
$regfile = "m32def.dat"
$crystal = 8000000
Declare Function Get_temp(ts As Byte) As Integer
Dim ___lcdno As Byte 'Umschaltbyte für Anzeige :
Config Lcd = 20 * 4 'Anzeigemodus 40 x 4 Zeichen
Config Lcdpin = Pin , E = Portb.6 , Rs = Portb.7 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E2 = Portb.5
___lcdno = 0 'auf Chip 1 schalten
Initlcd 'die beiden oberen Zeilen initialisieren
Cls 'die beiden oberen Zeilen löschen
___lcdno = 1
Initlcd
Cls
Config 1wire = Portc.6
Cls
Dim Ar(8) As Byte
Dim I As Byte
Dim Sc(9) As Byte
Dim Sensor As Byte
Dim T As Integer
Dim Test As Byte
For Sensor = 1 To 1wirecount()
If Sensor = 1 Then Ar(1) = 1wsearchfirst() Else Ar(1) = 1wsearchnext()
Locate 1 , 1 : Lcd "Sensor" ; Sensor ; " ";
For I = 1 To 8
Lcd Hex(ar(i))
Next
Locate 2 , 1
Test = Ar(1)
Lcd Get_temp(test)
Wait 3
Next Sensor
Function Get_temp(ts As Byte)
1wreset
1wwrite &HCC 'skip rom (an alle)
1wwrite &H44 ' messen
Waitus 200 'zeit zum messen geben
1wverify Ts ' Den gewünschten Sensor auswählen
1wwrite &HBE ' Kommando READ SCRATCHPAD
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Makeint(sc(1) , Sc(2)) ' Die Nachkommastelle entfernen
T = T / 2 ' Temperatur in ganzen Grad Schritten ausgeben
End If
Get_temp = T
End Function
End
Die Fehlermeldung, die da erscheint, zeigt auf Zeile 39: Lcd Get_temp(test)
Fehler ist "Different parameter type passed then declared".
Ich weiss ja, was Bascom von mir will. Ich versteh' nur nicht, wo ich da angeblich einen falschen Typ übergeben soll oder ich habe doch ein Grundsatzproblem ;)
Kann mir jemand von Euch bitte einen Denkanstoß geben? Gute Nacht erstmal ;)
Ich habe nun die halbe Nacht an einer Kleinigkeit gesessen. Ich wollte eine Funktion fürs Auslesen mehrerer Temperatursensoren schreiben und bin an einer ganz simplen Stelle gescheitert - einer function.
'------------------------------------------------------------------------------
' I2C: Sda = Portc.4 Scl = Portc.5
' UART: RxD = Portd.0 TxD = Portd.1
'------------------------------------------------------------------------------
$regfile = "m32def.dat"
$crystal = 8000000
Declare Function Get_temp(ts As Byte) As Integer
Dim ___lcdno As Byte 'Umschaltbyte für Anzeige :
Config Lcd = 20 * 4 'Anzeigemodus 40 x 4 Zeichen
Config Lcdpin = Pin , E = Portb.6 , Rs = Portb.7 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E2 = Portb.5
___lcdno = 0 'auf Chip 1 schalten
Initlcd 'die beiden oberen Zeilen initialisieren
Cls 'die beiden oberen Zeilen löschen
___lcdno = 1
Initlcd
Cls
Config 1wire = Portc.6
Cls
Dim Ar(8) As Byte
Dim I As Byte
Dim Sc(9) As Byte
Dim Sensor As Byte
Dim T As Integer
Dim Test As Byte
For Sensor = 1 To 1wirecount()
If Sensor = 1 Then Ar(1) = 1wsearchfirst() Else Ar(1) = 1wsearchnext()
Locate 1 , 1 : Lcd "Sensor" ; Sensor ; " ";
For I = 1 To 8
Lcd Hex(ar(i))
Next
Locate 2 , 1
Test = Ar(1)
Lcd Get_temp(test)
Wait 3
Next Sensor
Function Get_temp(ts As Byte)
1wreset
1wwrite &HCC 'skip rom (an alle)
1wwrite &H44 ' messen
Waitus 200 'zeit zum messen geben
1wverify Ts ' Den gewünschten Sensor auswählen
1wwrite &HBE ' Kommando READ SCRATCHPAD
Sc(1) = 1wread(9)
If Sc(9) = Crc8(sc(1) , 8) Then
T = Makeint(sc(1) , Sc(2)) ' Die Nachkommastelle entfernen
T = T / 2 ' Temperatur in ganzen Grad Schritten ausgeben
End If
Get_temp = T
End Function
End
Die Fehlermeldung, die da erscheint, zeigt auf Zeile 39: Lcd Get_temp(test)
Fehler ist "Different parameter type passed then declared".
Ich weiss ja, was Bascom von mir will. Ich versteh' nur nicht, wo ich da angeblich einen falschen Typ übergeben soll oder ich habe doch ein Grundsatzproblem ;)
Kann mir jemand von Euch bitte einen Denkanstoß geben? Gute Nacht erstmal ;)