# Hardware debugging

## Microcontroller programming

### FabAcademy controller families
* Atiny
* SAMD
* RP2050
* ESP32

### Atiny
* Programming: UPDI
* Sandbox board: Adrianino
* 20Mhz

### SAMD
* programming: JTAG

### RP2040
dual core ARM controller.
hardcoded bootloader.

### ESP32 S3,C3,C6
* Wifi bluetooth
* RISC-V 160MHz

### choosing a programming language
* MicroPython, Not power efficient
* C/C++, Runs anywhere most power efficient
* Circuitpython, less efficient than micropython but easier
* Rust, Can work but its difficult. Same as C/C++


### First steps when using microcontroller
Make a LED blink




logic analyzer to see signal (wokwi) (similar to oscilloscope)

define your problem into smaller pieces (same goes for coding)


don't jump to conclusion. Most of the cases of hardware design fails is in the user. 
Write down everything you did.
rubber ducky method

Use a microscope 
Don't panic when something doesn't work
Check the 
* Traces
* Soldering
* Chips
* Connections

Tools:
* Multimeter
* * Parallel measurement (check the cables)
* * Continuity
* * Diodes
* Logic analyzer
* Oscilloscope




Step -> svg file