OneWire Protokoll

OP #3143278
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
Angehängte Dateien:
Gast #3143306
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.
Gast #3143318
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?
OP #3144009
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..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren