Use runtime/volatile.T.ReplaceBits
Этот коммит содержится в:
родитель
01f5c51b77
коммит
ca1a282495
3 изменённых файлов: 50 добавлений и 50 удалений
|
@ -240,7 +240,7 @@ func (p Pin) SetInterrupt(change PinChange, callback func(Pin)) error {
|
||||||
addr = &sam.EIC.CONFIG1
|
addr = &sam.EIC.CONFIG1
|
||||||
}
|
}
|
||||||
pos := (extint % 8) * 4 // bit position in register
|
pos := (extint % 8) * 4 // bit position in register
|
||||||
addr.Set((addr.Get() &^ (0xf << pos)) | uint32(change)<<pos)
|
addr.ReplaceBits(uint32(change), 0xf, pos)
|
||||||
|
|
||||||
// Enable external interrupt for this pin.
|
// Enable external interrupt for this pin.
|
||||||
sam.EIC.INTENSET.Set(1 << extint)
|
sam.EIC.INTENSET.Set(1 << extint)
|
||||||
|
|
|
@ -264,37 +264,37 @@ func (p Pin) setPMux(val uint8) {
|
||||||
case 15:
|
case 15:
|
||||||
sam.PORT.PMUX0_15.Set(val)
|
sam.PORT.PMUX0_15.Set(val)
|
||||||
case 16:
|
case 16:
|
||||||
sam.PORT.PMUX1_0.Set(sam.PORT.PMUX1_0.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PMUX1_0.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 17:
|
case 17:
|
||||||
sam.PORT.PMUX1_0.Set(sam.PORT.PMUX1_0.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PMUX1_0.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 18:
|
case 18:
|
||||||
sam.PORT.PMUX1_0.Set(sam.PORT.PMUX1_0.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PMUX1_0.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 19:
|
case 19:
|
||||||
sam.PORT.PMUX1_0.Set(sam.PORT.PMUX1_0.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PMUX1_0.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 20:
|
case 20:
|
||||||
sam.PORT.PMUX1_4.Set(sam.PORT.PMUX1_4.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PMUX1_4.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 21:
|
case 21:
|
||||||
sam.PORT.PMUX1_4.Set(sam.PORT.PMUX1_4.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PMUX1_4.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 22:
|
case 22:
|
||||||
sam.PORT.PMUX1_4.Set(sam.PORT.PMUX1_4.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PMUX1_4.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 23:
|
case 23:
|
||||||
sam.PORT.PMUX1_4.Set(sam.PORT.PMUX1_4.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PMUX1_4.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 24:
|
case 24:
|
||||||
sam.PORT.PMUX1_8.Set(sam.PORT.PMUX1_8.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PMUX1_8.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 25:
|
case 25:
|
||||||
sam.PORT.PMUX1_8.Set(sam.PORT.PMUX1_8.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PMUX1_8.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 26:
|
case 26:
|
||||||
sam.PORT.PMUX1_8.Set(sam.PORT.PMUX1_8.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PMUX1_8.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 27:
|
case 27:
|
||||||
sam.PORT.PMUX1_8.Set(sam.PORT.PMUX1_8.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PMUX1_8.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 28:
|
case 28:
|
||||||
sam.PORT.PMUX1_12.Set(sam.PORT.PMUX1_12.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PMUX1_12.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 29:
|
case 29:
|
||||||
sam.PORT.PMUX1_12.Set(sam.PORT.PMUX1_12.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PMUX1_12.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 30:
|
case 30:
|
||||||
sam.PORT.PMUX1_12.Set(sam.PORT.PMUX1_12.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PMUX1_12.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 31:
|
case 31:
|
||||||
sam.PORT.PMUX1_12.Set(sam.PORT.PMUX1_12.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PMUX1_12.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -502,68 +502,68 @@ func (p Pin) setPinCfg(val uint8) {
|
||||||
case 31:
|
case 31:
|
||||||
sam.PORT.PINCFG0_31.Set(val)
|
sam.PORT.PINCFG0_31.Set(val)
|
||||||
case 32: // PB00
|
case 32: // PB00
|
||||||
sam.PORT.PINCFG1_0.Set(sam.PORT.PINCFG1_0.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_0.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 33: // PB01
|
case 33: // PB01
|
||||||
sam.PORT.PINCFG1_0.Set(sam.PORT.PINCFG1_0.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_0.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 34: // PB02
|
case 34: // PB02
|
||||||
sam.PORT.PINCFG1_0.Set(sam.PORT.PINCFG1_0.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_0.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 35: // PB03
|
case 35: // PB03
|
||||||
sam.PORT.PINCFG1_0.Set(sam.PORT.PINCFG1_0.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_0.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 36: // PB04
|
case 36: // PB04
|
||||||
sam.PORT.PINCFG1_4.Set(sam.PORT.PINCFG1_4.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_4.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 37: // PB05
|
case 37: // PB05
|
||||||
sam.PORT.PINCFG1_4.Set(sam.PORT.PINCFG1_4.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_4.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 38: // PB06
|
case 38: // PB06
|
||||||
sam.PORT.PINCFG1_4.Set(sam.PORT.PINCFG1_4.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_4.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 39: // PB07
|
case 39: // PB07
|
||||||
sam.PORT.PINCFG1_4.Set(sam.PORT.PINCFG1_4.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_4.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 40: // PB08
|
case 40: // PB08
|
||||||
sam.PORT.PINCFG1_8.Set(sam.PORT.PINCFG1_8.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_8.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 41: // PB09
|
case 41: // PB09
|
||||||
sam.PORT.PINCFG1_8.Set(sam.PORT.PINCFG1_8.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_8.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 42: // PB10
|
case 42: // PB10
|
||||||
sam.PORT.PINCFG1_8.Set(sam.PORT.PINCFG1_8.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_8.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 43: // PB11
|
case 43: // PB11
|
||||||
sam.PORT.PINCFG1_8.Set(sam.PORT.PINCFG1_8.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_8.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 44: // PB12
|
case 44: // PB12
|
||||||
sam.PORT.PINCFG1_12.Set(sam.PORT.PINCFG1_12.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_12.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 45: // PB13
|
case 45: // PB13
|
||||||
sam.PORT.PINCFG1_12.Set(sam.PORT.PINCFG1_12.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_12.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 46: // PB14
|
case 46: // PB14
|
||||||
sam.PORT.PINCFG1_12.Set(sam.PORT.PINCFG1_12.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_12.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 47: // PB15
|
case 47: // PB15
|
||||||
sam.PORT.PINCFG1_12.Set(sam.PORT.PINCFG1_12.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_12.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 48: // PB16
|
case 48: // PB16
|
||||||
sam.PORT.PINCFG1_16.Set(sam.PORT.PINCFG1_16.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_16.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 49: // PB17
|
case 49: // PB17
|
||||||
sam.PORT.PINCFG1_16.Set(sam.PORT.PINCFG1_16.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_16.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 50: // PB18
|
case 50: // PB18
|
||||||
sam.PORT.PINCFG1_16.Set(sam.PORT.PINCFG1_16.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_16.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 51: // PB19
|
case 51: // PB19
|
||||||
sam.PORT.PINCFG1_16.Set(sam.PORT.PINCFG1_16.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_16.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 52: // PB20
|
case 52: // PB20
|
||||||
sam.PORT.PINCFG1_20.Set(sam.PORT.PINCFG1_20.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_20.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 53: // PB21
|
case 53: // PB21
|
||||||
sam.PORT.PINCFG1_20.Set(sam.PORT.PINCFG1_20.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_20.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 54: // PB22
|
case 54: // PB22
|
||||||
sam.PORT.PINCFG1_20.Set(sam.PORT.PINCFG1_20.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_20.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 55: // PB23
|
case 55: // PB23
|
||||||
sam.PORT.PINCFG1_20.Set(sam.PORT.PINCFG1_20.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_20.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 56: // PB24
|
case 56: // PB24
|
||||||
sam.PORT.PINCFG1_24.Set(sam.PORT.PINCFG1_24.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_24.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 57: // PB25
|
case 57: // PB25
|
||||||
sam.PORT.PINCFG1_24.Set(sam.PORT.PINCFG1_24.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_24.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 58: // PB26
|
case 58: // PB26
|
||||||
sam.PORT.PINCFG1_24.Set(sam.PORT.PINCFG1_24.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_24.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 59: // PB27
|
case 59: // PB27
|
||||||
sam.PORT.PINCFG1_24.Set(sam.PORT.PINCFG1_24.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_24.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
case 60: // PB28
|
case 60: // PB28
|
||||||
sam.PORT.PINCFG1_28.Set(sam.PORT.PINCFG1_28.Get()&^(0xff<<0) | (uint32(val) << 0))
|
sam.PORT.PINCFG1_28.ReplaceBits(uint32(val), 0xff, 0)
|
||||||
case 61: // PB29
|
case 61: // PB29
|
||||||
sam.PORT.PINCFG1_28.Set(sam.PORT.PINCFG1_28.Get()&^(0xff<<8) | (uint32(val) << 8))
|
sam.PORT.PINCFG1_28.ReplaceBits(uint32(val), 0xff, 8)
|
||||||
case 62: // PB30
|
case 62: // PB30
|
||||||
sam.PORT.PINCFG1_28.Set(sam.PORT.PINCFG1_28.Get()&^(0xff<<16) | (uint32(val) << 16))
|
sam.PORT.PINCFG1_28.ReplaceBits(uint32(val), 0xff, 16)
|
||||||
case 63: // PB31
|
case 63: // PB31
|
||||||
sam.PORT.PINCFG1_28.Set(sam.PORT.PINCFG1_28.Get()&^(0xff<<24) | (uint32(val) << 24))
|
sam.PORT.PINCFG1_28.ReplaceBits(uint32(val), 0xff, 24)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -438,7 +438,7 @@ func (p Pin) SetInterrupt(change PinChange, callback func(Pin)) error {
|
||||||
addr = &sam.EIC.CONFIG[1]
|
addr = &sam.EIC.CONFIG[1]
|
||||||
}
|
}
|
||||||
pos := (extint % 8) * 4 // bit position in register
|
pos := (extint % 8) * 4 // bit position in register
|
||||||
addr.Set((addr.Get() &^ (0xf << pos)) | uint32(change)<<pos)
|
addr.ReplaceBits(uint32(change), 0xf, pos)
|
||||||
|
|
||||||
// Enable external interrupt for this pin.
|
// Enable external interrupt for this pin.
|
||||||
sam.EIC.INTENSET.Set(1 << extint)
|
sam.EIC.INTENSET.Set(1 << extint)
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче