From 51105c680d5803aaa52d0fe1c3a878d377fa0774 Mon Sep 17 00:00:00 2001 From: sago35 Date: Wed, 3 Jun 2020 21:30:39 +0900 Subject: [PATCH 1/4] Add SAMD51 pins --- src/machine/machine_atsamd51.go | 64 +++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/machine/machine_atsamd51.go b/src/machine/machine_atsamd51.go index 786174442d..186a510c2e 100644 --- a/src/machine/machine_atsamd51.go +++ b/src/machine/machine_atsamd51.go @@ -130,6 +130,70 @@ const ( PB29 Pin = 61 PB30 Pin = 62 PB31 Pin = 63 + PC00 Pin = 64 + PC01 Pin = 65 + PC02 Pin = 66 + PC03 Pin = 67 + PC04 Pin = 68 + PC05 Pin = 69 + PC06 Pin = 70 + PC07 Pin = 71 + PC08 Pin = 72 + PC09 Pin = 73 + PC10 Pin = 74 + PC11 Pin = 75 + PC12 Pin = 76 + PC13 Pin = 77 + PC14 Pin = 78 + PC15 Pin = 79 + PC16 Pin = 80 + PC17 Pin = 81 + PC18 Pin = 82 + PC19 Pin = 83 + PC20 Pin = 84 + PC21 Pin = 85 + PC22 Pin = 86 + PC23 Pin = 87 + PC24 Pin = 88 + PC25 Pin = 89 + PC26 Pin = 90 + PC27 Pin = 91 + PC28 Pin = 92 + PC29 Pin = 93 + PC30 Pin = 94 + PC31 Pin = 95 + PD00 Pin = 96 + PD01 Pin = 97 + PD02 Pin = 98 + PD03 Pin = 99 + PD04 Pin = 100 + PD05 Pin = 101 + PD06 Pin = 102 + PD07 Pin = 103 + PD08 Pin = 104 + PD09 Pin = 105 + PD10 Pin = 106 + PD11 Pin = 107 + PD12 Pin = 108 + PD13 Pin = 109 + PD14 Pin = 110 + PD15 Pin = 111 + PD16 Pin = 112 + PD17 Pin = 113 + PD18 Pin = 114 + PD19 Pin = 115 + PD20 Pin = 116 + PD21 Pin = 117 + PD22 Pin = 118 + PD23 Pin = 119 + PD24 Pin = 120 + PD25 Pin = 121 + PD26 Pin = 122 + PD27 Pin = 123 + PD28 Pin = 124 + PD29 Pin = 125 + PD30 Pin = 126 + PD31 Pin = 127 ) const ( From 2aa811d4b3f2e65ae4c97807a6423e6654a7d563 Mon Sep 17 00:00:00 2001 From: sago35 Date: Sun, 24 May 2020 10:34:41 +0900 Subject: [PATCH 2/4] Add SAMD51 ADC settings --- src/machine/machine_atsamd51.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/machine/machine_atsamd51.go b/src/machine/machine_atsamd51.go index 186a510c2e..766fa97c87 100644 --- a/src/machine/machine_atsamd51.go +++ b/src/machine/machine_atsamd51.go @@ -810,7 +810,7 @@ func (a ADC) Get() uint16 { } func (a ADC) getADCBus() *sam.ADC_Type { - if a.Pin >= PB04 && a.Pin <= PB07 { + if (a.Pin >= PB04 && a.Pin <= PB07) || (a.Pin >= PC00) { return sam.ADC1 } return sam.ADC0 @@ -853,6 +853,24 @@ func (a ADC) getADCChannel() uint8 { return 8 case PB07: return 9 + + case PC00: + return 10 + case PC01: + return 11 + case PC02: + return 4 + case PC03: + return 5 + case PC30: + return 12 + case PC31: + return 13 + + case PD00: + return 14 + case PD01: + return 15 default: panic("Invalid ADC pin") } From 1d044b141e300f9aa95d54ff16a55217e05e3b50 Mon Sep 17 00:00:00 2001 From: sago35 Date: Wed, 3 Jun 2020 21:36:52 +0900 Subject: [PATCH 3/4] Add SAMD51 pin change interrupt settings --- src/machine/machine_atsamd51.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/machine/machine_atsamd51.go b/src/machine/machine_atsamd51.go index 766fa97c87..d8d62c7ff7 100644 --- a/src/machine/machine_atsamd51.go +++ b/src/machine/machine_atsamd51.go @@ -376,6 +376,22 @@ func (p Pin) SetInterrupt(change PinChange, callback func(Pin)) error { extint = 14 case PB29: extint = 15 + case PC07: + extint = 9 + case PD08: + extint = 3 + case PD09: + extint = 4 + case PD10: + extint = 5 + case PD11: + extint = 6 + case PD12: + extint = 7 + case PD20: + extint = 10 + case PD21: + extint = 11 default: // All other pins follow a normal pattern. extint = uint8(p) % 16 From af36cf4788a643292c41605d76441b11f4e49761 Mon Sep 17 00:00:00 2001 From: sago35 Date: Wed, 27 May 2020 23:53:04 +0900 Subject: [PATCH 4/4] Extend SAMD51 pinPadMapping --- src/machine/machine_atsamd51.go | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/machine/machine_atsamd51.go b/src/machine/machine_atsamd51.go index d8d62c7ff7..042b90d9d6 100644 --- a/src/machine/machine_atsamd51.go +++ b/src/machine/machine_atsamd51.go @@ -264,7 +264,7 @@ const ( // easy to check whether a nibble is set at all. // // Datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/60001507E.pdf -var pinPadMapping = [32]uint16{ +var pinPadMapping = [64]uint16{ // page 32 PA00 / 2: 0 | pinPadMapSERCOM1AltPad0, @@ -272,28 +272,28 @@ var pinPadMapping = [32]uint16{ PB08 / 2: 0 | pinPadMapSERCOM4AltPad0, PA04 / 2: 0 | pinPadMapSERCOM0AltPad0, PA06 / 2: 0 | pinPadMapSERCOM0AltPad2, - //PC04 / 2: pinPadMapSERCOM6Pad0 | 0, - //PC06 / 2: pinPadMapSERCOM6Pad2 | 0, + PC04 / 2: pinPadMapSERCOM6Pad0 | 0, + PC06 / 2: pinPadMapSERCOM6Pad2 | 0, PA08 / 2: pinPadMapSERCOM0Pad0 | pinPadMapSERCOM2AltPad1, PA10 / 2: pinPadMapSERCOM0Pad2 | pinPadMapSERCOM2AltPad2, PB10 / 2: 0 | pinPadMapSERCOM4AltPad2, PB12 / 2: pinPadMapSERCOM4Pad0 | 0, PB14 / 2: pinPadMapSERCOM4Pad2 | 0, - //PD08 / 2: pinPadMapSERCOM7Pad0 | pinPadMapSERCOM6AltPad1, - //PD10 / 2: pinPadMapSERCOM7Pad2 | pinPadMapSERCOM6AltPad2, - //PC10 / 2: pinPadMapSERCOM6Pad2 | pinPadMapSERCOM7AltPad2, + PD08 / 2: pinPadMapSERCOM7Pad0 | pinPadMapSERCOM6AltPad1, + PD10 / 2: pinPadMapSERCOM7Pad2 | pinPadMapSERCOM6AltPad2, + PC10 / 2: pinPadMapSERCOM6Pad2 | pinPadMapSERCOM7AltPad2, // page 34 - //PC12 / 2: pinPadMapSERCOM7Pad0 | pinPadMapSERCOM6AltPad1, - //PC14 / 2: pinPadMapSERCOM7Pad2 | pinPadMapSERCOM6AltPad2, + PC12 / 2: pinPadMapSERCOM7Pad0 | pinPadMapSERCOM6AltPad1, + PC14 / 2: pinPadMapSERCOM7Pad2 | pinPadMapSERCOM6AltPad2, PA12 / 2: pinPadMapSERCOM2Pad0 | pinPadMapSERCOM4AltPad1, PA14 / 2: pinPadMapSERCOM2Pad2 | pinPadMapSERCOM4AltPad2, PA16 / 2: pinPadMapSERCOM1Pad0 | pinPadMapSERCOM3AltPad1, PA18 / 2: pinPadMapSERCOM1Pad2 | pinPadMapSERCOM3AltPad2, - //PC16 / 2: pinPadMapSERCOM6Pad0 | pinPadMapSERCOM0AltPad1, - //PC18 / 2: pinPadMapSERCOM6Pad2 | pinPadMapSERCOM0AltPad2, - //PC22 / 2: pinPadMapSERCOM1Pad0 | pinPadMapSERCOM3AltPad1, - //PD20 / 2: pinPadMapSERCOM1Pad2 | pinPadMapSERCOM3AltPad2, + PC16 / 2: pinPadMapSERCOM6Pad0 | pinPadMapSERCOM0AltPad1, + PC18 / 2: pinPadMapSERCOM6Pad2 | pinPadMapSERCOM0AltPad2, + PC22 / 2: pinPadMapSERCOM1Pad0 | pinPadMapSERCOM3AltPad1, + PD20 / 2: pinPadMapSERCOM1Pad2 | pinPadMapSERCOM3AltPad2, PB16 / 2: pinPadMapSERCOM5Pad0 | 0, PB18 / 2: pinPadMapSERCOM5Pad2 | pinPadMapSERCOM7AltPad2, @@ -306,7 +306,7 @@ var pinPadMapping = [32]uint16{ PB24 / 2: pinPadMapSERCOM0Pad0 | pinPadMapSERCOM2AltPad1, PB26 / 2: pinPadMapSERCOM2Pad0 | pinPadMapSERCOM4AltPad1, PB28 / 2: pinPadMapSERCOM2Pad2 | pinPadMapSERCOM4AltPad2, - //PC24 / 2: pinPadMapSERCOM0Pad2 | pinPadMapSERCOM2AltPad2, + PC24 / 2: pinPadMapSERCOM0Pad2 | pinPadMapSERCOM2AltPad2, //PC26 / 2: pinPadMapSERCOM1Pad1 | 0, // note: PC26 doesn't support SERCOM, but PC27 does //PC28 / 2: pinPadMapSERCOM1Pad1 | 0, // note: PC29 doesn't exist in the datasheet? PA30 / 2: 0 | pinPadMapSERCOM1AltPad2,