Forum: Mikrocontroller und Digitale Elektronik 18B20 an AVR 1Wire Bitte helft mir die Lösung selbst herauszufinden


von C. H. (hedie)


Lesenswert?

Hallo


Ich beschäftige mich schon einige zeit mit den AVR's

Heute wollte ich mal einen Temperatursensor 18B20 von Dallas-Maxim
ansteuern und über UART ausgeben.

Da ich bis jetzt nur die basics von assembler kann also Port high low 
etc..
hab ich mir für den UART den beispiel code von hier geholt.

Funktioniert einwandfrei.

Da ich aber nun dachte, alles copy paste das kanns doch nicht sein
wollte ich mir die ansteuerung des 18B20 selbst erarbeiten.

Mit grosser freude kann ich nun sagen das ich ihn initialisieren konnte.
Doch leider ist hier auch schon ende....

Ich weiss nämlich nicht wie ich Hexdezimal CC zum Sensor übermittle
Fertigen Code möchte ich nicht... wenns geht wäre ich froh wenn ihr
mir tipps gebt wie man das am einfachsten löst.

Mein derzeitiger Code:
1
  ;1Wire Initialisieren
2
  ldi r18, 0xFF
3
  out DDRB, r18            ;PortB als ausgang
4
  out PORTB, r18
5
6
  cbi PORTB, 0            ;low setzen
7
  rcall wait480            ;480us lang Low setzen
8
  sbi PORTB, 0            ;High setzen
9
10
  ldi r18, 0x00            ;PortB als eingang
11
  out DDRB, r18
12
13
  rcall wait240            ;100us Warten
14
  sbic PINB, 0            ; Prüfen ob pin0 = low = erfolgreich initialisiert
15
  rjmp false
16
  rjmp true            
17
18
19
false:
20
ldi r18, 0xFF
21
out DDRC,r18
22
out PORTC,r18
23
cbi PORTC,1
24
rjmp loop1
25
 
26
27
true:
28
ldi r18, 0xFF
29
out DDRC,r18
30
out DDRB, r18
31
out PORTB, r18
32
out PORTC,r18
33
cbi PORTC,2
34
rjmp stop
35
36
stop:
37
rjmp stop

hier noch das Datenblatt 
http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf

danke schonmal

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.