# Why again a new Microcontroller?
# Where are the main differences?
* STM32F3/F4
* RaspberryPico (RP2040)
* ArduinoUno (ATMega328P)
* ArduinoATMega
* ArduinoMicro/Nano
* ATtiny
## Table of Comparison
| Attributes | RP2040 | STM32-F3 | STM32L1 | ESP8266 | ArduinoMicro/ Nano |
| ------------------------ | ------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------ |
| Core | ARM Cortex M0+ | ARM Cortex M4 | ARM Cortex M3 | Tensilica LX106 | ATmega328P |
| Coprocessor | - | - | - | X | X |
| Core - max Speed | 133 MHz | 170 MHz | 32MHz | 80 MHz (up to 160 MHz) | 16 MHz |
| Core - Memory SRAM/Flash | 264KB | 40 KB /128 to 256 KB | 32 KB - 512 KB | 160 KB (36 KB available to user) | 32 KB (2 KB used for Bootloader) |
| **uC Components** | | | | | |
| ADC | x4 12-bit | 4 x 12-Bit ADCs (5 Msps) | 12-Bit | 10 bit | |
| DAC | - | 2 x DAC | 2x 12-Bit | X | |
| PWM | up to 16 | 31 - 33 | 4 | 4 | |
| Timer | | Advanced control 2(16 bit) / General purpose 5 (16 bit) 1 (32 bit) / Basic 2 (16 bit) | "11x timers: 1x 32-bit, 6x 16-bit with up to 4 IC/OC/PWM channels, 2x 16-bit basic timers, 2x watchdog timers (independent and window)" | N/A | |
| Interrupts | 26 | NVIC - 66 maskable interrupt - 16 priority levels | 56 maskable interrupt - 16 priority levels | 16 | |
| GPIO | "30 (eig 26 siehe Quelle ""jeffgeerling"")" | 8 Groups - Normal I/Os 20 - 5-volt tolerant I/Os 17 - Speed max. 36 MHz | 51-115 | 17 | 22 (6 of which are PWM) |
| **Consumption** | | | | | |
| Power overall | "92.8 mA, 0.33 W" | 21.8 mA (bei 24 MHz | Peripherals enabled) | 230 µA/MHz Run mode/11 µA Low-power run mode/1.15 µA standby mode + RTC | 70 mA (nur empfangen von WiFi Daten) |
| Power hibernation | "2 mA, 6 mW" | 2.8 mA (bei 24 MHz | Peripherals disabled) | "1mA, 16MHz, Peripherals disabled" | 20 µA |
| **Communication** | | | | | |
| SPI | 2 (OSPI) | "2 (3) SPI (18 Mbits/s)- half/full duplex I2S interface, 4 to 16 - programmable bit frames" | 8 | 2 | |
| I2C | 2 | "2 x I2C, standard (ut. 100 KHz), fast (ut. 400 KHz), fast mode + (ut. 1 MHz)" | 2 | 1 | |
| USART | 2 | 3 USART (9 Mbits/s) | 3 | X | |
| UART | 2 | 2 UART | 2 | 2 | |
# Toolchain and SDK on the fly
## Comparison to ArduinoIDE
+ CLI support
+ Features
+ Chip Support
+ Abstraction Layer support
+ CI proof
# Differences MicroPython and C/C++
* Performance/Power Consumption
* Type savety
* Avainable features
## Todos
### 20210224
- [x] Search for datasheets of uC and Cores
### 20210303
- [x] Fill the comparison table
- [ ] Init of template repository for fast and easy deployment
## Teams
### RP2040 - ARM Cortex M0
Borensky, Degold, Ulbel, Aksoy, Wachter
Datasheet: [9]
Amazon Pico:
### STM32F3 - ARM Cortex M4
Kupert, Haslinger, Dejan, Gessl
### ESP8266 - Tensilica LX106
Felber, Meier, Kolesik, Weiss
Datasheet: [Link](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf)
Amazon Nodmcu: [Link](https://www.amazon.de/-/en/AZDelivery-NodeMCU-ESP8266-ESP-12F-Development/dp/B0754HWZSQ/ref=sr_1_3?dchild=1&keywords=nodemcu&qid=1614438560&sr=8-3)
Nodmcu Tutorial for MicroPython and esptool:[Text](https://null-byte.wonderhowto.com/how-to/get-started-with-micropython-for-esp8266-microcontrollers-0210302/) / [Video](https://www.youtube.com/watch?v=j0hgKkwmSlw)
ESP8266 Micropython binaries: [Link](http://micropython.org/download/esp8266/)
### STM32L1 - ARM Cortex M3
Bruckner, Laback, Lehmann, Matschinegg, Shukhov
### TM4C1294/MSP430 - ARM Cortex M4F
Borko
### MicroPython / C / c++
Frühmann, Meth, Beier, Brugger
### ArduinoMicro/ Nano
Ceornea, Ganguly, Haas, Jindra
## Resources
* [1] https://www.raspberrypi.org/documentation/pico/getting-started/ (zuletzt besucht 02.03.2021)
* [2] https://datasheets.raspberrypi.org/pico/getting-started-with-pico.pdf (zuletzt besucht 02.03.2021)
* [3] https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf (zuletzt besucht 02.03.2021)
* [4] https://www.mikrocontroller.net/articles/ARM_Cortex_Mikrocontroller (zuletzt besucht 02.03.2021)
* [5] https://github.com/raspberrypi/pico-sdk (zuletzt besucht 02.03.2021)
* [6] https://www.elektormagazine.de/news/neu-raspberry-pi-pico-und-der-mikrocontroller-rp2040 (zuletzt besucht 02.03.2021)
* [7] https://socialcompare.com/en/comparison/syt5-embdev-5thoqzuz (zuletzt besucht 02.03.2021)
* [8] https://www.ti.com/microcontrollers-mcus-processors/microcontrollers/arm-based-microcontrollers/products.html#p887=ARM%20Cortex-M4F (zuletzt besucht 02.03.2021)
* [Y] https://hackaday.com/2021/01/20/raspberry-pi-enters-microcontroller-game-with-4-pico/ (zuletzt besucht 02.03.2021)
* [Y] https://www.tomshardware.com/features/raspberry-pi-pico-vs-arduino (zuletzt besucht 02.03.2021)
* [Y] https://www.jeffgeerling.com/blog/2021/raspberry-pi-pico-new-4-microcontroller (zuletzt besucht 02.03.2021)
### Datasheets and Overviews of uC
* [9] "ARM Cortex M0 | RP2040" [online](https://datasheets.raspberrypi.org/rp2040/rp2040-datasheet.pdf) | zuletzt besucht 02.03.2021
* [9.5] "RaspberryPi Pico Data Sheet" [online](https://datasheets.raspberrypi.org/pico/pico-datasheet.pdf) | zuletzt besucht 02.03.2021
* [10] "ARM Cortex M4 | STM32F405xx" [online](https://www.st.com/resource/en/datasheet/dm00037051.pdf) | zuletzt besucht 24.02.2021
* [11] "ARM Cortex M4 | STM32-F303" [online](https://www.st.com/resource/en/datasheet/stm32f303vc.pdf) | zuletzt besucht 24.02.2021
* [12] "ESP8266EX" | ESP8266EX [online](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf) | zuletzt besucht 03.03.2021
* [13] "ARM Cortex M3 | STM32L1" [online](https://www.st.com/resource/en/datasheet/stm32l162vd.pdf) | zuletzt besucht 03.03.2021
#### Datasheets of Cores
---
**Version** *20210303v3*