Fusebits beim Mega128

Gast #533597
Lesenswert?

Hallo,

ich krieg hier ne Krise. Ich versuche einen Temperatursensor (DS18b20) 
auszulesen. Ich krieg aber nur Müll angezeigt. (150°C zuviel) Ich habe 
die Routine einfach aus meinem Programm vom Mega8 kopiert. Da hats 
funktioniert. Nun bin ich auf die Idee gekommen, dass die Fusebits 
eventuell nicht stimmen und somit auch das Timing nicht. Im Datenblatt 
werde ich leider nicht schlau. Eingestellt ist im Moment 1111. Ich habe 
zwei Quarze dran. Einmal einen Uhrenquarz und dann einen 14,7456Mhz 
Quarz.
Ist die Einstellung dann richtig???

Gruß Klaus
Gast #533650
Lesenswert?

Ja, na klar der Code:

Config 1wire = Porta.0
Dim Sc(9) As Byte
Dim T As Integer
Dim T1 As Integer
Dim T6 As Single
Dim T4 As String * 10
Dim Temp As Byte

Do
   Wait 1
   1wreset
   1wwrite &HCC
   1wwrite &H44
   Waitms 300
   1wreset                                              'reset
   1wwrite &HCC                                         'read ROM 
command
   1wwrite &HBE                                         'read ROM 
command
   Sc(1) = 1wread(9)
   If Sc(9) = Crc8(sc(1) , 8) Then

        Temp = Sc(1) And 1
      If Temp = 1 Then Decr Sc(1)
      T = Makeint(sc(1) , Sc(2))
      T = T * 50
      T = T - 25
      T1 = Sc(8) - Sc(7)
      T1 = T1 * 100
      T1 = T1 / Sc(8)
      T = T + T1
      T = T / 10
      T6 = T / 10
      T4 = Fusing(t6 , "#.#")

Gast #535060
Lesenswert?

Vergrößer mal die Wartezeit "waitms...", der Sensor brauch >750ms für 
eine Messung bei voller Auflösung - und du hast ja scheinbar (Ich 
weigere mich, mich mit Basic zu befassen und werde deshalb nicht 
nachschauen, was die 1wire Funktionen machen, wäre also ein Tipp für 
dich ;) ) den Sensor nicht anders Konfiguriert.
Gast #535330
Lesenswert?

@Joerg: Vorsicht, von Basic bekommt man Ausschlag.

@Klaus: Du benutzt hier offensichtlich Code, der für den DS1820 bzw. 
DS18S20 gedacht ist. Der kann nur 9bit und muss für die 1/16° Auflösung 
so rechnen.
Dein DS18B20 gibt dir das Ergebnis direkt in 12-bit aus, du musst nur 
noch durch 16 dividieren, dann bist du da.
Gast #535462
Lesenswert?

>"Vorsicht, von Basic bekommt man Ausschlag."
@"Gast" von BASIC wahrscheinlich nicht aber offensichtlich vom 
BASCOM-Manual, wenn es anders wäre würde ja irgendjemand, der in Bascom 
programmiert(bzw. damit anfängt) da mal reinschauen ..

(WARNUNG: dieser Post enthält eine riesen Portion Sarkasmus, Personen 
die damit nicht umgehen können, sollten besser garnicht antworten ;-) )
Gast #535579
Lesenswert?

Das Manual ist bei manchen Befehlen nicht gerade aussagekräftig. Man 
kann dann nur versuchen, aus Code von anderen Nutzern Schlüsse zu 
ziehen.

Richtig gut hingegen ist das Microcontroller Lehrbuch von Roland Walter.
Das ist eine lohnende Investition.

(Dieser Beitrag enthält keinen Sarkasmus) ;-)

MfG Paul

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren