Ayke van Laethem
72acda22b0
machine: refactor PWM support
...
This commit refactors PWM support in the machine package to be more
flexible. The new API can be used to produce tones at a specific
frequency and control servos in a portable way, by abstracting over
counter widths and prescalers.
2021-04-06 20:36:10 +02:00
sago35
8d93b9e545
atsamd21, atsamd51, nrf52840: unify usbcdc code
2021-03-29 10:31:58 +02:00
Ayke van Laethem
90b42799a2
machine: make machine.I2C0 and similar objects pointers
...
This makes it possible to assign I2C objects (machine.I2C0,
machine.I2C1, etc.) without needing to take a pointer.
This is important especially in the future when I2C may be driven using
DMA and the machine.I2C type needs to store some state.
2021-03-29 02:02:04 +02:00
sago35
1571b8fd34
Add special handling when SPI Freq is 24Mhz
2021-03-19 17:34:49 +01:00
sago35
a41b72578b
atsamd21: improve SPI
2021-03-19 17:34:49 +01:00
sago35
52a20cf3bb
atsamd2x: avoid infinite loop when USBCDC is disconnected
2021-02-19 17:21:05 +01:00
sago35
ba634c4cc7
atsamd2x: improve USBCDC
2021-02-16 14:52:05 +01:00
ardnew
7842e6940d
Fix typo in ADC switch on config field Samples
2021-02-01 12:25:18 +01:00
ardnew
06f231468d
accept configuration struct for ADC parameters ( #1533 )
2021-01-31 14:54:27 -06:00
sago35
2540172cc5
atsam: add a length check to findPinPadMapping
2020-12-02 01:21:38 +01:00
Ayke van Laethem
7c4e83f5c0
machine: clarify caller's responsibility in SetInterrupt
2020-11-08 15:11:50 +01:00
sago35
9245337ecf
atsamd2x: fix BAUD value
2020-09-17 09:46:15 +02:00
deadprogram
d1c4ed664e
all: changeover to eliminate all direct use of master/slave terminology
...
Signed-off-by: deadprogram <ron@hybridgroup.com >
2020-07-23 22:45:23 +02:00
Ethan Reesor
ca1a282495
Use runtime/volatile.T.ReplaceBits
2020-07-14 06:08:08 +02:00
Ron Evans
a85df334e6
machine/samd21: basic implementation for DAC ( #1183 )
...
* machine/samd21: basic DAC implementation
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2020-07-04 18:16:25 +02:00
sago35
9a20af5b59
Add adc settings
2020-06-19 15:07:57 +02:00
Ayke van Laethem
c72f9eb08c
sam: add support for pin change interrupts
2020-05-28 11:20:33 +02:00
Ayke van Laethem
38fc340802
sam: return an error when an incorrect PWM pin is used
...
Previously it would trigger a nil pointer panic.
2020-05-13 19:19:45 +02:00
Ayke van Laethem
b8f5627c9f
machine: move errors.New calls to globals
...
Calling errors.New in an error path causes a heap allocation at an
already unfortunate moment. It is more efficient to create these error
values in globals and return these constant globals. If these errors are
not used (because the related code was optimized out), the globals will
also be optimized out.
2020-04-07 13:24:26 +02:00
Ron Evans
5d539df216
machine/atsamd21,atsamd51: clear the USB packet size before setting it again when sending
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2020-04-02 11:09:24 -04:00
Ron Evans
03fa9dd9b7
machine/atsamd21,atsamd51,nrf52840: refactor USB CDC device descriptor to reduce code duplication and heap allocations
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2020-03-29 17:54:58 +02:00
Ron Evans
06797b6d1a
machine/atsamd21,atsamd51,nrf52840: correct USB CDC composite descriptors
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2020-03-29 17:54:58 +02:00
Ayke van Laethem
c01f81144e
machine: avoid binary size regression after LLVM memory intrinsics
...
Somehow moving to LLVM memory intrinsics for calls like memcpy made the
machine.sendUSBPacket get inlined. This is a problem because it is
called in many different functions and it is just big enough to cause a
significant file size increase.
Adding //go:noinline solves this problem and gets the examples/blinky1
program below the file size it was before this change (tested:
itsybitsy-m0, itsybitsy-m4, circuitplay-bluefruit).
2020-03-27 21:00:54 +01:00
Ron Evans
c03e3616a2
machine/atsamd21 and atsamd51: corrections needed to return valid UCB CDC device and string descriptors
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2020-03-18 12:08:15 +01:00
Ayke van Laethem
a5ed993f8d
all: add compiler support for interrupts
...
This commit lets the compiler know about interrupts and allows
optimizations to be performed based on that: interrupts are eliminated
when they appear to be unused in a program. This is done with a new
pseudo-call (runtime/interrupt.New) that is treated specially by the
compiler.
2020-01-20 21:19:12 +01:00
Ayke van Laethem
768c652468
machine: rename CPU_FREQUENCY -> CPUFrequency()
...
These all-caps constants aren't in the Go style, so rename it to
CPUFrequency (which is more aligned with Go style). Additionally, make
it a function so that it is possible to add support for changing the
frequency in the future.
Tested by running `make smoketest`. None of the outputs did change.
2019-12-16 20:34:39 +01:00
Ayke van Laethem
39d21e21f1
targets: simulate Circuit Playground Express in play.tinygo.org
...
This requires a number of changes to atsamd21 code. It's not a very
clean separation, but I couldn't come up with a better one.
2019-12-08 13:11:39 +01:00
Mark Glines
00f745e351
runtime/atsamd21: i2s initialization fixes
2019-11-19 21:48:34 +01:00
Ayke van Laethem
4397152108
machine/samd21: switch UART to use new pin configuration
...
This allows all possible UART pin configurations to be used and avoids
some tricky configuration.
2019-10-07 17:49:52 +02:00
Ayke van Laethem
d266e44bc5
machine/samd21: use pins specified in I2CConfig
...
Instead of configuring machine.I2C0, machine.I2C1, etc. statically,
allow the pins to be set using machine.I2CConfig. This will also
automatically configure the correct pin mode for each pin instead of
having to specify that manually.
2019-10-07 17:25:49 +02:00
Jaden Weiss
8fe126b1f6
raise timeouts on USB on atsamd and fix slice sizing
2019-10-06 13:25:55 +02:00
Ayke van Laethem
3fa926c512
machine/atsamd21: refactor SPI pin handling to only look at pin numbers
...
Pin mode and pad numbers are automatically calculated from the pin
numbers, returning an error if no pinout could be found.
2019-10-01 21:31:00 +02:00
Ron Evans
c16e07469b
machine/samd21,samd51: remove use of binary package to avoid reflection and reduce binary size
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-09-24 19:41:34 +02:00
Ron Evans
f5fd49bb74
machine/samd21: use PinMode for SPI SERCOM peripheral to allow for more configuration options on boards like Arduino Nano33-IoT that have many predefined pin mappings
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-09-17 21:28:05 +02:00
Ron Evans
7d481c179f
machine/atsamd21: uses different required magic values for BOSSA and UF2 bootloaders
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-09-14 16:18:30 +02:00
Ron Evans
69aaea44a0
machine/atsamd21: Add support for bootloader reset/programming and correct error in receiving endpoint 0 data for CDC Set Line Coding changes, implementing system reset on switch to 1200 baud connection speed with DTR false.
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-09-14 16:18:30 +02:00
Ron Evans
e26f0b35e3
machine/atsamd21: correct order of params for USB CDC descriptor
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-09-06 14:24:32 +02:00
Ron Evans
4ee26fd54b
machine/atsamd21: correct issue with invalid first reading coming from ADC
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-09-06 14:22:24 +02:00
BCG
8a5fa51f60
Updated SPI pins so that they are configurable, enabling multiple SPI sercoms for ATSAMD21
2019-08-28 11:19:52 +02:00
Ron Evans
fc9188a298
machine/samd21/arduino-nano33: adds support for Arduino Nano33 IoT along with mapping to NINA-W102 WiFi chip.
...
Also adds DTR and RTS functions along with timeouts to USBCDC functions to prevent lockups.
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-07-07 18:09:05 +02:00
Ron Evans
2504754325
machine/samd21: use HasBits() method to simplify bit comparisons
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-05-27 18:43:11 +02:00
Ayke van Laethem
94b8214529
machine: refactor pins to be of Pin type
2019-05-26 20:48:50 +02:00
Ron Evans
de032cddd2
machine/sam: Refactor all machine/runtime code to use new volatile package/API
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-05-19 19:53:11 +02:00
Martin Treml
fc2ed2bdd0
[Board] Adafruit Trinket ( #333 )
...
* Add support for Adafruit Trinket-M0 board
2019-05-14 19:30:39 +02:00
Ron Evans
d90f1947d9
machine/samd21: Initial implementation of I2S hardware interface using Circuit Playground Express
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-05-12 21:51:07 +02:00
Ron Evans
b2e96fc35a
machine/atsamd21: select internal ground for ADC and scale result correctly to 16-bit
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-04-22 07:59:35 +02:00
Ron Evans
8d3b5a58d1
machine/atsamd21: correct pad/pin handling when using both UART and USBCDC interfaces at same time
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-04-17 22:50:08 +02:00
Ron Evans
ae4ead8690
machine/circuitplay: correct pin and pin mode mapping for both i2c0 (external) and i2c1 (internal) buses
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-04-05 14:31:26 +02:00
Ron Evans
9d6df2b4c7
machine/samd21: implement ADC
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-03-06 17:01:16 +01:00
Ron Evans
665c3bdaa6
machine/samd21: implement SPI interface for currently supported SAMD21 boards
...
Signed-off-by: Ron Evans <ron@hybridgroup.com >
2019-03-04 21:47:09 +01:00