hallo,
ich hab ein seltsames Problem.
Ich versuche ein Thermometer zu bauen.
Hardware: DS620, Mega8, 3*7Segmentanzeige...
Jetzt hab ich folgendes Problem...
Ich kann den Sensor einwandfrei einstellen, also Änderungen im
Config-register des DS620 vornehmen. Schreiben geht also.
Nachdem ich die Temperaturumwandlung gestartet habe, möchte ich
die Temperatur-register auslesen. Und da taucht das Problem auf,
genauer gesagt hier:
;-----------------------------------------------------------------------
-------
;Receive Date 2bytes
;-----------------------------------------------------------------------
-------
receive_data_2bytes:
ldi r16, (1<<twint)|(1<<twea)|(1<<twen)
out twcr, r16
r_dat0:
in r16,twcr
sbrs r16, 7
rjmp r_dat0
in receive_h, twdr
ldi r16, (1<<twint)|(1<<twen)
out twcr, r16
r_dat1:
in r16,twcr
sbrs r16, 7
rjmp r_dat1
in receive_l, twdr
ret
Der Mega bleibt immer in der r_dat0: schleife hängen...
Hab Ihr eine Idee warum???
Ach ja der komplette Code is im Anhang...
Danke Hias
Danke für den Link!
Hab meinen Code überprüft und um den µC interne Überwachung erweitert.
Mein Code müsste stimmen.
Jetzt drängen sich bei mir folgende Fragen auf:
Kann ich die Schaltung für Lesen und Schreiben verwenden??
Seite 10:
http://www.semiconductors.philips.com/acrobat_download/applicationnotes/AN97055.pdf
Wie lang darf das Kabel sein?
Wie groß sollten die Pullups sein?
Kann evtl der Sensor defekt sein? Schreiben geht.. aber lesen nicht???
Danke Hias
>Kann ich die Schaltung für Lesen und Schreiben verwenden??>Seite 10:
Ja die Schaltung funktioniert für die Lese-und Schreibzugriffe.
Um einen Hardwarefehler auszuschließen, kannst Du jeweils
einen PIN (SDA/SCL) vom µC und vom Sensor auf Masse legen und somit ein
LOW simulieren.
Liegt / kommt die Pegeländerung beim µC/Sensor an?
>Wie lang darf das Kabel sein?
Richtet sich nach den Kabel-Kapazitäten und der SCL Frequenz und den
Pullups
>Wie groß sollten die Pullups sein?
Manche Sensoren können nur wenige mA (ca. 3mA) schalten.
Gern verwendet man Konstantstromquellen
Danke schon mal...
Ich habe ein normales Modem-Kabel verwendet. Als so ein mit dem ein
Modem an die Telefon-Dose angeschlossen wird. Länge 1,5m.
Is das zu lang?
Pullups hab ich mal ein wenig verkleinert.
2,2K auf der 5V Seite... 1,2K auf der 3V Seite
keine Änderung....
Ich versteh das nicht.... wenn ich Schreiben kann (und das funktioniert
100%) warum geht das dann nicht?
Ich denke dass die Schaltsignale des Sensors nicht ankommen.
Des heist wiederum, dass dieser die anliegenden mA nicht Schalten
kann?
Also Pullups vergrößern? Damit Strom kleiner wird...
Was hat es mit der Konstantstromquelle auf sich?
Kann man einen Defekt eines FETS ausschließen wenn ich schreiben kann?
Was brachte denn diese Prüfung?
>Um einen Hardwarefehler auszuschließen, kannst Du jeweils>einen PIN (SDA/SCL) vom µC und vom Sensor auf Masse legen und somit>ein LOW simulieren.> Liegt / kommt die Pegeländerung beim µC/Sensor an?
Prima, freut mich,
meine Bankverbindung gebe ich Dir später ;)
Vielleicht könntest Du dieses interessante Projekt und Deinen
Assembler-Code mal hier veröffentlichen?
Wo hast Du den DS620 her? Und was kostet er?
Ich weiß jetzt übrigens den Fehler des FET's.
Da is noch ne Diode drinen und die war kaputt...
Naja...
Zum Projekt.
Eine simple Anzeige der Temperatur und Steuerung eines Heizstabes ist
das Ziel. Für viele mag das zwar als "überdimensioniert" wirken aber
ich möchle damit mein Ätzbad auf gleicher Temp halten.
Die Einschalt bzw. die Auschalttemperatur wird über zwei Taster
einstellbar. Wenn ich damit fertig bin veröffentliche ich gerneCode und
Schaltplan.
Danke nochmal Bernhard!
Hias
Das war eher ein Glück. Habe ihn und noch zwei von Platinen vom
Elektroschrott. : )
Denke das sich den aber auch als Sample bei Maxim zusenden lassen
kann... Obwohl ich eher nicht der Freund von solchen Geschichten
bin...
Hias
Hallo nochmal!
Ich hab nach wie vor ein Problem....
Manchmal erhalte ich Daten vom Sensor manchmal nicht.
Manchmal geht das Ding einwandfrei, plotzlich fällt es aus. Und es geht
auch nach einem Reset nicht mehr. Nach mehrmaligen Reseten geht es auf
einmal wieder...
Frage:
Sensor kaputt?
Pullups nicht in Ordnung?
Irgendwelche Störungen an dem Verbindungskabel?
CodeFehler?
Was meint ihr?
Hias
Hab mal über Dein Assembler-Code geschaut.
Warum Du 2 Interrupts verwendest, kann ich momentan nicht
nachvollziehen?
.org 0x008
rjmp refresh
.org 0x009
rjmp timer0
Kleiner Tipp, um die Usache der Abstürze schneller zu lokalisieren.
Verbessere einfach Deine Fehlerroutinen, damit Du siehst, wo sich das
System aufhängt.
Noch ein kleiner Tipp.
Lass Dir mal den Pegel der SCL und SDA-Leitung durch 2 einfache LED
anzeigen.
(LED über Vorwiderstand von +5V an die beiden PINS des µC).
Kann manchmal ganz hilfreich bei der Fehlersuche sein
Also wegen den 2 Interrupts...
Ich verwende einen das ich alle 5 sekunden die neue Temperatur
anzeige...
Der andere is für die Multiplexanzeige und für die Taster zuständig...
Ich weiß nicht wie ich an den Fehlerroutinen was ändern soll.
Einerseits soll abgewartet werden bis eine Operation vom Sensor
bestätigt wird. Andererseits is es so das wenn der Sensor aus
irgendwelchen Gründen auch immer diese Bestätigung nicht ausgibt, der
µC genau an dieser Stelle hängt.
Ich habe übrigens diese schon anders lokalisiert. Das Problem liegt
nach wie vor beim Lesen der Temperatur aus dem Sensor.
ABER warum geht das Stundenlang wieder gut? Und dann auf einmal nicht
mehr?? Von dem her scheidet für mich ein Softwarefehler aus.
Das einzige was ich mir vorstellen könnte is dass irgendwann sich die
beiden Interrupts in die quere kommen. Allerdings glaube ich zu wissen
dass der Timer1 eine Vorrangstellung gegenüber des Timer0 hat!?
Zu der Fehleranalyse an der SCL bzw. SDA-Leitung...
Was macht SCL wenn keine Daten übertragen werden? (high?)
Was macht SDA wenn keine Daten übertragen werden? (auch high?)
Was ich mir noch vorstellen könnte, dass irgendwas den µC stört...
Was is mit offenen Pins?
Was is mit Handystrahlung?
Funktnetzen...
Können die irgendwie den µC stören?
Hias
...jetzt muss ich alles noch einmal schreiben, da der Server vorhin
nicht wollte..... macht aber nichts
>Ich weiß nicht wie ich an den Fehlerroutinen was ändern soll.
Gerade da sollte man sinvolle Fehlerroutinen einbauen, Du siehst ja,
dass das System sich auch mal aufhängen kann, aus welchen Gründen auch
immer.
In Deinem konkreten Fall, würde vielleicht schon eine Watch-Dog
Überwachung genügen.
Ich lege Dir mal mein momentanes Projekt mit bei (es ist zwar noch
nicht fertig), vielleicht kann ich Dich dadurch etwas inspirieren.
>Allerdings glaube ich zu wissen>dass der Timer1 eine Vorrangstellung gegenüber des Timer0 hat!?
Der Interrupt mit der niedrigsten Adresse hat immer Vorrang.
>Zu der Fehleranalyse an der SCL bzw. SDA-Leitung...>Was macht SCL wenn keine Daten übertragen werden? (high?)>Was macht SDA wenn keine Daten übertragen werden? (auch high?)
Genau, beide führen HIGH - Pegel
>Was ich mir noch vorstellen könnte, dass irgendwas den µC stört...>Was is mit offenen Pins?>Was is mit Handystrahlung?>Funktnetzen...>Können die irgendwie den µC stören?
Theoretisch ja, desshalb sollte die Software schon einiges ausbügeln
können.
Gruß
Bernhard
Ich glaubs nicht...
ER geht und das jetzt definitiv...
Der Fehler? Darüber schweige ich lieber ; )
-> in die Ecke gehe zum schämen : )
So jetzt noch Taster dran und fertig...