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