Almost all pins on modern microcontrollers are configurable to some extent. All of our existing modules use the pins on the module port interface for digital communication of some kind, but the chip we used as the coprocessor on Tessel 2 is a lot more versatile than the chip on the original Tessel, so there are many more options for how to use the pins this time around:
- All of the digital protocols (SPI, I2C, UART) are where you would expect them to be on the module port.
- All pins (0-7) on both ports can be repurposed to be digital GPIO.
- On port A, one pin (#7, I believe) can serve as analog input.
- On port B, all IOs can serve as analog inputs, however, because pins 0 and 1 (the I2C pins) have pull resistors, they are less than desirable for most analog applications.
- Pin 7 on port B has true analog output capability (10 bit DAC).
All of the above is available via JS. Modifications to the coprocessor's C firmware would allow you to change the digital communication protocols on the ports to a certain extent (see the sections on SERCOMs and I/O Multiplexing and Considerations in the SAM datasheet for details).
Note that nothing designed with these changed functions would be backwards compatible with the original Tessel.