avr: implement Get() function on AVR, and leave stubs for NRF and dummy machines

Signed-off-by: Ron Evans <ron@hybridgroup.com>
Этот коммит содержится в:
Ron Evans 2018-09-13 11:39:38 +02:00 коммит произвёл Ayke van Laethem
родитель ec50db729d
коммит ab6757fe11
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED
4 изменённых файлов: 49 добавлений и 0 удалений

28
src/examples/button/button.go Обычный файл
Просмотреть файл

@ -0,0 +1,28 @@
package main
import (
"machine"
"runtime"
)
// This example assumes that the button is connected to pin 8. Change the value
// below to use a different pin.
const buttonPin = 8
func main() {
led := machine.GPIO{machine.LED}
led.Configure(machine.GPIOConfig{Mode: machine.GPIO_OUTPUT})
button := machine.GPIO{buttonPin}
button.Configure(machine.GPIOConfig{Mode: machine.GPIO_INPUT})
for {
if button.Get() {
led.Low()
} else {
led.High()
}
runtime.Sleep(runtime.Millisecond * 10)
}
}

Просмотреть файл

@ -47,3 +47,14 @@ func (p GPIO) Set(value bool) {
}
}
}
// Get returns the current value of a GPIO pin.
func (p GPIO) Get() bool {
if p.Pin < 8 {
val := *avr.PIND & (1 << p.Pin)
return (val > 0)
} else {
val := *avr.PINB & (1 << (p.Pin - 8))
return (val > 0)
}
}

Просмотреть файл

@ -25,3 +25,7 @@ func (p GPIO) Configure(config GPIOConfig) {
func (p GPIO) Set(value bool) {
}
func (p GPIO) Get() bool {
return false
}

Просмотреть файл

@ -39,3 +39,9 @@ func (p GPIO) Set(high bool) {
nrf.P0.OUTCLR = 1 << p.Pin
}
}
// Get returns the current value of a GPIO pin.
func (p GPIO) Get() bool {
// TODO: implement
return false
}