DS1820 Code + Atmel90S8515

#1255723
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
Angehängte Dateien:
#1255732
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.
Gast #1255769
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
Angehängte Dateien:
#1255807
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.
#1255821
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
#1255838
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
#1255934
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.
Gast #1256156
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?
Gast #1256168
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)
#1256184
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 :-)
#1256192
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren