Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions course/en/21-digital-electronics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Numbers in digital electronics

Digital electronics connects bit patterns to physical signals, registers, measurements and protocols. Numbers do not merely describe mathematics: they control pins and encode observations of the physical world.

## PREDICT

If an 8-bit GPIO register contains `0x81`, which bits are set?

## STEP — logical and physical levels

Logical zero and one are abstractions. Physical circuits use voltage ranges interpreted as LOW and HIGH; exact thresholds come from the component datasheet.

Signals can be active-low, meaning the asserted function corresponds to an electrically LOW line. Naming conventions vary.

## GPIO registers and masks

For `PORT = 10100001₂ = 0xA1`, individual bits may control separate functions.

Typical software operations include setting a bit with `PORT |= (1 << 3)`, clearing it with `PORT &= ~(1 << 3)`, and toggling it with XOR.

Real hardware must be checked against its datasheet. Some registers provide dedicated SET/CLEAR aliases, write-one-to-clear flags or other semantics for which ordinary read-modify-write is inappropriate.

## Datasheets and register maps

Register documentation commonly specifies addresses or offsets, bit positions, field widths, reset values, access properties and meanings of encoded field values.

A value such as `0x82` is only meaningful once its register and field definitions are known.

## ADC and DAC

An idealized N-bit ADC provides (2^N) digital codes. A 10-bit converter has 1024 codes, usually numbered 0 through 1023.

A simple idealized unipolar conversion can be approximated by

`V ≈ code / (2^N - 1) × Vref`

but the exact transfer function, reference, tolerances and endpoint conventions come from the datasheet.

A DAC maps digital codes in the opposite direction toward an analog output; its width likewise determines the number of available codes.

## Logic analyzers

Logic analyzers capture digital samples and may display bits, bytes, hexadecimal values, timestamps or decoded UART/SPI/I²C fields.

The byte `10100101₂ = 0xA5` might be a command, address, flags or payload. Protocol context supplies meaning. Serial analysis may additionally require bit order, clocking, framing and multi-byte byte order.

## OBSERVE

Hardware registers and protocols demonstrate the course's central idea: bit pattern plus representation rules produces meaning.

## EXPLAIN

Reading a datasheet constantly requires translating among bit positions, masks, hexadecimal values, numerical quantities and physical behavior.

## Check yourself

Which bits are set in `0x81`? How many codes does a 12-bit ADC have? Why can ordinary read-modify-write be wrong for some status registers?
88 changes: 88 additions & 0 deletions course/no/21-digital-elektronikk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Tall i digital elektronikk

I digital elektronikk kobles bitmønstre til fysiske signaler, registre, målinger og protokoller. Tallene er ikke bare matematikk: de styrer pinner og beskriver virkelige måleverdier.

## PREDICT

Hvis et 8-bit GPIO-register inneholder `0x81`, hvilke bit er satt?

## STEP — logisk og fysisk nivå

En logisk 0 eller 1 er en abstraksjon. Den fysiske kretsen bruker spenningsområder som tolkes som LOW og HIGH. Nøyaktige terskler avhenger av komponent og datablad.

Et signal kan også være **active-low**. Da betyr det aktive nivået logisk/funksjonelt «på» når den elektriske linjen er LOW. Navn som `/RESET`, `RESET_n` eller lignende brukes ofte, men konvensjonen varierer.

## GPIO-register

Tenk et register:

`PORT = 1010 0001₂ = 0xA1`

Hver bit kan styre en separat funksjon. En maske kan endre én bit uten å uttrykke hele registerverdien på nytt.

Sett bit 3:

`PORT |= (1 << 3)`

Nullstill bit 3:

`PORT &= ~(1 << 3)`

Toggle bit 3:

`PORT ^= (1 << 3)`

På virkelig hardware må du lese databladet: enkelte registre har egne SET/CLEAR-registre, write-one-to-clear-flagg eller andre regler som gjør en vanlig read-modify-write feil.

## Datablad og registerkart

Et registerkart oppgir typisk:

- registeradresse eller offset
- bitposisjoner
- feltbredder
- resetverdi
- read/write-egenskaper
- betydningen av feltverdier

En verdi som `0x82` er først nyttig når vi vet hvilket register den tilhører og hva hvert bitfelt betyr.

## ADC

En idealisert N-bit ADC har (2^N) digitale koder. En 10-bit ADC har 1024 koder, normalt 0–1023.

For en enkel idealisert unipolar modell kan en kode omregnes omtrent som:

`V ≈ code / (2^N - 1) × Vref`

Den nøyaktige overføringsfunksjonen, referansen, toleranser og endpoint-definisjonen må hentes fra databladet.

## DAC

En DAC gjør motsatt retning: en digital kode påvirker en analog utgang. Også her bestemmer bitbredde antall koder og dermed den idealiserte kvantiseringen.

## Logic analyzer

En logic analyzer samler digitale samples. Verktøyet kan vise dem som:

- bit
- byte
- hex
- dekodede UART/SPI/I²C-felt
- timestamps

Byte `10100101₂ = 0xA5` kan være kommando, adresse, flagg eller data. Protokollen gir semantikken.

Ved serielle protokoller må du også kjenne blant annet bitrekkefølge, klokking, framing og byteorden der flerbytefelt brukes.

## OBSERVE

Hardware-registre og protokoller er praktiske eksempler på hele kursets hovedidé: bitmønster + avtalt representasjon = mening.

## EXPLAIN

Når du leser et datablad, oversetter du kontinuerlig mellom bitposisjoner, masker, hex, desimale størrelser og fysisk funksjon.

## Sjekk deg selv

Hvilke bit er satt i `0x81`? Hvor mange koder har en 12-bit ADC? Hvorfor bør du ikke anta at alle statusflagg kan nullstilles med vanlig read-modify-write?
10 changes: 10 additions & 0 deletions exercises/no/10-digital-elektronikk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Øvelser: digital elektronikk

1. Skriv `0xA5` som åtte bit og oppgi hvilke bitposisjoner som er 1.
2. Lag en maske som setter bit 6 i et 8-bit register.
3. Lag en maske som tester bit 2 og bit 5.
4. Hvor mange digitale koder har en 8-, 10- og 12-bit ADC?
5. Bruk den idealiserte endpoint-formelen til å beregne omtrent spenning for kode 512 i en 10-bit ADC med `Vref = 3.3 V`.
6. Hvorfor må terskler for HIGH og LOW hentes fra databladet?
7. Hva betyr write-one-to-clear, og hvorfor kan en naiv read-modify-write være farlig?
8. En logic analyzer viser `A5 02`. Nevn informasjon du trenger før du kan tolke disse to bytene som et flerbytefelt.
10 changes: 10 additions & 0 deletions solutions/no/10-digital-elektronikk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Løsninger: digital elektronikk

1. `10100101₂`; bit 7, 5, 2 og 0 er satt.
2. `1 << 6 = 0x40`.
3. `(1 << 2) | (1 << 5) = 0x24`.
4. 8 bit: 256; 10 bit: 1024; 12 bit: 4096 koder.
5. (512/1023 × 3.3 \approx 1.65\text{ V}). Dette er en idealisert beregning; virkelig ADC-oppførsel må tas fra databladet.
6. Logiske nivåer er elektriske spenningsområder og varierer med teknologi, forsyning og komponentkrav.
7. Write-one-to-clear betyr at et flagg nullstilles ved å skrive 1 til dets bit. En read-modify-write kan derfor utilsiktet skrive 1 tilbake til andre satte flagg og fjerne dem.
8. Blant annet protokoll/feltdefinisjon, feltbredde, byteorden og eventuelt bitrekkefølge/framing.
Loading