Fusebits beim Mega128

Gast #533597
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
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???
Gast
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
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
@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
>"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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.