Hallo, ich habe ein Problem mit dem DS18S20 Das Senden von befehlen klappt sehr gut. Reset funktioniert, bekomme rückmeldung. 44h auch, Spannung geht auf 2 V runter danach. Aber das einlesen funktiniert nicht richtig. bekomme nur FFh raus. Habe das Signal mal mit Oszi aufgenommen... Dir Routine zum lesen heisst TEMPE2: ldi r27,0x02 ; Zähler ldi r28,0 Ldi r22,0 ; LOW daten Ldi r23,0 ; HIGH daten Ldi r24,0 ; Zähler länge der Nachricht ;SBI PORTB,1 TEMP2: ldi r16,0xFF CBI PORTD,2 out DDRD, r16 ; D - EINGANG CBI PORTD,2 rcall W1ms SBI PORTD,2 rcall W1ms ldi r16,0 CBI PORTD,2 out DDRD, r16 ; D - EINGANG Inc r24 ; Zähler um eins erhöhen rcall W15ms inc r22 sbic PIND,2 ; wenn LOW-Flanke dec r22 CLC ROR r23 ROR r22 ;SBI PORTB,4 RCALL W90ms rcall W15ms rcall W15ms A1: CPI r24,16 ; Zähler alle Daten empfangen BRGE B1 Rjmp TEMP2 ; wenn nein dann springe zu anfang B1: ;SBI PORTB,0 ret so müsste das doch eigentlich funktionieren oder übersehe ich was Wäre gut wenn mir da jemand weiterhelfen könnte. DANKE
In dem Diagramm fehlt die Zeitachse und in deinem Codefetzen der Code für die Wartefunktionen und die Info mit wievielen MHz dein AVR rennt. Beides zusammen verhindert eine ausfürhliche Problemanalyse. Abgesehen davon könntest du die Problemanalyse vereinfachen, wenn du statt Registernamen symbolische Namen verwenden würdest. Dann diese Stelle > ldi r16,0xFF > CBI PORTD,2 > out DDRD, r16 ; D - EINGANG Jetzt ist der PORTD auf AUSGANG konfiguriert, anders als in deinem Kommentar! http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen#Eingabe Insgesamt wäre ein Flussdiagramm der Programmlogik hilfreicher als der Codefetzen. Mir scheint, dass diese im Argen liegt und die ungünstige Codierung das Problem dann verschlimmert.
Zeitachse ist zwar ungewöhnlich dargestellt, aber doch da??? wenn die Zeiten in Sekunden sind, stimmt irgendwas beim Timing nicht!
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.