Forum: Mikrocontroller und Digitale Elektronik DS1820 Code + Atmel90S8515


von Peter K. (chrisstar)


Angehängte Dateien:

Lesenswert?

Hallo,

habe hier einen DS1820 Code im Forum gefunden. Ich wollte es mit dem 
gleichen µC probieren, aber funktioniert nicht. Bei anderen Usern geht 
er aber schon. Kann mir einer bitte helfen!?

mfg

von Karl H. (kbuchegg)


Lesenswert?

Es tut mir leid.
Aber wir sind hier an einem Punkt angelangt, an dem dir aus der Ferne 
niemand mehr helfen kann.
Um jetzt noch das Projekt zu retten, müsste wahrscheinlich einer mit 
Messgeräten bewaffnet zu dir hin und mal direkt an die Platine ran.

von Gast (Gast)


Lesenswert?

Nein es hilft überhaupt nicht wenn du beschreibst was nicht 
funktioniert. Das würde andere nur verwirren und es wäre kein Ratespiel 
mehr.

von Karl H. (kbuchegg)


Lesenswert?

Gast schrieb:
> Nein es hilft überhaupt nicht wenn du beschreibst was nicht
> funktioniert. Das würde andere nur verwirren und es wäre kein Ratespiel
> mehr.

Zu seiner Ehrenrettung:
Es gibt von ihm schon 2 oder 3 Threads mit genau demselben Problem.

Aber es ist die übliche Geschichte:
* Hardware ist fehlerfrei
* Software ist fehlerfrei
* Trotzdem funktionierts nicht.

von Peter K. (Gast)


Lesenswert?

Ja schon klar, aber vl hat ja jemand einen solchen DS1820 und könnte es 
bei sich testen, ob es geht, dann könnte ich mal Fehler ausschließen!

von Peter K. (Gast)


Angehängte Dateien:

Lesenswert?

Habe jetzt diese 2 Befehle ausgeklammert:
//devices=w1_search(0xf0,rom_code);
//printf("%-u Gefundene Sensoren\n\r",devices);

und durch diesen Befehl ersetzt:
devices=w1_read();

-----------------------------------------------------

XTAl = 8000000

----------------------------------------------------

Im Terminal gibt er mir -999.9C an

und am Oszilloskop kann ich dieses, was im Anhang ist messen.

Kann mir vl doch jemand helfen jetzt?


mfg

von Jürgen A. (jaja)


Lesenswert?

Wenn im Terminal -999.9C steht, scheint es ziemlich kalt zu sein.
Ist die Heizung vielleicht aus?

Jürgen

von Gast (Gast)


Lesenswert?

Und was gibt er aus wenn überhaupt kein Sensor angeschlossen ist?
Denk doch mal bischen nach und probier herum.

von Peter K. (Gast)


Lesenswert?

Dann gibt er nichts aus und am Oszi sehe ich die 5V konstant wieder

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Ja schon klar, aber vl hat ja jemand einen solchen DS1820 und könnte es
> bei sich testen, ob es geht, dann könnte ich mal Fehler ausschließen!

* Ich hab einen DS1820
* Ich benutze einen Mega16 mit 11.irgendwas Mhz
* Ich hab mir aus der Codesammlung die Routinen vom PeDA geholt.
* Hab dort die Pinbelegung angepasst
* Hab die Ausgabe angepasst
* Hab die am µC vorliegende Taktfrequenz (die 11.irgendwas MHz) in das 
entsprechende #define eingetragen
* Habs gebrannt

-> Hat nicht funktioniert.

* Dann hab ich einen 10k Widerstand von + zur Datenleitung gesteckt

-> Dann hats sofort funktioniert.

Das ganze war eine Sache auf 10 Minuten, inklusive die Verbindungen am 
Steckbrett herstellen und andere LCD Routinen einbinden.

Ich hab kein CodeVision, und ich kenn auch den Inhalt der Funktionen 
w1_init, w1_search, ... nicht. Daher kann ich mir die auch nicht für den 
WinAvr anpassen.

> ob es geht, dann könnte ich mal Fehler ausschließen!

Da die entscheidenden Routinen, nämlich die w1_.... allesamt von 
CodeVision sind, und wir mal davon ausgehen, dass die ihren Code testen, 
ehe sie ihn ausliefern, werden die sicherlich funktionieren.

von Gast (Gast)


Lesenswert?

Na das hilft doch schon weiter.
Immer schön weiterprobieren dann wird der Fehler nicht lange versteckt 
bleiben.

von Peter K. (Gast)


Lesenswert?

Ich kenn mich mit WinAVR nicht aus, aber kannst du mir vl ein fertiges 
Projekt hier reinstellen, damit ich es nur mehr rüberspielen muss? Dann 
kann ich mal testen obs funktioniert

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Ich kenn mich mit WinAVR nicht aus, aber kannst du mir vl ein fertiges
> Projekt hier reinstellen, damit ich es nur mehr rüberspielen muss? Dann
> kann ich mal testen obs funktioniert

Von dort den Code holen
Beitrag "DS1820, DS18B20 in C"

Keine Ahnung ob das schon mal wer ausprobiert hat:
Da Code für den WinAvr normalerweise weitgehend Standard-C ist (bis auf 
die ersten #includes), gibt es eine gewisse Chance, dass CodeVision den 
Code aus dem Stand heraus kompiliert.

Ansonsten:
AVR Studio installieren (gibts bei Atmel)
WinAvr installieren
neues C-Projekt anlegen
Alle *.c aus dem Projekt hinzufügen

compilieren, linken
wenn Fehlermeldungen: diese beheben (kann nicht viel sein)
wenn keine Fehlermeldungen: brennen

von Karl H. (kbuchegg)


Lesenswert?

Und entscheide dich endlich mal, wie deine Hardware aussieht

Mal ist es ein 90S8515, mal ein Mega8515
Mal hat der 8 Mhz, mal hat er 3.wasweißich Mhz
Mal hängt der Sensor am PORTA, dann wieder am PORTB.
Und dort an allen möglichen Pins.


(Mein persönlicher Rate-Tip: Du hast den DS1820 schon längst 
geschrottet)

von Wolfgang-G (Gast)


Lesenswert?

@Karl heinz Buchegger
>Es gibt von ihm schon 2 oder 3 Threads mit genau demselben Problem.
Deine Geduld-alle Achtung!

von Karl H. (kbuchegg)


Lesenswert?

Karl heinz Buchegger schrieb:

> (Mein persönlicher Rate-Tip: Du hast den DS1820 schon längst
> geschrottet)

Ich muss mich korrigieren.

Hab nochmal dein Oszi Bild studiert.

Laut Spez beginnt alles mit dem Reset-Puls, der mindestens 480µs lang 
sein soll. Den Reset Puls sieht man deutlich, allerdings ist der bei dir 
etwas über 2000µs lang.
Wenn eine minimale Pulslänge von 480µs gefordert wird, dann wird man als 
Library Programmierer 500 oder meinetwegen 600µs nehmen. Aber >2000µs 
kommt mir dann schon sehr lang vor. Ich kann falsch liegen, aber meine 
Schlussfolgerung daraus ist immer noch: Deine Taktfreuenz, mit der das 
Programm rechnet stimmt nicht mit der tatsächlich vorhandenen 
Taktfrequenz überein.

Nach dem Reset Puls ist noch ein kleiner Puls zu sehen. Das könnte der 
Presence Puls des DS1820 sein. Allerdings zieht der den Bus nicht bis 
auf 0 runter. Bist du sicher, dass du einen 4k7 Widerstand da drann 
hast, und nicht etwa 470 Ohm oder 47 Ohm oder noch kleiner.


Edit: Oszi Bild falsch interpretiert:
Der Puls ist anscheinend 477µs lang.
Ist zwar etwas knapp, ich denke aber nicht das das ein Problem 
darstellt. Auf jeden Fall dürfte die Einstellung der Taktfrequenz 
stimmen.

Wie lang ist den der kleine Puls dahinter?
Laut Datenblatt sollte der Abstand zum grossen Puls zwischen 15µs und 
60µs liegen und er sollte 60 bis 240µs lang sein

von Peter K. (Gast)


Lesenswert?

Der sollte etwa 230µs sein, kann leider nur mehr ablesen, aber ist ja 
zirka die hälfte von dem was ich beim anderen (477µs) gemessen habe.

von Peter K. (Gast)


Lesenswert?

4,7k stimmen, da ich die extra gekauft habe und habe nochmals gemessen 
;)

von Route_66 (Gast)


Lesenswert?

Der 1820 schafft seinen Presence-Pulse nicht nach LOW zu ziehen. 
Sichtbar ist er ja auf dem Oszi-Bild. Wahrscheinlich keine 
Open-Drain-Ausgänge, oder es hängt noch was anderes an der Leitung. Die 
4,7K werden schon stimmen, sonst hätte der uC Probleme den Reset-Pulse 
zu generieren.

von Peter K. (Gast)


Lesenswert?

Was meinst du damit? der puls geht ja auf 0V ?

Wenn nicht, wie kann ich das beheben?

von Route_66 (Gast)


Lesenswert?

Guck richtig hin !!!!!

von Peter K. (Gast)


Lesenswert?

Wie kann ich das Problem lösen?

Route_66 schrieb:
Wahrscheinlich keineOpen-Drain-Ausgänge, oder es hängt noch was anderes 
an der Leitung.

von Route_66 (Gast)


Lesenswert?

Datenblattangaben über die Eigenschaften des verwendeten Portpins mit 
den Erfordernissen und deiner Verwendung und Initialisierung 
vergleichen. Dann richtig machen -> fertig!

von Peter K. (Gast)


Lesenswert?

Also kurz gesagt, ich soll einen anderen Pin nehmen, bei dem es 
funktioniert...

von Karl H. (kbuchegg)


Lesenswert?

Route_66 schrieb:
> Wahrscheinlich keine
> Open-Drain-Ausgänge, oder es hängt noch was anderes an der Leitung. Die
> 4,7K werden schon stimmen, sonst hätte der uC Probleme den Reset-Pulse
> zu generieren.

Auch wieder wahr.

Funktionieren die Ausgänge des 90S8515 anders als die eines Mega16?

von Route_66 (Gast)


Lesenswert?

Es könnte vielleicht auch an dem jetzt werwendeten funktionieren oder 
aber auch an einem anderen nicht. NACHLESEN !!!! ....und Denken.

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Also kurz gesagt, ich soll einen anderen Pin nehmen, bei dem es
> funktioniert...

Vor allen Dingen solltest du aufhören planlos rumzuprobieren.
Alles fängt immer mit dem Studium des Datenblattes an.
Schon traurig, wenn du ein Problem hast und noch nicht mal ein
Oszi Bild richtig interpretieren kannst.

von Karl H. (kbuchegg)


Lesenswert?

Wie happig ist eigentlich die Länge des Reset Pulses?

Im Datenblatt steht nur: länger als 480µs.
Gesetzt den Fall, folgender Aufbau (mit neuem Taster, damit er nicht 
prellt)

   5V +-------------------+--------------+
                          |              |
                         +-+             |
                         | | 4k7         |
                         | |             |
                         +-+             |
                          |         +--------+
                          |         |    +   |
                          +---------| D      |
                          |         |    -   |
                          |   DS1820+--------+
                         +-+             |
                         | | 330         |
                         | |             |
                         +-+             |
                          |              |
                        \    Taster      |
                         \               |
                          |              |
     GND +----------------+--------------+


Vorgehen:
  Oszi an Ein/Ausgang D des DS1820
  5V auf die Schaltung
  Taster drücken und sofort wieder loslassen

Am Oszi sollte man dann doch den Presence Puls des DS1820 sehen können? 
Schon klar, dass kein Mensch einen Taster so um die 500µs drücken kann. 
Aber ich hoffe mal, dass es dem DS1820 nichts ausmacht, wenn der Reset 
Puls mal so um die 1/4 Sekunde lang ist.

Ziel der ganzen Sache:
Rausfinden ob der DS1820 daran Schuld ist, dass der Presence Puls nicht 
bis auf 0 runter geht oder ob im µC was nicht stimmt.

von Peter K. (chrisstar)


Lesenswert?

Ich habe nun im Datenblatt nachgeschaut, und tja habe auch verschiedene 
Pins probiert, aber alles das selbe... Kann mir einer sagen, wie ich das 
mit dem Ausgang schaffe, damit er auf GND gezogen wird.

von holger (Gast)


Lesenswert?

>Kann mir einer sagen, wie ich das
>mit dem Ausgang schaffe, damit er auf GND gezogen wird.

Auf dem Oszibild zieht der DS gerade mal 0,5V runter. Da liegt
die Vermutung nahe das da kein 4,7k dran ist,
sondern etwas viel kleineres. Der AVR bekommt
das evtl. auf GND gezogen weil er mehr als 25mA
"sinken" kann. Der DS gerade mal 4mA.

Auf dem Bild ist auch ein kleiner Peak zu 5V zu
sehen wo der AVR Ausgang auf Eingang umschaltet.
Danach kommt der DS und kriegt die Leitung nicht
auf GND.

Irgendwie wird es immer wahrscheinlicher das
der DS1820 defekt ist. Oder irgendwie falsch
angeschlossen. Gibt es Fotos vom Aufbau?

von Peter K. (Gast)


Lesenswert?

Hallo,
der Widerstand muss ein 4,7k sein habe ihn mehrmals gemessen und gekauft 
wurde er auch so!

Ein Foto kann ich leider nicht schicken, da ich den Sensor nicht bei mir 
habe, aber die Schaltung habe ich im Kopf, die ja hier schnell erläutern 
kann.

GND----------------------------------------
                                          |
                                  -(3)-----
DQ---------------------------DQ(3) 18202) |
                 |                +(1)-----
                 |
               4,7k
                 |
5v----------------



(Parasite Mode)

von Peter K. (Gast)


Lesenswert?

neben DQ(3)  sollte stehen: DS1820, hab mich versehntlich verdruckt!

von holger (Gast)


Lesenswert?

Schließ Pin 1 vom DS mal an 5V an. Geht es dann?

von Karl H. (kbuchegg)


Lesenswert?

Die Fehler in deinem Plan seh ich dir nach.
So hast du das ganze ganz sicher nicht verschaltet. Da würde dann gar 
nichts mehr gehen.

Photo ist trotzdem wichtig. Es geht nicht darum was du denkst, das du 
aufgebaut hast, sondern was du tatsächlich aufgebaut hast.

von Peter K. (Gast)


Lesenswert?

Aber die Schaltung sieht 100% so aus, außerdem kann man ja bei Parasite 
mode nicht viel falsch machen, wenn man vom DS1820, die 2 äußeren Pins 
auf Masse legt und zwischen 5V und DQ einen 4,7k wiederstand hängt.

von Wayne M. (vibra)


Lesenswert?

Bei dem STK 200 sind einige Pins über Strombegrenzungs Widerstände 
geführt , also nicht für Ausgabe geeignet .
Laut Bedienungsanleitung sind das ..
Pin7,Pin6,Pin5 des Port B (Mosi,Miso,SCK) !
Es gibt auch 2 Steckplätze für 40 Polige Device einmal Digital und 
einmal Analog - das betrifft dann den Port A.
Die LED und die Taster sind an Port B und Port D angeschlossen können 
aber über entsprechende Jumper deaktiviert werden.
Also erstmal Jumper für LED oder Taster ziehen wo dein DS drann ist !
Darauf achten das er nicht an einem Pin hängt der über R's geführt wird 
, beim Port B.
Vielleicht hilft es ja :-)

von Peter K. (Gast)


Lesenswert?

Ja bei B, und D sind es 2 weiße kurze dicke Kabel, die 2cm weiter 
zusammengesteckt sind, diese habe ich schon entfernt.

von Wayne M. (vibra)


Angehängte Dateien:

Lesenswert?

Hab noch nen Schaltplan vom STK200 gefunden

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Aber die Schaltung sieht 100% so aus,

DQ ist ganz sicher nicht Pin 3 :-)

> außerdem kann man ja bei Parasite
> mode nicht viel falsch machen, wenn man vom DS1820, die 2 äußeren Pins
> auf Masse legt und zwischen 5V und DQ einen 4,7k wiederstand hängt.

Ach ja.
Hast du den Abschnitt im Datenblatt gelesen?
Der Hersteller empfiehlt selbst, dass bei einer Temperaturkonversion mit 
einem MOSFET zusätzlicher Strom auf die DQ Leitung gebracht wird.
Für mich war das Grund genug, es erst mal konventionell ohne 
irgendwelchen Schnickschnack zu probieren: Eine Schaltung braucht Masse, 
eine Stromversorgung und dann flutschen irgendwo noch Daten rein/raus.
Ehe ich irgendwelche Spezialmodi benutze sehe ich immer erst mal zu, 
dass der einfachst mögliche Fall geht. Und der ist nun mal: der DS1820 
kriegt seine eigene Versorgung spendiert.

von Peter K. (Gast)


Lesenswert?

Bei DQ meine ich (2)

Ja die Stromversorung bekommt ja der DS1820 über die DQ-Leitung wenn man 
ihn parasite mode geschalten hat.

von Peter K. (Gast)


Lesenswert?

Aber ich kann ja mal die "normale" Variante versuchen.

von Karl H. (kbuchegg)


Lesenswert?

Vorschlag:
nimm morgen mal den µC aus dem Sockel. Klemm den DS ab und miss mit dem 
Ohmmeter die DQ Leitung gegen Vcc. Du müsstest die 4k7 sehen. Wenn da 
vom STK noch ein Widerstand dabei ist, müsste sich der bemerkbar machen.
Auch mal von der DQ Leitung zum Sockel messen ob vielleicht ein 
Serienwiderstand drinnen ist.

von Peter K. (Gast)


Lesenswert?

Ok, probiere ich morgen mal aus!

Danke nochmals!

von Peter K. (chrisstar)


Lesenswert?

Habe gerade alles mit dem Ohmmeter durchgemessen, zwischen DQ und V++ 
4,7k und wenn die DQ leitung auf einem Port ist auch 4,7k.

von Karl H. (kbuchegg)


Lesenswert?

> und wenn die DQ leitung auf einem Port ist auch 4,7k.

Das sollten 0 Ohm sein (Zwischen dem Ende der DQ Leitung und dem 
Sockelpin, auf dem die DQ Leitung am Prozessor rauskommt)

von Peter K. (chrisstar)


Angehängte Dateien:

Lesenswert?

Ja genau, ist bei mir auch so!

-> So habe ich die Bauteile beschalten (siehe Anhang)

von Peter K. (chrisstar)


Angehängte Dateien:

Lesenswert?

Hier hab ich noch die Terminaleinstellungen, die verwendet werden.

von Peter K. (chrisstar)


Lesenswert?

Wayne hat das geschrieben:
Es gibt auch 2 Steckplätze für 40 Polige Device einmal Digital und
einmal Analog - das betrifft dann den Port A.
--------------------------------------------------

Gesteckt ist der µC auf Digital

von Karl H. (kbuchegg)


Lesenswert?

Peter K. schrieb:
> Ja genau, ist bei mir auch so!

Versuch noch mal, den DS nicht parasitär zu versorgen.
Also seinen Vcc auf +5V

Wenns dann immer noch nicht geht:
Dann ist wohl der DS hinüber

von Peter K. (chrisstar)


Lesenswert?

Habe ich gerade gemacht, geht immer noch nicht

von Peter K. (Gast)


Lesenswert?

Habe mir jetzt einen neuen DS1820 gekauft, den müsste ich morgen 
bekommen. Ich hoffe, dass es dann funktioniert, weil sonst muss der 
Fehler wo anders liegen, der dann leider immer noch nicht entdeckt 
wurde...

von Peter K. (chrisstar)


Lesenswert?

Es funktioniert endlich mit dem neuen DS :)

Eine Frage habe ich noch, der Sensor fängt bei 35C an und rechnet in 0,5 
Schritten herunter. Ist das normal oder wird die Temp. sofort angezeigt?

Und weiters, kann man die 0,5 Schritte verkürzen?

von Peter K. (Gast)


Lesenswert?

Kann mir keiner helfen bzw. die Fragen beantworten?

von holger (Gast)


Lesenswert?

>Kann mir keiner helfen bzw. die Fragen beantworten?

Stell die Frage erstmal richtig.
Probleme im "parasite power mode"?
Oder hast du VDD an 5V?

von Peter K. (Gast)


Lesenswert?

VDD ist an Plus, hab den neuen Sensor gleich so verwendet.

Wollte fragen, ob es normal ist, dass der Sensor im Terminal mehrmals 
auf die richtige Temperatur misst, oder ob er den korrekten Wert sofort 
anzeigt

von Karl H. (kbuchegg)


Lesenswert?

Meiner macht das nicht.

Die erste Ausgabe nach dem Einschalten zeigt bei meinem gleich den 
richtigen Wert an. OK. Meist geht sie noch um ein halbes Grad rauf. Wird 
wohl die Eigenerwärmung sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.