update for atmega32a
This commit is contained in:
		
							parent
							
								
									12672aca8b
								
							
						
					
					
						commit
						7289b847db
					
				
					 2 changed files with 13 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -138,26 +138,28 @@ extern uint32_t default_layer_state;
 | 
			
		|||
 | 
			
		||||
//Function substitutions to ease GPIO manipulation
 | 
			
		||||
#ifdef __AVR__
 | 
			
		||||
    #define PIN_ADDRESS(p, offset) _SFR_IO8(ADDRESS_BASE + (p >> PORT_SHIFTER) + offset)
 | 
			
		||||
 | 
			
		||||
    #define pin_t uint8_t
 | 
			
		||||
    #define setPinInput(pin) _SFR_IO8((pin >> 4) + 1) &= ~ _BV(pin & 0xF)
 | 
			
		||||
    #define setPinInput(pin) PIN_ADDRESS(pin, 1) &= ~ _BV(pin & 0xF)
 | 
			
		||||
    #define setPinInputHigh(pin) ({\
 | 
			
		||||
            _SFR_IO8((pin >> 4) + 1) &= ~ _BV(pin & 0xF);\
 | 
			
		||||
            _SFR_IO8((pin >> 4) + 2) |=   _BV(pin & 0xF);\
 | 
			
		||||
            PIN_ADDRESS(pin, 1) &= ~ _BV(pin & 0xF);\
 | 
			
		||||
            PIN_ADDRESS(pin, 2) |=   _BV(pin & 0xF);\
 | 
			
		||||
            })
 | 
			
		||||
    #define setPinInputLow(pin) _Static_assert(0, "AVR Processors cannot impliment an input as pull low")
 | 
			
		||||
    #define setPinOutput(pin) _SFR_IO8((pin >> 4) + 1) |= _BV(pin & 0xF)
 | 
			
		||||
    #define setPinOutput(pin) PIN_ADDRESS(pin, 1) |= _BV(pin & 0xF)
 | 
			
		||||
 | 
			
		||||
    #define writePinHigh(pin) _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF)
 | 
			
		||||
    #define writePinLow(pin) _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF)
 | 
			
		||||
    #define writePinHigh(pin) PIN_ADDRESS(pin, 2) |=  _BV(pin & 0xF)
 | 
			
		||||
    #define writePinLow(pin) PIN_ADDRESS(pin, 2) &= ~_BV(pin & 0xF)
 | 
			
		||||
    static inline void writePin(pin_t pin, uint8_t level){
 | 
			
		||||
        if (level){
 | 
			
		||||
            _SFR_IO8((pin >> 4) + 2) |=  _BV(pin & 0xF);
 | 
			
		||||
            PIN_ADDRESS(pin, 2) |=  _BV(pin & 0xF);
 | 
			
		||||
        } else {
 | 
			
		||||
            _SFR_IO8((pin >> 4) + 2) &= ~_BV(pin & 0xF);
 | 
			
		||||
            PIN_ADDRESS(pin, 2) &= ~_BV(pin & 0xF);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #define readPin(pin) (_SFR_IO8(pin >> 4) & _BV(pin & 0xF))
 | 
			
		||||
    #define readPin(pin) (PIN_ADDRESS(pin, 0) & _BV(pin & 0xF))
 | 
			
		||||
#elif defined(PROTOCOL_CHIBIOS)
 | 
			
		||||
    #define pin_t ioline_t
 | 
			
		||||
    #define setPinInput(pin) palSetLineMode(pin, PAL_MODE_INPUT)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue