@@ -224,16 +224,17 @@ ISP_CONTROL_PORT&=~(1<<ISP_CONTROL_SCK); // Low to start
224
224
225
225
ISP_CONTROL_DDR &=~(1 <<ISP_CONTROL_MISO ); // MISO as input
226
226
ISP_CONTROL_PORT &=~(1 <<ISP_CONTROL_MISO ); // No pullup (?)
227
+ //ISP_CONTROL_PORT|=(1<<ISP_CONTROL_MISO); // pullup (?)
227
228
228
229
ISP_CONTROL_DDR |=(1 <<ISP_CONTROL_MOSI ); // MOSI as output
229
230
ISP_CONTROL_PORT &=~(1 <<ISP_CONTROL_MOSI ); // Low to start
230
231
231
232
uint8_t tries = 0 ;
232
233
while (TRUE) {
233
234
delay_ms (50 );
234
- ISP_CONTROL_PORT |=(1 <<ISP_SPI_SEL_CS ); // Positive pulse on RESET now that SCK is clean (ATMega328p datasheet 25.8.2)
235
+ ISP_SEL_PORT |=(1 <<ISP_SPI_SEL_CS ); // Positive pulse on RESET now that SCK is clean (ATMega328p datasheet 25.8.2)
235
236
delay_ms (2 ); // At least 2 clock cycles (AtMega8 datasheet)
236
- ISP_CONTROL_PORT &=~(1 <<ISP_SPI_SEL_CS );
237
+ ISP_SEL_PORT &=~(1 <<ISP_SPI_SEL_CS );
237
238
delay_ms (40 ); // >20 ms required (AtMega8 datasheet)
238
239
239
240
sendByte (0xAC );
@@ -256,7 +257,7 @@ return FALSE; // SUCCESS
256
257
void ISPquiescent () {
257
258
258
259
// Tristate everything - inputs without pullups
259
- // Target device will only reset if it has its own pull up circuit on reset.
260
+ // Target device will only exit reset if it has its own pull up circuit on reset.
260
261
// But it probably wouldn't work anyway if it didn't
261
262
262
263
ISP_CONTROL_DDR &=~(1 <<ISP_CONTROL_SCK );
@@ -267,8 +268,9 @@ ISP_SEL_DDR&=~(1<<ISP_SPI_SEL_CS);
267
268
ISP_CONTROL_PORT &=~(1 <<ISP_CONTROL_SCK );
268
269
ISP_CONTROL_PORT &=~(1 <<ISP_CONTROL_MISO );
269
270
ISP_CONTROL_PORT &=~(1 <<ISP_CONTROL_MOSI );
270
- ISP_SEL_PORT &=~(1 <<ISP_SPI_SEL_CS );
271
+
272
+ ISP_SEL_PORT &=~(1 <<ISP_SPI_SEL_CS ); // Reset is active low. Tristate, No pullup.
271
273
272
274
ISP_state = ISP_QUIESCENT ;
273
275
}
274
- #endif
276
+ #endif
0 commit comments