Forum: Mikrocontroller und Digitale Elektronik Fusebits beim Mega128


von Klaus Möhrer (Gast)


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

von Klaus Möhrer (Gast)


Lesenswert?

Vielleicht sollte ich auch noch Fragen, was es noch für Möglichkeiten 
gibt, dass 150°C zuviel angezeigt werden???
Kann man den Quarz irgendwie kontrollieren???

von Pointer (Gast)


Lesenswert?

Der Programmcode währe mal nicht schlecht für's erste.

von Klaus Möhrer (Gast)


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 , "#.#")


von Pointer (Gast)


Lesenswert?

Prog. Du in Bascom?
Wenn ja, da kenn ich mich leider nicht aus.

von Klaus Möhrer (Gast)


Lesenswert?

Ja, in Bascom. Aber wie gesagt, beim Mega 8 funktioniert es ja auch. Ich 
vermute ein anderes Problem. Nur welches!

von Gast (Gast)


Lesenswert?

Hast du evtl. das gleiche Problem wie hier:
http://www.roboternetz.de/phpBB2/viewtopic.php?t=29401
Ist auch ein DS18B20 mit 150° zuviel.

von Joerg X. (Gast)


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.

von Gast (Gast)


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.

von Joerg X. (Gast)


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 ;-) )

von Paul Baumann (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.