Jimmy:Nej inte direkt, jag har fått lusläsa databladen och rätt troligt är att det inte kommer fungera om man har en "riktig" onewiremaster (nu är det ju jag som sitter på den och kan ändra lite efter behov).
För att vara riktigt säker skulle man ha någon form av shiftregister eller nåt för att kunna avlasta PICen en aning. Det är väldigt tajt nu och det finns inte allt för mycket till godo även fast PICen körs på högsta möjliga INTOSC (32 MHz).  
Det som krävs är att man är envis och har ett oscilloskop. Utöver detta använde jag bara databladet till DS1820.
En sak som är bra att veta är att DS1820 har ganska stor kapacitans på sin ingång vilket PICen inte har. Jag körde med en extra sensor i labbplattan på ingången för att inte missa detta. MEN då svarar ju även denna på signaler  
Sen har jag förenklat bort allt annat än vad som krävs för att få funktion att implementera alla DS1820s funktioner orkar jag helt enkelt inte. Nu mottar jag bara funktionerna i exakt den ordning jag vet att de kommer.
Däremot CRC kan jag verkligen inte förstå hur det skulle genereras så jag hittade 
denna sida och tack vare den här koden så fixade sig även detta:
Kod: Markera allt
CALC_CRC_BYTE: ; applies bit by bit to shift reigister algorithm
     MOVLW  .8
     MOVWF  N
     MOVF   IBYTE, W
     MOVWF  TEMP_1         	; copy IBYTE to TEMP
CALC_CRC_BYTE_1:
     MOVF   TEMP_1, W
     ANDLW  01H       		; isolate least significant bit
     MOVWF  DATA_BIT
     CALL   CALC_CRC_BIT   
     RRF    TEMP_1, F 		; next data bit now in least sig bit
     DECFSZ N, F         	; do this for each of the eight bits
     GOTO   CALC_CRC_BYTE_1
     RETURN
CALC_CRC_BIT:
     MOVF   DATA_BIT, W    	; calculate the feed back bit
     XORWF  SHIFT_REG, W
     ANDLW  01H
     MOVWF  FB
     BCF    STATUS, C 		; shift_reg = shift_reg >> 1
     RRF    SHIFT_REG, F
     BTFSS  FB, 0
     GOTO   CALC_CRC_BIT_DONE   ; if FB was zero, we are done
     MOVLW  8CH			; otherwise, invert bits 7, 3 and 2
     XORWF  SHIFT_REG, F
CALC_CRC_BIT_DONE:  
     RETURN
Fungerar som så att man rensar SHIFT_REG sen skickar man in varenda byte i IBYTE. Vill man således kalkylera en CRC byte så skickar man in allt data utom sista (som man ju skall räkna ut) denna byte ligger då i SHIFT_REG. För att kontrollera skickar man in CRC byten som sista och är då SHIFT_REG=0 så har man reducerat chansen att något är fel till 1 på 256 
CRC är ett måste då även den allra bästa kod jag kan presentera inte är i närheten av så stabil som en riktig onewire-enhet.  
Vart långt detta  

 får ta och posta bilderna i nytt inlägg.