Ok, also so weit bin ich bis jetzt:

Code:
;Temperatursensor auf PortX, X (Einstellbar)
.equ Wire1_DDR  = DDRD
.equ Wire1_PORT = PORTD
.equ Wire1_PIN  = PIND
.equ Wire1_IO   = 4

;*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X
; Sensoradressen ermittlen
suche_Adressen:
	rcall reset
	rcall search_rom
	ret
;_________________________________________________________
; Temperatur eines Sensors einlesen
read_Temperatur1:
	rcall reset
	rcall skip_rom
	rcall convert_t
	rcall reset
	rcall skip_rom
	rcall read_scratchpad
	rcall reset
	ret

;_________________________________________________________
; *** Behandelte Unterprogramme ***
;_________________________________________________________
; -reset
; -search_rom*		; Sucht alle angeschlossenen Slaves
; -read_rom			; Liest 64Bit Adresse aus (nur bei einem Slave möglich)
; -match_rom*		; Ansprechen eines bestimmten Slaves
; -skip_rom			; Ansprechen aller Slaves
; -Alarm_search*	; Wie search_rom, nur das alle Slaves mit Alarmen antworten

; -convert_t		; Veranasst den Sensor eine neue Messung zu starten
; -write_scratchpad*; Um einen Slave zu Programmieren (TH, TL, ConfigReg)
; -read_scratchpad	; Liest einen Sensor aus
; -copy_scratchpad*	; Schreibt konfiguration einens Sensors in EEPROM
; -RecallEE*		; Keine Ahnung für was man das jemals braucht
; -Read_Power_Supply*;Keine Ahnung für was man das jemals braucht


; *... noch nicht fertig
;*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X
; Reset Impuls
reset:
	sbi Wire1_DDR, Wire1_IO
	cbi Wire1_PORT, Wire1_IO
	rcall Wait_500us
	cbi Wire1_DDR, Wire1_IO
	rcall Wait_70us
wait_puls:
	sbic Wire1_PIN, Wire1_IO
	rjmp wait_puls				;falls bus high zurück
wait_puls_end:		
	sbis Wire1_PIN, Wire1_IO
	rjmp wait_puls_end			;falls bus low zurück
	ret
;_________________________________________________________
; Suche
search_rom:
	rcall reset
	;!?!
	ret
;_________________________________________________________
; alle Sensoren
skip_rom:
	ldi temp, 0xCC
	rcall write_command		;read or write
	ret

;_________________________________________________________
; Ein bestimmter Sensor
match_rom:
	; !?!
	ret
;_________________________________________________________
; read rom 64bits=8byte
read_rom:
	ldi temp, 0x33
	rcall write_command
	; 64Bit abspeichern
	ret

;_________________________________________________________
; read_scratchpad(auslesen der 9byte)
read_scratchpad:
	ldi temp, 0xBE
	rcall write_command
	rcall lesen
	ret

;_________________________________________________________
; Convert---T temperaturmessung starten im ds
convert_t:
	ldi temp, 0x44
	rcall write_command
	rcall Wait_6us
	cbi Wire1_DDR, Wire1_IO
	rcall Wait_9us
	;	rcall		w750ms			;unterdrückung 85.00 im disp.
convert_t1:
	sbis Wire1_PIN, Wire1_IO
	rjmp convert_t1
	ret

;*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X*X
; Unterprogramme
; auslesen
lesen:
	rcall read_bit				;0
	sts temp_lsb,temp3
	rcall read_bit				;1
	sts temp_msb,temp3
	rcall read_bit				;2
	sts th_register,temp3
	rcall read_bit				;3
	sts tl_register,temp3
	rcall read_bit				;4
	sts res_byte4,temp3
	rcall read_bit				;5
	sts res_byte5,temp3
	rcall read_bit				;6
	sts count_remain,temp3
	rcall read_bit				;7
	sts count_per_c,temp3
	rcall read_bit				;8
	sts crc,temp3
	ret

;_________________________________________________________
; Unterprogramme
write_command:
	ldi temp2, 0x08
write_command1:
	sbrs temp,0
	rcall write_0
	sbrc temp,0
	rcall write_1
	ror temp
	dec temp2
	brne write_command1
	ret

write_1:
	cbi Wire1_PORT, Wire1_IO
	sbi Wire1_DDR, Wire1_IO
	rcall Wait_6us
	cbi Wire1_DDR, Wire1_IO
	rcall Wait_64us
	ret

write_0:
	cbi Wire1_PORT, Wire1_IO
	sbi Wire1_DDR, Wire1_IO
	rcall Wait_60us
	cbi Wire1_DDR, Wire1_IO
	rcall Wait_10us
	ret
;_________________________________________________________

read_bit:
	clr temp3			;datenwort in temp3
	ldi temp4, 0x08

read_bit0:
	ror temp3
	cbi Wire1_PORT, Wire1_IO
	sbi Wire1_DDR, Wire1_IO
	rcall Wait_6us
	cbi Wire1_DDR, Wire1_IO
	rcall Wait_9us
	sbis pind,0
	rjmp read_bit1		;0 lesen
	ldi temp2, 0x80	;1 lesen
	add temp3,temp2
	rjmp read_bit2

read_bit1:
	ldi temp2, 0x00
	add temp3,temp2

read_bit2:
	rcall Wait_55us
	dec temp4
	brne read_bit0
	ret
im Hauptprogramm muss man zusätzlich noch die SRAM speicheradressen initialisieren, und temp-temp4.
__________________________________________________ _________
Mit einem Temperatursensor könnte man das ganze schon verwenden, irgenwie ...
Ich will aber 2, also hab ich mir 2 lösungswege einfallen lassen:
- Entweder ich mach die 2 über einen Eingang und schreibe noch weiter an dem File,
- oder ich lege meinen 2ten Sensor auf einen anderen Eingang und lass auf dem ebenfalls die gleiche Routine durchlaufen.

Frage: Ist es überhaupt möglich an einer Leitung die 2 Sensoren räumlich zu unterscheiden?
__________________________________________________ _________
Entweder-Lösung:
Ich hab jetzt angefangen das Pdf zu lesen wo genau beschrieben steht wie man den search_rom befehl programmieren kann, und irgenwie schaltet mein Hirn nach einiger Zeit immer wieder aus,... übersteigt einfach mein Verständnis denke ich. 1. weils english ist, und 2. weils einfach zu kompliziert ist.
Naja, wenn ich das noch 1-2mal lese dann versteh ich vielleicht ein bischen was davon.
Wie kann ich z.B in einen Speicherbereich von 8Byte die einzelnen Byte so reinschreiben das ich sie nachher wieder geordnet auslesen kann (klingt nach einer blöden frage, aber ihr müsst verstehn, ich hab das noch nie gemacht mit SRAM)
Und wie Funktioniert dieser Search_rom befehl überhaupt?

- Reset Senden
- 0xF0 Senden (Search_Rom)
- Rest versteh ich schon nimma (irgenwas mit Slave sendet 0 oder 1 und darauf weiß man dann seine 64Bit adresse, kommt mir noch ein bissi spanisch vor)
__________________________________________________ _________
Oder-Lösung:
Ist nicht so schön, und mag ich eigentlich auch nicht ^^
__________________________________________________ _________

Naja, jedem der sich die Mühe macht das alles noch zu lesen: Danke
Vielleicht kann mir irgenwer ja bei der Logik zum Programmieren der Search_rom Funktion helfen. das Match_rom wird ja dann ähnlich gehn, wenn ich weiß wie man den SRAM wieder ausließt.

Danke schon mal im Voraus
Gerko