Forum

Einloggen | Registrieren | RSS  

xy(R)

E-Mail

05.07.2025,
11:40
 

DS18B20 mit BASCOM AVR (Elektronik)

Ich verzweifle gerade an einer eigentlich ganz einfachen Aufgabenstellung: Auslesen eines DS18B20 (sicher original) mit BASCOM AVR auf einem ATmega328P. Obwohl die Kommunikation sinnvoll aussieht, bekomme ich als Ausgabe nur Nullen.




https://www.elektronik-kompendium.de/forum/upload/20250705114011.txt

bigdie(R)

05.07.2025,
12:22

@ xy

DS18B20 mit BASCOM AVR

» Ich verzweifle gerade an einer eigentlich ganz einfachen Aufgabenstellung:
» Auslesen eines DS18B20 (sicher original) mit BASCOM AVR auf einem
» ATmega328P. Obwohl die Kommunikation sinnvoll aussieht, bekomme ich als
» Ausgabe nur Nullen.
»
»
»
»
» https://www.elektronik-kompendium.de/forum/upload/20250705114011.txt

von Bascom habe ich keinen Plan, aber Picaxe ist ja auch Basic. Da geht das relativ einfach
Gibt aber auch da Fallstricke
https://www.strippenstrolch.de/5-1-14-ds18s20-auch-ds18b20-erkunden.html

xy(R)

E-Mail

05.07.2025,
12:34

@ bigdie

DS18B20 mit BASCOM AVR

» von Bascom habe ich keinen Plan, aber Picaxe ist ja auch Basic. Da geht das
» relativ einfach
» Gibt aber auch da Fallstricke
» https://www.strippenstrolch.de/5-1-14-ds18s20-auch-ds18b20-erkunden.html

Sieht nicht einfach aus, Picaxe kennt wohl direkt kein 1-Wire.

Es muss sich bestimmt um eine Eigenheit von BASCOM handeln, oder um Riesentomaten vor den Augen.

Altgeselle(R)

E-Mail

05.07.2025,
13:54

@ xy

DS18B20 mit BASCOM AVR

» Ich verzweifle gerade an einer eigentlich ganz einfachen Aufgabenstellung:
» Auslesen eines DS18B20 (sicher original) mit BASCOM AVR auf einem
» ATmega328P. Obwohl die Kommunikation sinnvoll aussieht, bekomme ich als
» Ausgabe nur Nullen.
»
»
»
»
» https://www.elektronik-kompendium.de/forum/upload/20250705114011.txt

Ich weiß nicht viel über BASCOM, aber:
scp(1) = 1wread(9) ???

xy(R)

E-Mail

05.07.2025,
14:02

@ Altgeselle

DS18B20 mit BASCOM AVR

» Ich weiß nicht viel über BASCOM, aber:
» scp(1) = 1wread(9) ???

Ja, das ist gewöhnungsbedürftig, aber stimmt so. Das erste gelesene Byte kommt nach scp(1), die folgenden nach scp(2), scp(3),...

grindstone(R)

E-Mail

Ruhrpott,
05.07.2025,
14:16

@ xy

DS18B20 mit BASCOM AVR

» Ich verzweifle gerade an einer eigentlich ganz einfachen Aufgabenstellung:
» Auslesen eines DS18B20 (sicher original) mit BASCOM AVR auf einem
» ATmega328P. Obwohl die Kommunikation sinnvoll aussieht, bekomme ich als
» Ausgabe nur Nullen.
»
»
»
»
» https://www.elektronik-kompendium.de/forum/upload/20250705114011.txt

Ich kenne mich mit der Indizierung bei BASCOM nicht aus, ob sie standardmäßig bei 0 oder 1 beginnt, aber kann es sein, dass du die falsche Anzahl von Bytes ausliest? 64 Bit Device-Kennung (8 Bytes) und 12 Bit Auflösung (2 Bytes) macht zusammen 10 Bytes und nicht 9.

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

Altgeselle(R)

E-Mail

05.07.2025,
14:22

@ xy

DS18B20 mit BASCOM AVR

» » Ich weiß nicht viel über BASCOM, aber:
» » scp(1) = 1wread(9) ???
»
» Ja, das ist gewöhnungsbedürftig, aber stimmt so. Das erste gelesene Byte
» kommt nach scp(1), die folgenden nach scp(2), scp(3),...

Aha, ok.
Man könnte anstelle von 1wread einen konstanten Wert in scp(1) einlesen
um den print Befehl zu überprüfen.
Das grenzt den Fehler ein.

Pitsch

05.07.2025,
14:41

@ grindstone

DS18B20 mit BASCOM AVR

» Ich kenne mich mit der Indizierung bei BASCOM nicht aus, ob sie
» standardmäßig bei 0 oder 1 beginnt, aber kann es sein, dass du die
» falsche Anzahl von Bytes ausliest? 64 Bit Device-Kennung (8 Bytes) und 12
» Bit Auflösung (2 Bytes) macht zusammen 10 Bytes und nicht 9.

Hallo grindstone

dim scp(9) as Byte. Das ist ein Array mit 10 Feldern. Das Feld 0 muss auch mitgezählt werden. 0 - 9 ergibt 10 Felder also 10 Bytes.

Mit freundlichen Grüssen! Pitsch

bigdie(R)

05.07.2025,
15:30

@ xy

DS18B20 mit BASCOM AVR

» » von Bascom habe ich keinen Plan, aber Picaxe ist ja auch Basic. Da geht
» das
» » relativ einfach
» » Gibt aber auch da Fallstricke
» »
» https://www.strippenstrolch.de/5-1-14-ds18s20-auch-ds18b20-erkunden.html
»
» Sieht nicht einfach aus, Picaxe kennt wohl direkt kein 1-Wire.

Naja das Auslesen eines Sensors geht relativ einfach readtemp und der Anschlusspin und ich habe den Wert. Aber theoretisch kann man ja 8 der Teile parallel am 1-Wire betreiben. dafür habe ich beim Picaxe nichts gefunden. Ist aber für mich nur eine theoretische Einschränkung. Hab bisher nur einmal einen Sensor gebraucht und sollte ich mal 2 brauchen, kommen die halt an unterschiedliche Pins

grindstone(R)

E-Mail

Ruhrpott,
05.07.2025,
16:13
(editiert von grindstone
am 05.07.2025 um 16:26)


@ Pitsch

DS18B20 mit BASCOM AVR

» dim scp(9) as Byte. Das ist ein Array mit 10 Feldern. Das Feld 0 muss auch
» mitgezählt werden. 0 - 9 ergibt 10 Felder also 10 Bytes.

Ich weiß nicht. Nach diesem Beispiel:

>>>
' Minimalprogramm für Temperaturmessung
Config 1wire = Portc.7

Dim Sep(9) As Byte

1wreset ' Initialisierung
1wwrite &HCC ' überspringe ROM-Befehl
1wwrite &H44 ' Temperaturmessung anstoßen

Waitms 500 ' warten bis Messung fertig

1wreset ' Initialisierung
1wwrite &HCC ' überspringe ROM-Befehl
1wwrite &HBE ' Temperatur auslesen
Sep(1) = 1wread(9) ' Daten in ein Array lesen, beschreibt Sep(1) bis Sep(9)

Wait 1
>>>

( Zu finden auf https://rn-wissen.de/wiki/index.php/Bascom_und_1-Wire )
beginnt der Index bei 1. Das bedeutet, xy liest ein Byte zu wenig aus.

Ausschnitt aus dem Datenblatt:
The core functionality of the DS18B20 is its direct-to-digital temperature sensor. The resolution of the
DS18B20 is configurable (9, 10, 11, or 12 bits), with 12-bit readings the factory default state. This
equates to a temperature resolution of 0.5°C, 0.25°C, 0.125°C, or 0.0625°C. Following the issuance of
the Convert T [44h] command, a temperature conversion is performed and the thermal data is stored in
the scratchpad memory in a 16-bit, sign-extended two’s complement format. The temperature
information can be retrieved over the 1-Wire interface by issuing a Read Scratchpad [BEh] command
once the conversion has been performed. The data is transferred over the 1-Wire bus, LSB first. The
MSB of the temperature register contains the “sign” (S) bit, denoting whether the temperature is positive
or negative.

--
Es ist unter der Würde eines Technikers, die Gebrauchsanweisung zu lesen!

xy(R)

E-Mail

05.07.2025,
16:26

@ Altgeselle

DS18B20 mit BASCOM AVR

» Man könnte anstelle von 1wread einen konstanten Wert in scp(1) einlesen
» um den print Befehl zu überprüfen.
» Das grenzt den Fehler ein.

Hab ich getan, das funktioniert wie zu erwarten.

xy(R)

E-Mail

05.07.2025,
16:29

@ grindstone

DS18B20 mit BASCOM AVR

» Ich kenne mich mit der Indizierung bei BASCOM nicht aus, ob sie
» standardmäßig bei 0 oder 1 beginnt,

Mit 1.

» aber kann es sein, dass du die
» falsche Anzahl von Bytes ausliest? 64 Bit Device-Kennung (8 Bytes) und 12
» Bit Auflösung (2 Bytes) macht zusammen 10 Bytes und nicht 9.

Nö, die 9 Bytes stimmen schon. Das ROM wird übersprungen, siehe Code. Und der Rest sind dann 8 Bytes und eine CRC von einem Byte.

xy(R)

E-Mail

05.07.2025,
16:30

@ Pitsch

DS18B20 mit BASCOM AVR

» dim scp(9) as Byte. Das ist ein Array mit 10 Feldern. Das Feld 0 muss auch
» mitgezählt werden. 0 - 9 ergibt 10 Felder also 10 Bytes.

Nein, ein Feld 0 gibt es bei BASCOM nicht.

Altgeselle(R)

E-Mail

05.07.2025,
17:11

@ xy

DS18B20 mit BASCOM AVR

» » Man könnte anstelle von 1wread einen konstanten Wert in scp(1)
» einlesen
» » um den print Befehl zu überprüfen.
» » Das grenzt den Fehler ein.
»
» Hab ich getan, das funktioniert wie zu erwarten.

Dann fällt mir nur noch eines ein:
Port-Pin nicht als Input definiert oder Hardware defekt.
(Bei einem PIC µC habe ich mal länger nach so einem Fehler gesucht)

bigdie(R)

05.07.2025,
18:02

@ Altgeselle

DS18B20 mit BASCOM AVR

» » » Man könnte anstelle von 1wread einen konstanten Wert in scp(1)
» » einlesen
» » » um den print Befehl zu überprüfen.
» » » Das grenzt den Fehler ein.
» »
» » Hab ich getan, das funktioniert wie zu erwarten.
»
» Dann fällt mir nur noch eines ein:
» Port-Pin nicht als Input definiert oder Hardware defekt.
Wenn ich das richtig verstehe, muss der Port sowohl Eingang als auch Ausgang sein. Zumindset kann man beim Picaxe nur Ports benutzen, die beides können. Gibt ja den ein oder anderen Pin, der kann nur Eingang, da funktioniert das nicht

xy(R)

E-Mail

05.07.2025,
18:03
(editiert von xy
am 05.07.2025 um 18:06)


@ Altgeselle

DS18B20 mit BASCOM AVR

» Dann fällt mir nur noch eines ein:
» Port-Pin nicht als Input definiert oder Hardware defekt.

Dann würde es auf dem Logikanalysator aber ganz anders aussehen.

Die Definition und die Umschaltung machen die 1-Wire Routinen.