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
Ron Evans
3538ba943c
machine/samd21: move definitions for I2C interfaces into board files, since pin connections on each SAMD21-based board implementation can differ
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-03-04 20:54:13 +01:00
Ron Evans
543696eafc
machine/samd21: correct get/setPinCfg and get/setPMux functions for PORTB pins
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-03-04 20:53:07 +01:00
Ron Evans
34939ab422
machine/atsamd21: add GPIO_INPUT_PULLUP and GPIO_INPUT_PULLDOWN GPIO pin config options
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-02-24 21:20:59 +01:00
Ron Evans
c56b2a45fa
machine/samd21: handle PINMUX and PINCFG registers correctly for PORTB pins
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-02-24 17:43:11 +01:00
Ayke van Laethem
6e8df2fc40
samd21: define and use hardware pin numbers
2019-02-23 16:20:56 +01:00
Ayke van Laethem
902f40867f
samd21: add GPIO support for port B
2019-02-23 13:53:59 +01:00
Ron Evans
5438f16fcb
machine/atsamd21: support for USB CDC aka serial interface
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-02-23 13:34:00 +01:00
Ron Evans
942d4903ce
machine/atsamd21: extracts functionality for processor family into shared files.
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-02-20 14:16:09 +01:00