Hallo Ich habe auf einer Internetseite den angehängten code für einen DS18S20 gefunden, er funktioniert nur leider nicht(das programm ist nur zum testen, deshalb soll die print1 schleife nur eine 5 ausgeben) Der Sensor ist an PB0 mit 4,7k zwischen DQ und VCC. In der include datei stehen die Schleifen für das LC Display, das auch funktioniert. Bei jedem Drücken das Tasters sollte eine 2 auf dem LCD ausgegeben werden um zu sehen, ob das programm hängenbleibt. Dieses ist nach dem reset-pulse der Fall(hatte den Rest deaktiviert) und die print1 schleife wird nicht aufgerufen. Weiss jemand wo genau und warum das Programm hängt?? Bei dem, von dem ich das kopiert habe, scheint es funktioniert zu haben!! mfg Bastian Kriebel
Was sagt das Oszi denn, wieviel auf dem Bus passiert? Sieht der Reset aus, wie er sollte?
1 | write_command: ;gibt einen befehl aus, lsb zuerst |
2 | |
3 | sbrs befehl, 0 |
4 | rcall write_0 |
5 | sbrc befehl, 0 |
6 | rcall write_1 |
7 | |
8 | ror befehl ;nächstes bit |
9 | ldi temp1, 7 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
10 | |
11 | write_command_1: |
12 | sbrs befehl, 0 |
13 | rcall write_0 |
14 | sbrc befehl, 0 |
15 | rcall write_1 |
16 | ror befehl |
17 | dec temp1 ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
18 | brne write_command_1 |
19 | |
20 | ret |
Du kannst schlecht oben 7 in temp1 für die Anzahl der Durchgänge laden, wenn Du temp1 bei den Warte-Routinen wieder überschreibst. Würde denn nicht temp2 gehen?
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.