Datum: 18.06.2003 19:08
Angehängte Dateien:Anbei das komplette Programm, Schaltplan und die Platine. Die Uhr ist mit Sommerzeit und bis zum 31.12.2099. Das File indexg.htm enthält eine ausführliche Erklärung der Funktion und aller Programmmodule. Außerdem habe ich noch ein paar Praxistips zum einfacheren Programmieren gegeben und ich denke auch recht gut in diesem Programmbeispiel angewendet. Daher könnte dieser Beitrag auch jene interessieren, die nichts mit dem AVR, LCD, 1-Wire, RTC usw. machen wollen. Kommentare und Anregungen sind herzlich wilkommen. Peter
Datum: 19.06.2003 00:40
sehr schönes und hauptsache sinnvolles programm; die doku hat mir auch sehr gut gefallen - easy-going, verständlich und doch lernreich! ach ja, das ist bestimmt eine meisterleistung: tiny12 hat 1024bytes rom und das programm belegt exakt 1024bytes :) danke, peter, reife leistung, werde bestimmt etwas davon "klauen" :) nicht böse sein :) emil
Datum: 19.06.2003 10:20
@Emil Danke. Das mit den 1024 Bytes täuscht aber. Warscheinlich, weil ich das Calibrationsbyte ans Ende geschrieben habe. Es sind in Wirklichkeit noch etwa 7% (74 Bytes) frei. Peter
Datum: 17.07.2005 09:24
Hallo Peter, gerne würde ich diese Schaltung nachbauen (die Hardware ist schon fertig) jedoch zickt das Programm beim compilieren :-( Ich arbeite mit dem AVR Studio 4; die erste Fehlermeldung ist in der Tiny12 Definitionsdatei aufgetreten : ".equ E2END =3F" mag er nicht; ich habe es auf $03F umgeschrieben,bekomme dann aber folgende Fehler : Building project... AVRASM: AVR macro assembler 2.0.28 (build 121 Jan 11 2005 10:28:51) Copyright (C) 1995-2005 ATMEL Corporation C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(20): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcdtrtc.h' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcdtrtc.h(2): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\tn12def.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcdtrtc.h(62): warning: Register r23 already defined by the .DEF directive C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(20): C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcdtrtc.h included from here C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcdtrtc.h(71): warning: Register r31 already defined by the .DEF directive C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(20): C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcdtrtc.h included from here C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(21): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\hardware.h' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(22): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\macro.mac' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(30): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\ovf0int.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(92): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\lcd164.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(93): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\1w_rtc.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(94): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\ds1994.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(95): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\gettime.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(96): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\1wire.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(97): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\outval.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(98): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\disptime.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(99): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\dispwday.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(100): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\dispdate.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(101): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\disptemp.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(102): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\measure.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(104): Including file 'C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\calc12_5.inc' C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\disptime.inc(19): error: Undefined symbol: display_clock_ret C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(98): C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\disptime.inc included from here C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\dispdate.inc(21): error: Undefined symbol: display_date_ret C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(100): C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\dispdate.inc included from here C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\disptemp.inc(35): error: Undefined symbol: display_temp_ret C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(101): C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\disptemp.inc included from here C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\measure.inc(50): error: Undefined symbol: measure_ret C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\2temp.asm(102): C:\Dokumente und Einstellungen\Christian Schumann\Desktop\Temptime\measure.inc included from here Assembly failed, 4 errors, 2 warnings Ich denke du arbeitest mit einem Macroassembler und habe mir schon mal die "ASM" Batch Datei angesehen und die Pfade umgeschrieben; jedoch leider ohne Erfolg ... Bitte hilf mir... sonst muß ich die Hardware entsorgen .... Thanks in advance !! Christian
Datum: 18.07.2005 09:54
Ich vermute mal, Du hast irgendwas am Quelltext geändert. Mach mal ein komplettes Listing mit .list und .listmac und schau es Dir in Ruhe an, warum er die Labels nicht findet. Peter
Datum: 16.08.2005 17:17
Hallo Peter, sorry to bother you again !! Also erst mal : Geniales, kurzes Programm !! Habe mal das Hex File "gebrannt" und die Hardware spielt einwandfrei; leider nur mit falschem Datum und Uhrzeit da das *.asm file noch immer zickt und auch ich die fehlenden Labels : display_clock_ret display_date_ret display_temp_ret measure_ret in keiner der Include Dateien finden kann; fehlt bei dem Zip_file evtl. eine Datei ?? Ich schwöre dir den Quellcode (noch nicht) verändert zu haben !!! All diese _ret Labels sind die Beendigung von .inc Dateien; die müssten dann ja im *.asm File oder anderen *.inc Dateien auftauchen, oder ?? Ein Freund von mir (mit viel AVR Erfahrung) hat die gleichen Probleme ... Bitte schau dir dein *zip File noch mal an oder maile mir die Datei welche die fehlenden Befehle enthält. 1000 Dank im voraus !!! Christian P.S. ohne vollständige Assemblierung macht mein AVR Studio 4 leider kein *.lst File
Datum: 16.08.2005 19:42
Hallo Peter, jetzt läuft's (fast). Das Problem war wohl das Macro File welches vom doofen XP Rechner als Macromedia File interpretiert wurde; habe es dann als *.txt File gespeichert; diverse Sachen damit ausprobiert... anyway; nun wird's gelesen und implementiert. Aber ..... sobald ich versuche das Startdate, Time etc. zu verändern hängt sich das Programm im AVR (anscheinend) auf. Das LCD wird initialisiert und das war's ...die Assemblierung läuft fehlerfrei. Mit den Originaldaten funktioniert's einwandfrei, aber wehe ich ändere ein einziges Parameter ... Hast du da 'ne Erklärung für ?? Muss der RTC erst wieder initalisiert werden wenn er mal mit anderem Datum lief ?? Thanks in advance !! Christian P.S. LCD mit nur drei Ports und einem supergeilem Treiberprogramm; danke !!! Ich werde nie wieder 11 Ports opfern müssen !!!!!
Datum: 22.08.2005 19:52
Hallo Peter, sorry ich immer noch...... Also, ich habe die Return-labels manuell so gesetzt wie in deinem listfile; nun funktioniert's 100% ig. Als Magic_key (o.ä) muss man nur nach einer Änderung der Daten eine X-beliebige, aber andere, Zahl als vor der Änderung eingeben; that's it !! Ich habe (leider ohne Erfolg) versucht deinen LCD-Teiber auf einen Mega-8 zu übertragen (4 MHz); ich kann an allen Konstanten "herumschrauben" wie ich will und bekomme einfach die "Enable" Zeit nicht lang genug ... Vielelicht ein Thema für einen anderen Thread ?? Mit 2 Stück 74HCT590 und 16 Bit seriell wobei die ersten 4 bit für den Kontrast, die zweiten 4 Bit für die LED Hintergrundbeleuchtung und die restlichen 8 Bit für das LCD sind ?? Ein Platinenlayout kann ich gerne zur Verfügung stellen .... Oder das LSB als Enable wenn die Bits seriell eingetroffen sind ?? Alles Gute wünscht Christian
Datum: 25.09.2005 20:49
Hallo Christian, den Fehler bei ".equ E2END =3F" bekomme ich nicht nur bei diesem Beispiel sondern auch bei anderen Codes, wenn ich AVR-Studio verwende. In diesem Fall hbe ich es mal mit WAVRASM übersetzt und erhalte keinen Fehler. Also liegt es wohl am Assembler- oder ? Gruß Klaus
Datum: 26.09.2005 09:35
Hallo Christian und Klaus, daß Problem mit ".equ E2END ..." habe ich gelöst durch Löschen der tn12def.inc. Seit einiger Zeit sind beim AVRStudio Partdefinitionfiles als xml-Dateien eingeführt, die der Assembler automatisch benutzt, wenn die entsprechende ".include" Direktive ge-setzt ist. Danke nochmals an Christian für die Lösung des "ret"-Problems. Hat mir viel Zeit gespart. Unklar ist mir noch die Sache mit dem Magic-Byte. Ich bin nicht so sicher, daß man dieses bei Verwendung anderer Angaben für die Start-zeit nur "irgendwie" ändern muß. Peter D. schreibt, daß es angepaßt werden muß, also stellt sich die Frage nach dem Algoritmus. Hat da schon jemand dran gearbeitet? Gruß Werner
Datum: 26.09.2005 10:21
Das Magic ist nur dazu da, damit die CPU weiß, ob die RTC schon gestartet wurde. Wenn es nicht stimmt, wird die im Programm definierte Startzeit geladen und die RTC gestartet. Das Stellen der RTC erfolgt also dadurch, daß man die Uhr zum richtigen Zeitpunkt einschaltet. Will man sie neu stellen, muß man ein anderes Magic nehmen. Man kann sich natürlich auch andere Stellmethoden ausdenken, das sollte ja nur als Beispiel für eigenen Versuche dienen. Peter
Datum: 23.10.2005 11:35
Hallo, ich habe mich mit dem Nachbau des Projekts befaßt und möchte hier einige Tipps geben, die Probleme vermeiden helfen können. Zunächst zur Hardware: Die Schaltung wurde 2003 entwickelt. Mittlerweile ist der DS1820 nicht mehr in der Produktion. Als Ersatz dürfte sich der DS18S20 anbieten, der weitgehend kompatibel ist. Ungeeignet ist hingegen der DS18B20, da er einen anderen Aufbau des Temperatur-Registers besitzt. Auch hatte ich Probleme mit der Beschaffung des DS1994 (jedenfalls zu vernünftigen Preisen). Der DS2404 kann hier als Ersatz dienen. Er benötigt einen externen 6pF Quarz. Sodann für Benutzer des Studio4: Beim Assemblieren treten die oben beschriebenen Fehler auf. Also zunächst nur der Fehler mit der tn12def.inc. Wird dieser Fehler korrigiert entweder über ".equ E2END =3F" in "....=$03F" oder durch Löschen der tn12def.inc findet der Assembler die Label display_clock_ret display_date_ret display_temp_ret measure_ret nicht mehr, d.h. er kann die entsprechende Zeile in dem Macro incall in der macro.mac nicht mehr richtig interpretieren. Meine Lösung: Verwendung des tiny13 mit Software-Stack Hierzu: in der init-Routine den Stack lokalisieren Änderung der .include Direktive in tn13.... Das Macro incall löschen in der macro.mac in den Dateien measure.inc etc. die entsprechenden Routinen mit "ret" abschließen in der asm-Datei aus den Makro-Aufrufen rcall-Aufrufe machen Damit funktioniert das Programm dann auch im Studio4 einwandfrei. Allerdings läuft meine RTC cirka 10 Sekunden pro Tag zu schnell, was vielleicht damit zusammen hängt, daß ich entgegen der Spezifikation einen 12,5pF Quarz verwende. PS: Wer im übrigen an den Hintergründen für die Merkwürdigkeiten bei der Abarbeitung des Makros incall interessiert ist, wird vielleicht in der nächsten Zeit hier etwas erfahren können: http://www.avrfreaks.net/index.php?name=PNphpBB2&f... Gruß Werner
Datum: 23.10.2005 11:44
Hallo, ich vergaß darauf hinzuweisen, daß die Timer-Register im tiny13 anders bezeichnet sind. Dies ist auch noch zu ändern, wenn man auf diesen Chip umsteigen möchte. Gruß Werner
Datum: 02.07.2006 21:32
Angehängte Dateien:Hallo, ich werde den Thread mal wiederbeleben. Erstmal danke an Peter für den Code! Ich bin ziemlicher Anfänger und versuche gerade mich da reinzuarbeiten. Ich habe versucht den Code für mich anzupassen. Ich brauche aber nur den 1-wire-Teil. Ich habe versucht, das auf den 1-wire zu beschränken und mit meinem LCD zu kombinieren. Jetzt hab ich das Programm zumindest soweit, daß ich beim Compilieren keine Fehler mehr bekomme und im Sim. siehts auch ganz gut aus(zumindest mal der Anfang). Wenn ich das Programm jedoch in den ATMega16 rüberschiebe, tut sich auf dem Display mal gar nichts. Es läuft noch nicht mal bis zum clear-Befehl, und die Initialation und der clear des LCD funktioniert einzeln, aber nicht in dem kompletten Programm. Ich bin grad ratlos und stelle den Code mal hier rein, vielleicht erbarmt sich ja jemand und schaut sich den mal an... ;-) Vielen Dank schonmal, ->Sanlo
Datum: 10.07.2006 21:46
hm... 18 Leute haben sich den Quellcode gezogen, aber keiner schreibt nen Komentar dazu???? Ist mein Code so schlecht, daß es sich nicht lohnt darüber zu schreiben, oder findet keiner einen Fehler? (Ich hab doch sicher einige gemacht) ->Sanlo
Datum: 18.07.2006 11:24
Angehängte Dateien:also da der Quellcode wohl zu schlecht und keiner Antwort wert war, hab ich die Sache nochmal von vorn angefangen. Jetzt bin ich soweit, dass mir mein LCD "Temp1: 20.0°C" anzeigt, aber der Wert stimmt nicht, und ich bekomme auch keine Änderung der Anzeige bei Temp.änd. Bin grad ein bisschen ratlos, was wohl daran liegt, dass ich PD´s Code nicht vollständig verstehe (z.B. ROM_search ist mir völlig schleierhaft, ich nehms als gegeben und i.O. hin) Ich hoffe, diesmal hat jemand den ein oder anderen Tip. Danke ->Sanlo
Datum: 18.07.2006 15:45
Hallo Sanlo, sorry, ich habe seit diesem Projekt keine weiteren AVRs mehr programmiert; Peter's Programm ist super professionell, leider aber nicht wirklich "anfängergeeignet". Ich suche gerade eine Routine für 2 Stück 1-wire Temperatursensoren um eine Differenzmessung machen zu können; d.h. dieses Projekt ohne die Zeitkomponente ... leider fehlt mir auch die Zeit dazu ... Falls mir was am Programm auffällt melde ich mich; falls du 'ne Lösung hast lass es mich bitte wissen. Hang loose Christian
Datum: 18.07.2006 23:36
mein Projekt ist ja ohne die Zeitkomponente, und die Voraussetzungen für mehrere DS18s20 sind auch vorhanden. Bei mir soll es dann so aussehen, dass drei Sensoren ausgelesen und angezeigt werden. Zwei davon werden zum Ansteuern eines Ventils verwendet. ( Das wird dann eine Steuerung für eine Solar-Poolheizung) Ich weiß allerdings auch noch nicht, wie ich das dann mit der Hysterese programmiere. Aber jetzt muss erstmal das Auslesen funktionieren, jetzt der eine und danach für alle drei Sensoren. ->Sanlo
Datum: 19.07.2006 09:37
@Sanlo, ich kann nur ZIP im Explorer öffnen (kein RAR). Die Quarzfrequenz hast Du angepaßt (max 3,7MHz) ? Bei über 3,7MHz müssen die Warteschleifen in w1_reset angepaßt werden (weiteres Register nehmen). JTAG-Fuses aus ? w1_reset liefert present zurück ? w1_rom_search liefert 00 .. 7F zurück ? Peter
Datum: 19.07.2006 10:15
Angehängte Dateien:@Peter: habs gezippt... Die Frequenz von 1 Mhz ist bei xtal eingetragen. Dann müsste der Rest so klappen. ups... nachdem ich die JTAG-Fuse ausgeschaltet habe, gibt mein LCD nur noch eine flackernde Anzeige von sich. Die Zeichen aus der Anzeige hüpfen jetzt wild durcheinender. Was w1_reset und w1_rom_rearch zurückgibt weiß ich leider nicht, oder kann man das über die ser. Schnittstelle irgendwie mit Ponyprog auslesen? ->Sanlo
Datum: 19.07.2006 10:24
Verdammt! meine Anzeige lässt sich auch durch Rücksetzten auf den vorherigen Zustand vom JTAG nicht wiederherstellen.
Datum: 19.07.2006 10:38
hmmm... die 50us Pause in den LCD-Routinen war plötzlich zu kurz. Jetzt klappts wieder. ->Sanlo
Datum: 20.07.2006 08:26
"hmmm... die 50us Pause in den LCD-Routinen war plötzlich zu kurz." Plötzlich gibt es nicht, Du must was geändert haben. Versuche herauszufinden, was Du geändert hattest. Dazu ist es sinnvoll bei der Entwicklung z.B. täglich die letzte Version zu sichern (nicht die alte überschreiben !). Versuche mal systematisch vorzugehen. Bringe erstmal das LCD zum laufen, dann eine Funktion zur Zahlenausgabe und dann kannst Du debuggen. D.h. an den Stellen, wo Du etwas bestimmtes erwartest aber etwas falsches vermutest, lasse Dir den Wert ausgeben. Peter
Datum: 20.07.2006 09:27
das kuriose ist, daß ich nur JTAG verändert habe und sonst nichts. Vorher ging das LCD super. Ich hänge jetzt grad beim Einlesen. In measure wird die ausgelesene Temp. doch in temp2l und temp2h abgelegt, aber in display_temp ist "z" der Temp.wert. Da gibt es kein temp2l und temp2h??? ->Sanlo
Datum: 20.07.2006 09:41
Hi Sanlo, hi Peter, ich finde, dass der Thread sich langsam etwas vom Grundthemaentfernt; inzwischen arbeitet Sanlo auf einem Mega-16 ... Sanlo, schau dir mal bei "avrfreaks.net" Peter's Projekt an: (du mußt dich erst als User anmelden) "Multiple DS18[B]20 on LCD" auf dem Tiny 12; ich denke, dass ist eine gute Grundlage für deine Aufgabe. Es ist ja gerade interessant auf kleinen AVRs große Projekte zu verwirklichen. Ansonsten nutze die Analogports des Mega-16 und gehe einfach mit Thermosensoren drauf ... aber die 1820 sind einfach geiler.. x-cuse my language ! Peter, danke, dass du noch immer Threads bearbeitest !! Viel Spass und gutes Gelingen !! Christian
Datum: 20.07.2006 11:34
"aber in display_temp ist "z" der Temp.wert." Nein, ist es nicht ! Z ist nur der Zeiger darauf. Schau Dir mal den LD-Befehl genau an. Zeiger nimmt man immer dann, wenn verschiedene Werte mit der gleichen Funktion bearbeitet werden sollen. Peter
Datum: 21.07.2006 11:09
@Peter: also dein Code klingt für mich plausibel, ich kann keinen Fehler finden (hätte mich auch gewundert). Ich hab mit Sicherheit ein Timing-Problem. Ich muss wohl mal irgendwie die Taktfrequenz checken. Rein theoretisch müsste das mit dieser xtal-Formel super funktionieren (wenn ich sie richtig verstanden habe: Zeit in us * Frequenz 1000000 Länge der Schleife(Anzahl Takte). Ich hab auch auf der Befehlsliste nochmal die Anzahl der Takte überprüft, eigentlich müsste es passen. Aber wenn ich das mal als Probe auf die Warteschleifen vom LCD übertrage (50 us), dann ist das viel zu kurz. Ich komme laut Formel 50 * 1000000 / 1000000 /3 gibt 16,67. Ich hab jetzt mal getestet, bis wohin die Schleife zählen muss, um eine stabile Anzeige zu erhalten. Das ist bei 77 Dez, oder 4d hex. Irgendwo ist da der Wurm drin. Die Takteinstellungen im ATMega hab ich auf Standart gelassen. d.h. 1 Mhz interner Oszi. Vielleicht stimmt damit was nicht. Sanlo
Datum: 21.07.2006 12:22
so... der ATMega hat irgendwie ne Macke, trotz eingestellter Standart-Werte hat er ne größere Freq.,ich hab zum Glück mehrere davon. Ich hab jetzt einen Neuen genommen und jetzt passt das mit der xtal-Formel. jetzt zeigt er dauernd -110.5 °C an. Das kann ja wohl auch nicht ganz sein... ->Sanlo
Datum: 21.07.2006 22:26
aha... der Zeiger ist schuld! Ich hab die Pointeradressen vergessen. Wonach geht man beim Einstellen der Adressen? Welche Werte nimmt man? ->Sanlo
Datum: 23.07.2006 19:25
"Wonach geht man beim Einstellen der Adressen? Welche Werte nimmt man?" Na genau die Adresse, wo man vorher den Wert abgelegt hat, den man nun anzeigen will. Schau mal ins *.h-File (temp_ptr). Peter
Datum: 24.07.2006 15:58
so jetzt zeigt er eine Temp. an, und wenn ich alle drei Sensoren anschließe bekomme ich nur den letzten Sensor angezeigt (Vermute ich zumindest, da es der mit der längsten Leitung ist. Was muss ich jetzt machen, um alle drei Werte angezeigt zu bekommen? Sorry, daß ich nerve Peter, aber dein Programm ist so komplex, daß ich manche Sachen echt nicht verstehe. Ich hoffe, du hast Mitleid und hilfst mir noch ein bisschen. ;-) Danke, Sanlo
Datum: 24.07.2006 16:12
ok teilweise gefunden. Hab in lcd_data den lcd_count nicht hochgezählt. Jetzt hab ich zwei Werte. ...und den dritten krieg ich auch noch... :-) ->Sanlo
Datum: 24.07.2006 16:30
ist das Prog nur für 2 Sens. geeignet? Ich hab jetzt zum Testen mal aus display_temp den Teil rauskopiert, der die Temp. anzeigt, also von "get low byte" bis zur Anzeige von "°C". Interessanterweise zeigt er für den dritten Sensor 0.0°C an. Ich glaub, ich werd erstmal den Sensor checken. ->Sanlo
Datum: 24.07.2006 16:52
"ist das Prog nur für 2 Sens. geeignet?" So siehts aus. Der Tiny12 hat ja nicht viel Speicher. Und so werden die 2 letzten Lesungen gespeichert:
rcall w1_byte_rd ;low byte mov temp2l, temp1l mov temp1l, a0 rcall w1_byte_rd ;high byte mov temp2h, temp1h mov temp1h, a0 |
Sollte leicht auf 3 erweiterbar sein. Man könnts natürlich auch für Pointer umschreiben. Peter
Datum: 24.07.2006 19:43
juhuuuuu... Danke Peter, du hast mir wieder den richtigen Tip gegeben. Jetzt zeigt er alle drei Temps richtig an! ->Sanlo
Datum: 26.07.2006 22:29
Angehängte Dateien:so fall es jemanden interessiert... meine Variante mit Bild vom Versuchsaufbau ->Sanlo
Datum: 14.11.2006 18:50
Angehängte Dateien:hey könnts ma da weiter helfen,versuch ds180 auszulesen,schaff des ned mit dem 1 wire port,muss des in c programmiern. bitte,bin schon verzweifelt
Datum: 14.11.2006 23:11
Wer mich kennt weiß, daß ich keinen Entrarer installiert hab. Bezieht sich die Frage denn wirklich auf meinen Beispielkode ? Ansonsten, Hijacker verkrümeln sich bitte ins Fragen-Forum. Wie lautet überhaupt die Frage ? Ohne konkrete Frage keine Antwort. Peter
Datum: 19.11.2006 11:09
hey,was könnte da nicht stimmen,wenn er immer schreibt SCON undefined
indentifier
#include<reg517.h>
#include<stdio.h>
//---------------------------------------
// Initialize serial port
//---------------------------------------
void InitSerial(void)
{
TMOD = 0x20; // Timer 1=8-Bit-relod
TH1 = 0xFD; // TH1
TR1 = 1; // Timer 1 starten
SCON = 0x52; // Freigabe von Sender & Empfänger
}
jedoch bin ich der meinung,dass der quellcode korrekt ist!
Datum: 19.11.2006 17:17
Och nö, nochn Hijacker. Ein bischen Benimmse schadet auch in Foren nicht. Peter