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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Gerhard H. (oderlachs)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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. (lkmiller) (Moderator) Benutzerseite


Bewertung
3 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht 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)


Bewertung
-4 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Der AVR-GCC unterscheidet nicht zwischen double und float

von Gerhard H. (oderlachs)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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:

Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.