Many changes from 2018
[owSlave2.git] / common / OWSet_ATTINYX4.s
index b50fde5..c019baf 100644 (file)
@@ -56,7 +56,7 @@
 #endif\r
 \r
 #define TIMER_INTERRUPT TIM0_OVF_vect\r
-#define PIN_INTERRIPT EXT_INT0_vect\r
+#define PIN_INTERRUPT EXT_INT0_vect\r
 \r
 \r
 //#define OWT_MIN_RESET 160 \r
@@ -70,7 +70,7 @@
 #define OWT_RESET2 30\r
 #define OWT_RESET_PRESENT 15\r
 #define OWT_PRESENT 60\r
-#define OWT_WRITE 16\r
+#define OWT_WRITE 15\r
 #define OWT_READ 5\r
 #define OWT_ZP_WAIT_LOW_TO 36  ; Zeit fuer die Maximale Lowzeit bei der Zerro Polling pruefung. Ist die Leitung laenger low, ist es vieleicht ein Reset \r
 #define OWT_ZP_WAIT_HIGH_TO 54 ; Zeit fuer die Maximale Hight zeit bis zu einem Low Impuls vom Master. Nach laengeren Pausen wird nicht mehr gepollt sondern der Interrup vererndet.\r
@@ -79,7 +79,7 @@
 #define OWT_RESET2 80\r
 #define OWT_RESET_PRESENT 30\r
 #define OWT_PRESENT 130\r
-#define OWT_WRITE 35\r
+#define OWT_WRITE 33\r
 #define OWT_READ 12\r
 #define OWT_ZP_WAIT_LOW_TO 60  ; Zeit fuer die Maximale Lowzeit bei der Zerro Polling pruefung. Ist die Leitung laenger low, ist es vieleicht ein Reset \r
 #define OWT_ZP_WAIT_HIGH_TO 90 ; Zeit fuer die Maximale Hight zeit bis zu einem Low Impuls vom Master. Nach laengeren Pausen wird nicht mehr gepollt sondern der Interrup vererndet.\r
        sbi DB_DDR,DB_PINN\r
 #endif\r
 .endm\r
+.macro JMP_FLASHER\r
+       ldi r_temp,0xC0\r
+       push r_temp\r
+       ldi r_temp,0x0E\r
+       push r_temp\r
+       ret ; Direkter Sprung zum Bootloader\r
+.endm\r
 \r
 \r
+.macro CHECK_BOOTLOADER_PIN  ;r_temp is pushed other Registers should be saved\r
+; check for bootloader jumper\r
+       ;vor allen anderen Registerconfigs\r
+#ifndef _NO_BOOTLOADER_PIN_    \r
+       ldi r_temp,(1<<PUD) ;enable pullup \r
+       out _SFR_IO_ADDR(MCUCR) ,r_temp\r
+       sbi _SFR_IO_ADDR(PORTA),PINA5 ;internal pullup on PINA5\r
+       sbi _SFR_IO_ADDR(PORTA),PINA4 ;internal pullup on PINA4\r
+       rcall spause\r
+       sbis _SFR_IO_ADDR(PINA),PINA5\r
+       rjmp owinit_botest_end  ;PinA5 nicht auf 1\r
+       sbis _SFR_IO_ADDR(PINA),PINA4\r
+       rjmp owinit_botest_end ;PinA4 nicht auf 1\r
+       cbi _SFR_IO_ADDR(PORTA),PINA4 \r
+       sbi _SFR_IO_ADDR(DDRA),PINA4  ;PINA4 AUSGANG und 0\r
+       rcall spause\r
+       sbic _SFR_IO_ADDR(PINA),PINA5 \r
+       rjmp owinit_botest_end ;PINA5 nicht 0.... nicht verbunden\r
+       cbi _SFR_IO_ADDR(DDRA),PINA4\r
+       JMP_FLASHER\r
+owinit_botest_end:\r
+#endif\r
+.endm\r
 \r