mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik i2c problem


Autor: Hias (Gast)
Datum:
Angehängte Dateien:

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

Autor: Hias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner eine idee?
Pullups auf der 3V-Seite und 5V sind 4,7K.
Sind die ok?

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal nach unter:

http://www.mikrocontroller.net/forum/read-4-246060.html

Vielleicht findest Du dann einen Fehler?

Autor: Hias (Gast)
Datum:

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

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

Autor: Bernhard S. (bernhard)
Datum:

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

Autor: Hias (Gast)
Datum:

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

Autor: Bernhard S. (bernhard)
Datum:

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

Autor: Hias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Fehler gefunden!
Ein Low ging nicht vom sensor zum µC durch.
Andersrum schon!

Fet erneuert und scho gehts.

Danke nochmal

Autor: Bernhard S. (bernhard)
Datum:

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

Autor: Hias (Gast)
Datum:

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

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gern geschehen,

Wo hast Du den DS620 her? Und was kostet er?

Bei Reichelt habe ich ihn nicht gefunden.

Autor: Hias (Gast)
Datum:

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

Autor: Hias (Gast)
Datum:
Angehängte Dateien:

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

Autor: Bernhard S. (bernhard)
Datum:

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

Autor: Bernhard S. (bernhard)
Datum:

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

Autor: Hias (Gast)
Datum:

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

Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

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

Autor: Hias (Gast)
Datum:

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

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ER geht und das jetzt definitiv...

wohin geht er denn, Richtung Sondermüll?   ;)

Woran lag es denn?

Autor: Hias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man sollte das datenblatt genauer lesen...
speziell den abschnitt über mindest-versorgungsspannung...

: (


: D

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.