Gast
#1354203
Moin, ich habe ein Assembler-Programm geschrieben, welches mir die an einem Port eines ATMEGA32 angeschlossenen DS18S20 ausliest. Alle DS18S20 sind parallel angeschlossen. Alle (+)-Pins liegen an +5V, alle (-)-Pins an Minus und alle Daten-Pins sind an einem Pin des ATMEGA32 angeschlossen. Ich benutze für die Schreib/Lesevorgänge den internen Pull-Up-Widerstand des ATMEGA. Mein Programm liest die 8 Bytes des ROM-Codes ein. Anschließend erfolgt die Prüfung mittels einer von Peter Dannegger hier im Forum veröffentlichte CRC-Routine. Wenn diese negativ ausfällt, beginnt das Einlesen des ROM-Codes erneut. Solange DS18S20 zu finden sind, wird die ROM-Search-Routine wiederholt. Die Anzahl der anzuschließenden DS18S20 ist eigentlich nur durch den RAM-Bereich des Controllers beschränkt. Wenn keine weiteren DS18S20 mehr vorhanden sind, dann wird die ROM-Suche beendet und es wird die Temperatur (0,5K-Auflösung) der vorhandenen DS18S20 ausgegeben. Ich habe insgesamt 18 DS18S20 aus verschiedenen Chargen zur Verfügung. Egal wie ich kombiniere, es funktioniert! Aber: Sobald mehr als sechs Temperatursensoren angeschlossen werden, funktioniert das Einlesen nicht mehr. Schon beim ersten DS18S20 stimmt beim Einlesen die CRC nicht mehr. Entferne ich irgendeinen der sechs funktiniert wieder alles. Es ist definitiv kein DS18S20 defekt. Kann es sein, dass der Port-Pin mit so vielen DS18S20 nicht klar kommt? Gruß Holger