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