xy

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

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

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

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

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

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

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

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

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

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

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

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. |