53 строки
1,2 КиБ
Go
53 строки
1,2 КиБ
Go
// +build sam,atsamd51,atsamd51g19
|
|
|
|
// Peripheral abstraction layer for the atsamd51.
|
|
//
|
|
// Datasheet:
|
|
// http://ww1.microchip.com/downloads/en/DeviceDoc/60001507C.pdf
|
|
//
|
|
package machine
|
|
|
|
import "device/sam"
|
|
|
|
const HSRAM_SIZE = 0x00030000
|
|
|
|
// InitPWM initializes the PWM interface.
|
|
func InitPWM() {
|
|
// turn on timer clocks used for PWM
|
|
sam.MCLK.APBBMASK.SetBits(sam.MCLK_APBBMASK_TCC0_ | sam.MCLK_APBBMASK_TCC1_)
|
|
sam.MCLK.APBCMASK.SetBits(sam.MCLK_APBCMASK_TCC2_)
|
|
|
|
//use clock generator 0
|
|
sam.GCLK.PCHCTRL[sam.PCHCTRL_GCLK_TCC0].Set((sam.GCLK_PCHCTRL_GEN_GCLK0 << sam.GCLK_PCHCTRL_GEN_Pos) |
|
|
sam.GCLK_PCHCTRL_CHEN)
|
|
sam.GCLK.PCHCTRL[sam.PCHCTRL_GCLK_TCC2].Set((sam.GCLK_PCHCTRL_GEN_GCLK0 << sam.GCLK_PCHCTRL_GEN_Pos) |
|
|
sam.GCLK_PCHCTRL_CHEN)
|
|
}
|
|
|
|
// getTimer returns the timer to be used for PWM on this pin
|
|
func (pwm PWM) getTimer() *sam.TCC_Type {
|
|
switch pwm.Pin {
|
|
case PA14:
|
|
return sam.TCC2
|
|
case PA15:
|
|
return sam.TCC2
|
|
case PA16:
|
|
return sam.TCC1
|
|
case PA17:
|
|
return sam.TCC1
|
|
case PA18:
|
|
return sam.TCC1
|
|
case PA19:
|
|
return sam.TCC1
|
|
case PA20:
|
|
return sam.TCC0
|
|
case PA21:
|
|
return sam.TCC0
|
|
case PA22:
|
|
return sam.TCC0
|
|
case PA23:
|
|
return sam.TCC0
|
|
default:
|
|
return nil // not supported on this pin
|
|
}
|
|
}
|