Linux Git
[owSlave2.git] / programmer / programmer / programmer.asm
index 5a51e4e..b08cc96 100644 (file)
@@ -83,14 +83,14 @@ jreset:
 \r
 \r
 .ORG 0x0EC0\r
-//7552 Byte \r
+\r
 start: \r
                cli\r
                ldi temp,0\r
                mov zero,temp\r
-               set_clock 0x00 ;8mhz\r
+               set_clock 0x01 ;4mhz\r
                ldi mode,OWM_SLEEP\r
-               ldi temp,(1<<CS01) //1us\r
+               ldi temp,(1<<CS01) //2us\r
                out TCCR0B,temp\r
                ldi temp, HIGH(RAMEND) ; HIGH-Byte der obersten RAM-Adresse \r
                out SPH, temp \r
@@ -115,10 +115,11 @@ pro_copy_loop: ;copy ID on SRAM for better handling
 pro_loop:\r
                ;sbi PORTB,0\r
                owwl                            ;wait for line goes low (polling)\r
-               sbrs writelow,0         ;test of zero send\r
+               sbrc writelow,0         ;test of zero send\r
+               sbi OW_DDR,OW_PIN       ;yes pull line to low 2us faster\r
+               sbrs writelow,0     ;test egain 2us faster.....\r
                rjmp pro_loop1          ;no ? goes next\r
-               sbi OW_DDR,OW_PIN       ;yes pull line to low\r
-               ldi param,45            ;wait for 50 us\r
+               ldi param,20            ;wait for 50 us\r
                rcall wait_time\r
                clr writelow            ;reset write low indecator\r
                cbi OW_DDR,OW_PIN   ;release line\r
@@ -140,7 +141,7 @@ pro_loop_send1:  ;prebare next bit
                rjmp pro_loop_end\r
 \r
 pro_loop_resv:\r
-               ldi param,15  ;wait 15us\r
+               ldi param,7  ;wait 15us\r
                rcall wait_time\r
                lsr rwbyte\r
                ;cbi PORTB,0\r
@@ -158,7 +159,7 @@ pro_loop_end_test_reset:
                sbic OW_PINN,OW_PIN  //leitung wieder high\r
                rjmp pro_loop\r
                in temp,TCNT0\r
-               cpi temp,130\r
+               cpi temp,63\r
                brlo pro_loop_end_test_reset\r
                rcall pro_sleep_s2\r
                rjmp pro_loop\r
@@ -172,16 +173,16 @@ pro_sleep_s1:
                sbic OW_PINN,OW_PIN  //leitung wieder high\r
                ret\r
                in temp,TCNT0\r
-               cpi temp,200\r
+               cpi temp,100\r
                brlo pro_sleep_s1\r
                //leitung wieder high\r
 pro_sleep_s2:\r
                owwh \r
-               ldi param,40\r
+               ldi param,20\r
                rcall wait_time\r
                //Presents Impuls\r
                sbi OW_DDR,OW_PIN\r
-               ldi param,130\r
+               ldi param,75\r
                rcall wait_time\r
                cbi OW_DDR,OW_PIN\r
                //init read byte\r
@@ -190,7 +191,7 @@ pro_sleep_s2:
                clr smode\r
                ldi mode,OWM_READ_ROM_COMMAND\r
                //Wait for all other devices presents impuls finished\r
-               ldi param,40\r
+               ldi param,20\r
                rcall wait_time\r
                ret\r
 \r