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
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...
@ 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
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.
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
@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.
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
@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.
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.