Forum: Mikrocontroller und Digitale Elektronik DS2482-100 1-Wire unter Assember ansteuern.


von Karsten (Gast)


Lesenswert?

Hallo,


ich hoffe Ihr könnt mir ein wenig unter die Arme greifen.

Ich habe ein kleines Projekt und möchte mit einem Single-Channel 1-Wire 
Master DS2482 mehrere Temperatursensoren auslesen.

Als Programmiersprache möchte ich Assembler verwenden.

Das Datenblatt studiere ich jetzt schon länger und auch im Forum
habe ich viel gefunden, nur hat es mir nicht soviel geholfen.

Deshalb folgende Frage:

Hat wer schon ein 1-Wire Projekt mit dem DS2482-100 und Assembler 
realisiert?
Was muss ich wann Senden/ Initialisieren und was wann Empfangen?

Das Datenblatt von Maxim ist mir nicht so ganz klar verständlich...



Vielen lieben Dank im voraus.

Karsten

von Karsten (Gast)


Lesenswert?

Hat wirklich noch niemand einen Temperatursensor über den Busmaster 
DS2482-100 programmiert?

Bin für jede Hilfe dankbar!

Grüße

Karsten

von Maxi (Gast)


Lesenswert?

Steht alles im Datenblatt und bei guggel.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

programmiere es doch einfach unter C, und dann schau dir das zugehörige 
Assembler-Listung  (Compilat) an und überlege, was du dann noch 
verbessern könntest im reinen Assembler-Code

von Karsten (Gast)


Lesenswert?

Wenn ich C könnte, würde ich es ja machen und das Datenblatt verstehe
ich leider nicht.

Deshalb frage ich ja hier. Vielleicht hat ja wer so etwas mal in 
Assembler
programmiert...

Würde mir wirklich helfen.

Grüße

Karsten

von Obermayer F. (Firma: tbd) (foikei)


Lesenswert?

ich hab auch mal versucht, den DS2482-100 zum laufen zu bringen.
Hat nur auch nicht geklappt...auf dem 1-Wire-Bus gabs keinen Mux.
Bin dann direkt auf 1-Wire umgestiegen.
Wäre es eine Möglichkeit, oder ist I2C ein Muss?

von Karsten (Gast)


Lesenswert?

Ein Muss ist es nicht, würde mich aber gerne in die Materie tiefer 
einarbeiten, mir fehlt aber leider ein Startpunkt, an dem ich ansetzen
kann.

Das Datenblatt will einfach nicht in meinen Schädel rein... Leider.

Grüße

Karsten

von Jürgen (Gast)


Lesenswert?

Karsten schrieb:
> Das Datenblatt will einfach nicht in meinen Schädel rein... Leider.

Nun Hast du 2 Datenblätter zu lesen, deinen Temperatur Sensor und deine 
Bridge. Die Bridge nimmt dir ja nur das Timig ab, die Register der 
Temperatur und dessen Umrechnung musst du weiterhin aus dem Datenblatt 
des Sensors entnehmen. Gerade in ASM, dürfte aber das Timing das 
geringste Problem sein.

Was genau Verstehst du schon am 1-Wire Bus und was nicht?

Grüsse

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Karsten schrieb:
> Wenn ich C könnte, würde ich es ja machen

Komm, ein bichen C-Code compilieren kann doch nicht so schwer sein ...

http://www.maximintegrated.com/app-notes/index.mvp/id/3684


Außerdem: In den Code samples und erläuternden Text ist alles 
beschrieben. Den Schritt in der Abstraktion solltest du doch wohl hin 
bekommen ...

von Ein-Draht-Seiltänzer (Gast)


Lesenswert?

Ich versteh dein Problem. Du mußt das Ding ganz langsam und schrittweise 
vereinnahmen.

Haste n Oszi? Das ist bei solchen von-Null-auf-hundert-Versuchen 
obligat. Am besten wärn Speicherozi, dann kannn man besser sehen was 
schief läuft.
Mit nem Analogoszi gehts aber auch, den Vorgang halt immer wieder 
wiederholen und ein Portbit des uC zum externen triggern benutzen. Hab 
ich früher immer so gemacht.

Schau dir mal zB das Datenblatt des DS18B20 genau an (bis zum lesen 
der Seriennummer sind zB fast alle 1-Wire Ics gleich).

Los geht's!
1. Schick mal nen entsprechenden Reset-Impuls, dann muß das Ding mit nem 
einzelnen zurückkommenden Impuls "Hallo" sagen. Wenn der nicht kommt 
wäre schon mal an der HW was faul.

2. Dann wieder auf Ausgabe umschalten, das Timing genau nach Kochrezept 
einhalten und 0x33 wegschicken.

3. Dann wieder umschalten und die 6 Bytes die im Gänsemarsch rauskommen, 
einsammeln.

Fertich ist die Seriennummer!


Genauso nach diesem Schema funktionieren auch alle anderen Funktionen 
des Thermometers. Mit 0x44 kannste die Temperatur rauskitzeln. Dazu 
braucht er aber ein paar ms weil er erst den Strom von der Datenleitung 
saugen muß um den internen Kondensator zu füllen.
Und erst wenn du so weit bist daß du reproduzierbar(!) ein paar Bits in 
den Händen hälst und absolut nicht mehr weiterweißt wie man sie 
zusammensetzen muß dann meldeste dich wieder. An die Arbeit!

von Karsten (Gast)


Lesenswert?

Ein-Draht-Seiltänzer schrieb:
> Ich versteh dein Problem. Du mußt das Ding ganz langsam und
> schrittweise
> vereinnahmen.
>

> Und erst wenn du so weit bist daß du reproduzierbar(!) ein paar Bits in
> den Händen hälst und absolut nicht mehr weiterweißt wie man sie
> zusammensetzen muß dann meldeste dich wieder. An die Arbeit!


Vielen Dank für die ermunternden Worte! Ich werde mich mal ran wagen und
so vorgehen wie Du meintest. Ich habe nur den Busmaster betrachtet und 
mir
wenig gedanken über den Sensor gemacht. Der Busmaster nimmt ja nur das 
Timing ab.

Erst mal vielen Dank an alle!

Grüße

Karsten

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
Noch kein Account? Hier anmelden.