Forum: Mikrocontroller und Digitale Elektronik OneWire Protokoll


von Marc A. (mark2013)


Angehängte Dateien:

Lesenswert?

Hallo,
ich versuche ein 1-Draht Protokoll in C zu schreiben(Atmega16 , 
fosz=8MHz).
Ich orientiere mich an dem Projekt 
Beitrag "1-Wire-Bus-Projekt: DS1820  DS18S20  DS2450  DS2408  unter C und 8051".

Ich hoffe jemand kann mir sagen , was daran nicht stimmt.
Vorallem bei den Funktionen zum Lesen und schreiben der Bits auf dem 
Bus.

Danke im Vorraus ;D

von Purzel H. (hacky)


Lesenswert?

Was steht denn im Datenblatt des betreffenden Bausteins ?

von Marc A. (mark2013)


Lesenswert?

Der Baustein ist ein Temperatursensor (DS18S20
High-Precision 1-Wire Digital Thermometer).

von Marc A. (mark2013)


Lesenswert?


von eProfi (Gast)


Lesenswert?

> Ich hoffe jemand kann mir sagen , was daran nicht stimmt.
> Vorallem bei den Funktionen zum Lesen und schreiben der Bits
> auf dem Bus.

Da hoffst Du vergebens, nicht weil es hier keine Leute gäbe, die das 
könnten, sondern weil Du viel zu wenig Angaben machst, was geht, was 
nicht geht, was Du schon unternommen hast etc.
Ich müsste jetzt einen Testaufbau machen, das File kompilieren, den Oszi 
anwerfen, etc.   Glaubst Du, das macht jemand?

Gezielte Fragen werden hier gern beantwortet.
aber nicht: macht das mal für mich.

Noch dazu, wo es tausendfach getesteten funktionierenden Code gibt.

von Michael A. (Gast)


Lesenswert?

mark S. schrieb:
> Ich hoffe jemand kann mir sagen , was daran nicht stimmt.

Was soll diese Funktion
1
void _delay(unsigned char delay)
2
{
3
  unsigned char i;
4
  for(i=0; i<delay; i++);
5
}
Wie soll die funktion definierte Verzögerungszeiten liefern, wenn die 
CPU-Frequenz nicht berücksichtigt ist. Wozu gibt es in der delay.h die 
Funktion delay_us? Hast du die Compileroptimierung entsprechend den 
Angaben in der delay.h eingestellt?

von Marc A. (mark2013)


Lesenswert?

Hallo eProfi,

danke für deinen Beitrag.
Das Problem ist , dass mir schon bei der Master Reset Funktion eine '0' 
zurückgegeben wird. Das heisst kein Slave am Bus.
1.Ich vermute mal das das ein Timing Problem ist,doch wie kann ich das 
Überprüfen?

2.Oder ist es sinnvoller mit Timern zu arbeiten?

3.Ist die Funktion ReadBit() soweit korrekt, oder muss ich hier noch was 
wegen den PullUp Widerstand beachten?

Danke für euere Antworten..

von Marc A. (mark2013)


Angehängte Dateien:

Lesenswert?

Hier noch mal der Code mit delay...() Funtionen

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.