sam: add support for Atmel SAMD21 based ItsyBitsy M0

Signed-off-by: Ron Evans <ron@hybridgroup.com>
This commit is contained in:
Ron Evans
2019-01-13 21:45:18 +01:00
committed by Ayke van Laethem
parent 1f511786d3
commit e2be7ccf76
8 changed files with 393 additions and 1 deletions
+45
View File
@@ -0,0 +1,45 @@
// +build sam,atsamd21g18a
// Peripheral abstraction layer for the atsamd21g18.
//
// Datasheet:
// http://ww1.microchip.com/downloads/en/DeviceDoc/SAMD21-Family-DataSheet-DS40001882D.pdf
//
package machine
import (
"device/sam"
)
const CPU_FREQUENCY = 48000000
type GPIOMode uint8
const (
GPIO_INPUT = 0
GPIO_OUTPUT = 1
)
// Configure this pin with the given configuration.
func (p GPIO) Configure(config GPIOConfig) {
if config.Mode == GPIO_OUTPUT { // set output bit
sam.PORT.DIRSET0 = (1 << p.Pin)
} else {
sam.PORT.DIRCLR0 = (1 << p.Pin)
}
}
// Get returns the current value of a GPIO pin.
func (p GPIO) Get() bool {
return (sam.PORT.IN0>>p.Pin)&1 > 0
}
// Set the pin to high or low.
// Warning: only use this on an output pin!
func (p GPIO) Set(high bool) {
if high {
sam.PORT.OUTSET0 = (1 << p.Pin)
} else {
sam.PORT.OUTCLR0 = (1 << p.Pin)
}
}