Manually pull PDI clock pin high for 1ms before disabling PDI mode in the AVRISP-MKII project, to ensure that the PDI bus is disabled in the target and /RESET functionality restored.
This commit is contained in:
		
							parent
							
								
									eb99b1ec90
								
							
						
					
					
						commit
						2059fd8b1a
					
				
					 2 changed files with 8 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -230,6 +230,10 @@ void XPROGTarget_DisableTargetPDI(void)
 | 
			
		|||
	XPROGTarget_SetRxMode();
 | 
			
		||||
 | 
			
		||||
#if defined(XPROG_VIA_HARDWARE_USART)
 | 
			
		||||
	/* Set /RESET high for a one millisecond to ensure target device is restarted */
 | 
			
		||||
	PORTD |= (1 << 5);
 | 
			
		||||
	_delay_ms(1);
 | 
			
		||||
 | 
			
		||||
	/* Turn off receiver and transmitter of the USART, clear settings */
 | 
			
		||||
	UCSR1A |= (1 << TXC1) | (1 << RXC1);
 | 
			
		||||
	UCSR1B  = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -239,6 +243,10 @@ void XPROGTarget_DisableTargetPDI(void)
 | 
			
		|||
	DDRD  &= ~((1 << 5) | (1 << 3));
 | 
			
		||||
	PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
 | 
			
		||||
#else
 | 
			
		||||
	/* Set /RESET high for a one millisecond to ensure target device is restarted */
 | 
			
		||||
	BITBANG_PDICLOCK_PORT |= BITBANG_PDICLOCK_MASK;
 | 
			
		||||
	_delay_ms(1);
 | 
			
		||||
 | 
			
		||||
	/* Set DATA and CLOCK lines to inputs */
 | 
			
		||||
	BITBANG_PDIDATA_DDR   &= ~BITBANG_PDIDATA_MASK;
 | 
			
		||||
	BITBANG_PDICLOCK_DDR  &= ~BITBANG_PDICLOCK_MASK;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue