delay: Use u8, decrementing loop
Use u8 instead of i16 as a delay can never be negative and should never block for a long period of time. Use a decrementing loop as SDCC generates more efficient code. Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
		
				
					committed by
					
						
						Jeremy Soller
					
				
			
			
				
	
			
			
			
						parent
						
							f9e4e25b05
						
					
				
				
					commit
					e86e18d4b1
				
			@@ -15,8 +15,8 @@ void delay_ticks(uint16_t ticks) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Start timer in mode 1
 | 
					    // Start timer in mode 1
 | 
				
			||||||
    TMOD = (TMOD & 0x0F) | 0x10;
 | 
					    TMOD = (TMOD & 0x0F) | 0x10;
 | 
				
			||||||
    TH1 = (unsigned char)(value >> 8);
 | 
					    TH1 = (uint8_t)(value >> 8);
 | 
				
			||||||
    TL1 = (unsigned char)value;
 | 
					    TL1 = (uint8_t)value;
 | 
				
			||||||
    TR1 = 1;
 | 
					    TR1 = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Wait until complete
 | 
					    // Wait until complete
 | 
				
			||||||
@@ -24,8 +24,8 @@ void delay_ticks(uint16_t ticks) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// This loops through delays of one ms in order to avoid overflow
 | 
					// This loops through delays of one ms in order to avoid overflow
 | 
				
			||||||
void delay_ms(int ms) {
 | 
					void delay_ms(uint8_t ms) {
 | 
				
			||||||
    for (int i = 0; i < ms; i++) {
 | 
					    for (uint8_t i = ms; i != 0; i--) {
 | 
				
			||||||
        delay_us(1000);
 | 
					        delay_us(1000);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,6 +17,6 @@ void delay_ticks(uint16_t ticks);
 | 
				
			|||||||
#define delay_ns(X) \
 | 
					#define delay_ns(X) \
 | 
				
			||||||
    delay_ticks((uint16_t)((((uint32_t)(X)) * 69UL + 89999UL) / 90000UL));
 | 
					    delay_ticks((uint16_t)((((uint32_t)(X)) * 69UL + 89999UL) / 90000UL));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void delay_ms(int ms);
 | 
					void delay_ms(uint8_t ms);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // _ARCH_DELAY_H
 | 
					#endif // _ARCH_DELAY_H
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user