Title: Theory / Unimportant / CS / Programming / Rust / Discovery

Name: Microcontroller unit
Definition: What runs the code
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/index.html
Context: Embedded
Abbreviation: MCU

Name: A pin
Definition: Part of metal connecting a component to the board
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/index.html
Context: Embedded board

Name: A trace
Definition: A road in a board, connecting electricity
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/index.html
Context: Embedded board

Name: System on a Chip
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/index.html
Context: Embedded board
Abbreviation: SoC

Name: Radio Frequency
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/index.html
Context: Embedded board
Abbreviation: RF

Name: Peripheral Access Crate
Definition: a safe (ish) direct interface to the peripherals of the chip
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/terminology.html
Context: Embedded board
Abbreviation: PAC
Intuition: Lowest level, only useful to develop abstraction or if no abstraction fulfil our need

Name: Hardware abstraction layer
Definition: abstraction that is actually usable for someone who does not know about all the special behaviour of this chip
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/terminology.html
Context: Embedded board
Abbreviation: HAL

Name: Board support crate
Definition: abstract a whole board away at once
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/terminology.html
Context: Embedded board
Name2: Board Support Package

Name: embedded-hal
Definition: provide a set of traits that describe behaviour which is usually shared across all implementations of a specific peripheral in all the HALs
Page: https://docs.rust-embedded.org/discovery/microbit/04-meet-your-hardware/terminology.html
Context: Embedded board

Instruction: #![no_std]
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/index.html
Effect: Don't use the std crate
Language: rust

Instruction: #![no_main]
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/index.html
Effect: Do not use `main` expecting standard input. Instead use #[entry]
Language: rust

Typ: !
Meaning: return type of function that can't return
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/index.html
https://doc.rust-lang.org/book/ch19-04-advanced-types.html
Language: rust
Subtype of: every types

Instruction: #[entry]
fn main() -> ! {
  foo
}
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/index.html
Meaning: declare a function main, without argument, that can't return, and is executed when the controller receive energy
Language: rust
Context: microbit

Name: Flashing
Definition: Moving a program into persistent memory
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/flash-it.html
Context: microbit

Typ: Board
Meaning: Provide access to the microbit
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/flash-it.html
Language: Rust
Context: microbit

Typ: Pins
Meaning: Unused GPIO pins
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/flash-it.html
Language: Rust
Context: microbit

Typ: Buttons
Meaning: buttons
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/flash-it.html
Language: Rust
Context: microbit

Typ: I2CInternalPinss
Meaning: I2C internal bus pins

Typ: I2CEXternalPinss
Meaning: I2C external bus pins

Typ: UartPins
Meaning: UART to debugger pins

Instruction: Board::take()
Language: rust
Context: microbit
Returns: The board, if not already taken

Instruction: timer.delay_ms(n)
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/it-blinks.html
Effect: do nothing and wait n ms
Language: rust
Context: microbit

Instruction: display.show(&mut timer, lights, ms)
Page: https://docs.rust-embedded.org/discovery/microbit/05-led-roulette/it-blinks.html
Effect: turn off during ms (according to timer), the lights whose value are at 1 in the table lights
Language: rust
Context: microbit

Name: Universal Asynchronous receiver/transmitter
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/index.html
Context: microbit
Abbreviation: UART

Instruction: serial.write(char)
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/send-a-single-byte.html
Effect: Send char to the serial
Context: microbit

Instruction: serial.flush()
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/send-a-single-byte.html
Effect: Forces the serial port to write everythihng it buffered
Language: Rust
Context: microbit

Instruction: write!(serial, str)
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/send-a-single-byte.html
Effect: send str to serial
Language: Rust
Context: microbit

Instruction: serial.read()
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/send-a-single-byte.html
Effect: Receive a bit from serial
Language: Rust
Context: microbit

Instruction: nb::block!(foo)
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/send-a-single-byte.html
Effect: transform foo into a sync operation, and get its returned value
Language: Rust
Context: microbit

Name: An echo server
Definition: A server that simply repeats to the listener what it received
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/echo-server.html
Context: microbit

Typ: heapless::Type
Meaning: Same as std::Type, but with fixed capacity, allowed on the stack
Page: https://docs.rust-embedded.org/discovery/microbit/07-uart/echo-server.html
Context: microbit

Name: Inter-Integrated Circuit
Page: https://docs.rust-embedded.org/discovery/microbit/08-i2c/index.html
Context: microbit
Abbreviation: I2C

Name: Master-Slaves communication protocol
Definition: The master decides how to use the wire. It broadcast request to write/read to a specific slave, then does it, then broadcast STOP
Page: https://docs.rust-embedded.org/discovery/microbit/08-i2c/the-general-protocol.html
Context: microbit

Constant: WHO_AM_I_A
Meaning: Address of the accelerometer
Page: https://docs.rust-embedded.org/discovery/microbit/08-i2c/the-general-protocol.html
Context: microbit

Constant: WHO_AM_I_M
Meaning: Address of the magnetometer
Page: https://docs.rust-embedded.org/discovery/microbit/08-i2c/the-general-protocol.html
Context: microbit

Name: Two wire interface
Definition: An interface using a clock wire for synchronization and a data wire
Page: https://docs.rust-embedded.org/discovery/microbit/08-i2c/the-general-protocol.html
Context: microbit
Abbreviation: TWI

Name: Sensor fusion
Definition: Using multiple sensors to get more accurate data
Page: https://docs.rust-embedded.org/discovery/microbit/explore.html
Context: microbit