machine/atsamd21: add GPIO_INPUT_PULLUP and GPIO_INPUT_PULLDOWN GPIO pin config options
Signed-off-by: Ron Evans <ron@hybridgroup.com>
Этот коммит содержится в:
родитель
c56b2a45fa
коммит
34939ab422
1 изменённых файлов: 36 добавлений и 13 удалений
|
@ -21,19 +21,20 @@ const CPU_FREQUENCY = 48000000
|
||||||
type GPIOMode uint8
|
type GPIOMode uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
GPIO_ANALOG = 1
|
GPIO_ANALOG = 1
|
||||||
GPIO_SERCOM = 2
|
GPIO_SERCOM = 2
|
||||||
GPIO_SERCOM_ALT = 3
|
GPIO_SERCOM_ALT = 3
|
||||||
GPIO_TIMER = 4
|
GPIO_TIMER = 4
|
||||||
GPIO_TIMER_ALT = 5
|
GPIO_TIMER_ALT = 5
|
||||||
GPIO_COM = 6
|
GPIO_COM = 6
|
||||||
GPIO_AC_CLK = 7
|
GPIO_AC_CLK = 7
|
||||||
GPIO_DIGITAL = 8
|
GPIO_DIGITAL = 8
|
||||||
GPIO_INPUT = 9
|
GPIO_INPUT = 9
|
||||||
GPIO_INPUT_PULLUP = 10
|
GPIO_INPUT_PULLUP = 10
|
||||||
GPIO_OUTPUT = 11
|
GPIO_OUTPUT = 11
|
||||||
GPIO_PWM = GPIO_TIMER
|
GPIO_PWM = GPIO_TIMER
|
||||||
GPIO_PWM_ALT = GPIO_TIMER_ALT
|
GPIO_PWM_ALT = GPIO_TIMER_ALT
|
||||||
|
GPIO_INPUT_PULLDOWN = 12
|
||||||
)
|
)
|
||||||
|
|
||||||
// Hardware pins
|
// Hardware pins
|
||||||
|
@ -127,6 +128,28 @@ func (p GPIO) Configure(config GPIOConfig) {
|
||||||
p.setPinCfg(sam.PORT_PINCFG0_INEN)
|
p.setPinCfg(sam.PORT_PINCFG0_INEN)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case GPIO_INPUT_PULLDOWN:
|
||||||
|
if p.Pin < 32 {
|
||||||
|
sam.PORT.DIRCLR0 = (1 << p.Pin)
|
||||||
|
sam.PORT.OUTCLR0 = (1 << p.Pin)
|
||||||
|
p.setPinCfg(sam.PORT_PINCFG0_INEN | sam.PORT_PINCFG0_PULLEN)
|
||||||
|
} else {
|
||||||
|
sam.PORT.DIRCLR1 = (1<<p.Pin - 32)
|
||||||
|
sam.PORT.OUTCLR1 = (1<<p.Pin - 32)
|
||||||
|
p.setPinCfg(sam.PORT_PINCFG0_INEN | sam.PORT_PINCFG0_PULLEN)
|
||||||
|
}
|
||||||
|
|
||||||
|
case GPIO_INPUT_PULLUP:
|
||||||
|
if p.Pin < 32 {
|
||||||
|
sam.PORT.DIRCLR0 = (1 << p.Pin)
|
||||||
|
sam.PORT.OUTSET0 = (1 << p.Pin)
|
||||||
|
p.setPinCfg(sam.PORT_PINCFG0_INEN | sam.PORT_PINCFG0_PULLEN)
|
||||||
|
} else {
|
||||||
|
sam.PORT.DIRCLR1 = (1<<p.Pin - 32)
|
||||||
|
sam.PORT.OUTSET1 = (1<<p.Pin - 32)
|
||||||
|
p.setPinCfg(sam.PORT_PINCFG0_INEN | sam.PORT_PINCFG0_PULLEN)
|
||||||
|
}
|
||||||
|
|
||||||
case GPIO_SERCOM:
|
case GPIO_SERCOM:
|
||||||
if p.Pin&1 > 0 {
|
if p.Pin&1 > 0 {
|
||||||
// odd pin, so save the even pins
|
// odd pin, so save the even pins
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче