Forum: Mikrocontroller und Digitale Elektronik Atmega32 und DS18B29 wollen nicht kommunizieren


von Gerhard H. (oderlachs)


Angehängte Dateien:

Lesenswert?

Hallo Freunde !

Wieder sitze ich vor einem, für mich grossem Rätsel :(

Ich habe bislang krampfhaft versucht, mit einem ATMega32(STK500-Board) 
einen DS18B20 auszulesen.

Das es damit nicht so einfach ist, wusste ich aus Internetrecherchen. 
Darum habe ich mir mal was "fertig gebackenes" an Source aus dem Web 
gesucht, aber vergeblich, kein Erfolg, keine Anzeige/Ausgabe seriell.

URL: 
http://davidegironi.blogspot.com/2014/09/a-ds18b20-1-wire-digital-thermometer.html

Ich habe mal ein Projekt(AVR-Studio 4) als Zip angehängt, vielleicht 
gibt es einen freundlichen Menscher der damal reinschaut. Alles an Code 
hier einzusetzen erschien mir zu viel.

Die Sensoren sind 100% intakt, habe sie mit einem Arduinoaufbau 
getestet.

Vielleicht hat ja wer auch einen brauchbaren Tip für ein anderes Projekt 
in Sachen AVR / DS18x20. Es sollte für ATmega 8/16/32/328/644 verwendbar 
sein.

Gruss und Dank

Gerhard

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gerhard H. schrieb:
> Ich habe bislang krampfhaft versucht, mit einem ATMega32(STK500-Board)
> einen DS18B20 auszulesen.
Hast du ein Speicheroszi? Oder einen Logikanalyzer? Wenn nicht, dann ist 
es gerade, wie wenn du versuchst, im Dunkeln einen Brief zu schreiben 
oder eine Suppe zu essen: das Ergebnis ist überraschend...

von Falk B. (falk)


Lesenswert?

@ Gerhard H. (oderlachs)

>Die Sensoren sind 100% intakt, habe sie mit einem Arduinoaufbau
>getestet.

Wie sieht dein Hardwareaufbau aus? Hast du einen externen Pull-Up 
Widerstand?
Stimmt die Takteinstellung (Fuses) deines AVRs?

>Vielleicht hat ja wer auch einen brauchbaren Tip für ein anderes Projekt
>in Sachen AVR / DS18x20. Es sollte für ATmega 8/16/32/328/644 verwendbar
>sein.

Beitrag "Re: Onewire + DS18x20 Library"

: Bearbeitet durch User
von Source Inspector (Gast)


Lesenswert?

Gerhard H. schrieb:
> Wieder sitze ich vor einem, für mich grossem Rätsel :(

Du müsstest im Projekt (nicht in den Sourcen) die Frequenz
deines Prozessors einstellen. Fällt mir auf den ersten Blick
ein. Ob noch mehr verkehrt ist weiss ich aktuell nicht.

von Gerhard H. (oderlachs)


Angehängte Dateien:

Lesenswert?

Hallo Freunde !

Vielen Dank für Eure vielen Hinweise. Ich habe nun ein neues Projekt mit 
Geany unter Linux erstellt.
Ich war überrascht das ich es dort hinbekommen habe, gut bei der 
Temperaturausgabe(seriell) muss ein wenig besseres Format raus kommen, 
es werden hinterm Komma auch nur Nullen angezeigt, aber es geht schion 
erst mal vom Prinzip.
Die Anregung und die 18b20- Dateiten habe ich mir wieder im Web bei 
Davide Gironi geholt.

Nun kann ich meine Bedürfnisse so nach und nach in die Code "einbasteln" 
.

Mit besten Grüssen und Dank

Gerhard
Im Anhang ist das Geany-Projekt zu finden

Nachtrag :
Jetzt auch mit Nachkommastellen von int auf double geändert:
1
double d = ds18b20_gettemp();

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@Gerhard H. (oderlachs)

>Vielen Dank für Eure vielen Hinweise. Ich habe nun ein neues Projekt mit
>Geany unter Linux erstellt.
>Ich war überrascht das ich es dort hinbekommen habe,

Und wo liegt jetzt der Fehler? Wahrscheinlich in falschen Einstellungen 
im AVR-Studio?

>Jetzt auch mit Nachkommastellen von int auf double geändert:

>double d = ds18b20_gettemp();

Loser! Für so einen Popelmosch nimmt man Festkommaarithmetik und 
gut.

von Ingo Less (Gast)


Lesenswert?

Der AVR-GCC unterscheidet nicht zwischen double und float

von Gerhard H. (oderlachs)


Lesenswert?

Welche Einstellungen sollen falsch sein. Ich programmiere damit schon 
ewig  und weiss mich da Bescheid(??). Aber ich bin kein Herrgott, mann 
lernt ja nie aus.

Dann hätte ja das Projekt unter Linux/Geany auch  funktionieren 
müssen/sollen, wenn das neue Projekt dort funzt.

>Loser! Für so einen Popelmosch nimmt man Festkommaarithmetik und gut.

Fehler sind da, um gemacht zu werden...und auch daraus zu lernen.
Es soll sogar Menschen geben, die nicht fehlerfrei sind, ICH bin EINER 
davon !

Gruss und Dank
Gerhard

von Falk B. (falk)


Lesenswert?

@Gerhard H. (oderlachs)

>Welche Einstellungen sollen falsch sein.

Z.B F_CPU

> Ich programmiere damit schon
>ewig  und weiss mich da Bescheid(??).

Wenn deine Progammierkenntnisse so gut wie deine Deutschkenntnisse sind, 
dann wird das eher eng . . .

> Aber ich bin kein Herrgott, mann
>lernt ja nie aus.

Manche lernen's nie.

Man KÖNNTE auch mal Fehlermeldungen lesen und ernst nehmen.

c:/programme/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3 
:  warning: #warning "F_CPU not defined for <util/delay.h>"

Schon dumm, denn so stimmen deine Verzögerungszeiten in ds1820.c keine 
Sekunde (sic!)

Wenn man aber im Menu Project/Configuration Options unter Frequency die 
echte Taktfrequenz des AVRs einträgt, könnte das was werden.

#define  F_CPU  3686400UL

macht man aus DS18x20Demo.c raus.

Beitrag #5595847 wurde vom Autor gelöscht.
von Gerhard H. (oderlachs)


Angehängte Dateien:

Lesenswert?

Du scheinst ja Herr Universum zu sein ??? Wer schreibt heute noch
hochdeutsch ?


Behalte Deine Weisheiten für Dich, ich werd hier nicht mehr fragen...
Zum Anderen, lese den Quelltext richtig, besonders bei der F_CPU
Definition.
In der main steht zu Begin:


#ifndef F_CPU
#define F_CPU  3686400UL  //STK500
// #define F_CPU  8000000UL  // ATM128 Board
// #define F_CPU  16000000UL // beliebig, auch Arduino
#endif  //F_CPU

Warum soll die dann später includierte "delay.h" meckern...bei mir tut
sie es nicht....und das Programm läuft auch ohne Deine so spez. zitierte
Angabe:

>Wenn man aber im Menu Project/Configuration Options unter Frequency die
>echte Taktfrequenz des AVRs einträgt, könnte das was werden.

Das zum Abschluss, also wer Lesen kann ist voll im Vorteil.

Und Tschüss..

von Frank K. (frank)


Lesenswert?

Falk B. schrieb:
> @Gerhard H. (oderlachs)
>>double d = ds18b20_gettemp();
>
> Loser! Für so einen Popelmosch nimmt man Festkommaarithmetik und
> gut.

Wenn es in den Speicher passt und die Performance ausreichend ist, 
spricht nichts dagegen es so zu machen.

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.