Hallo,
ich möchte einen DS18B20 an einen AtMega48 anschließen und den Wert auf ein 7 Segment (4Digit) Display ausgeben.
Leider habe ich einige Verständnisprobleme.
Um den Sourcecode an meine Bedürfnisse anzupassen müsste ich verstehen was geschieht - das kann ich leider nicht.
Alles anzeigen
Quelle Sourcecode: rn-wissen.de/wiki/index.php/Bascom_und_1-Wire
Hier macht mir der "Wait 1" Befehl Probleme da ich für das 7 Segment Display einen flotten Programmdurchlauf bräuchte. Natürlich könnte ich die Ausgabe an das 7 Segment Display auch per Timer erledigen lassen nur dann müsste ich den Chip mit mind. 4 Mhz betreiben und da das ding an Batterien hängt würde ich das gerne vermeiden.
Alles anzeigen
Quelle: rn-wissen.de/wiki/index.php/Bascom_und_1-Wire
Auch hier sind die Waitms und Wait Befehle mein Problem. Wie könnte man sowas umgehen?
Noch eine Frage: was bedeutet "&H" ? Ist das eine Zahlenwert/Adresse in Hexadezimaler Schreibtweise?
Grüße & Danke!
Alex
ich möchte einen DS18B20 an einen AtMega48 anschließen und den Wert auf ein 7 Segment (4Digit) Display ausgeben.
Leider habe ich einige Verständnisprobleme.
Um den Sourcecode an meine Bedürfnisse anzupassen müsste ich verstehen was geschieht - das kann ich leider nicht.
Quellcode
- $regfile = "M32def.dat"
- $crystal = 16000000
- $baud = 38400
- Config 1wire = Portc.7
- Dim Ar(8) As Byte ' Array für SerienNr.
- Dim I As Byte
- Dim W As Word
- Sound Portd.7 , 400 , 450 ' BEEP bei RN-Control
- Print "1-Wire"
- Wait 1
- Ar(1) = 1wsearchfirst() ' 8 Bytes lesen, beschreibt Ar(1) bis Ar(8)
- ' gibts überhaupt ein Gerät
- If Err = 0 Then
- Do
- ' Ausgabe der SerienNr.
- For I = 1 To 8
- Print Hex(ar(i));
- Print " ";
- Next
- ' Nach weiterem Gerät suchen
- Ar(1) = 1wsearchnext() ' Seriennummer vom ächste Sensor, beschreibt Ar(1) bis Ar(8)
- Loop Until Err = 1 ' solange bis sich kein weiteres Gerät mehr meldet.
- End If
- Print "Fertig"
- W = 1wirecount() ' Anzahl der gefundenen Geräte zählen
- Print "Anzahl ";
- Print W
- Do
- Loop
- End
Quelle Sourcecode: rn-wissen.de/wiki/index.php/Bascom_und_1-Wire
Hier macht mir der "Wait 1" Befehl Probleme da ich für das 7 Segment Display einen flotten Programmdurchlauf bräuchte. Natürlich könnte ich die Ausgabe an das 7 Segment Display auch per Timer erledigen lassen nur dann müsste ich den Chip mit mind. 4 Mhz betreiben und da das ding an Batterien hängt würde ich das gerne vermeiden.
Quellcode
- Do
- 1wverify Ar(1) ' Gerät mit der SerienNr. aus Ar() auswählen
- ' Gerät vorhanden
- If Err = 0 Then
- 1wwrite &H44 ' Temperaturmessung anstoßen
- Waitms 500 ' warten bis Messung fertig
- 1wverify Ar(1) ' Gerät mit der SerienNr. aus Ar(1)...Ar(8) auswählen
- 1wwrite &HBE ' Temperatur auslesen
- Sep(1) = 1wread(9) ' Daten in ein Array lesen, beschreibt Sep(1) bis Sep(9)
- For I = 1 To 9
- Print Hex(sep(i));
- Next
- ' Nur für die Temperatur wichtige Daten ausgeben
- Print Hex(sep(2));
- Print Hex(sep(1))
- ' High und Low-Byte, nach Datenblatt zusammen setzen und berechnen...
- Else
- Print "Fehler"
- End If
- Wait 1
- Loop
Auch hier sind die Waitms und Wait Befehle mein Problem. Wie könnte man sowas umgehen?
Noch eine Frage: was bedeutet "&H" ? Ist das eine Zahlenwert/Adresse in Hexadezimaler Schreibtweise?
Grüße & Danke!
Alex