Appendiks I — Slik leser du AVR-datablader¶
Læringsmål
Lær å bruke mikrokontrollerens datablad som primær maskinvarereferanse: finn periferikapitler, registerbeskrivelser, bitfelt, timinginformasjon, elektriske grenser og detaljene som gjør en programmeringsoppgave om til korrekte registeroperasjoner.
Databladet er en del av programmeringsmodellen¶
Registerbasert AVR-utvikling kan ikke gjøres pålitelig bare fra hukommelsen. Databladet forklarer hva maskinvaren kan gjøre, hvilke registre som styrer den, hvilke bits som har sideeffekter og hvilke timing- og elektriske begrensninger som gjelder.
Bruk eksempler og kursmateriell som veiledning; bruk databladet som autoritativ beskrivelse av valgt MCU.
Start med oppgaven¶
Oversett oppgaven til spørsmål:
- Hvilken periferi utfører funksjonen?
- Hvilke pinner bruker den?
- Hvilke registre konfigurerer den?
- Hvilke bits velger ønsket modus?
- Hvilke statusflagg viser fremdrift eller feil?
- Finnes det krav til rekkefølge eller sideeffekter?
- Hvilken klokke og hvilke timingformler gjelder?
- Kan påstanden kvalifiseres i simulator, eller krever den fysisk måling?
En praktisk leserekkefølge¶
For en ukjent periferi:
- Features / overview — forstå formålet og terminologien.
- Block diagram — se dataflyt og funksjonelle enheter.
- Pin multiplexing — finn hvilke MCU-pinner som bærer signalene.
- Functional description — forstå moduser og tilstandsoverganger.
- Register description — koble funksjonen til registre og bits.
- Timing / formulas — beregn baudrate, timerperioder, bussfrekvens osv.
- Interrupts and flags — finn hendelser, vektorer og regler for flagg.
- Electrical characteristics — brukes når du analyserer den fysiske enheten.
- Errata — kontroller om dokumenterte silisiumfeil påvirker funksjonen.
Slik leser du en registertabell¶
Noter for hvert register:
- adresse;
- reset-verdi;
- lese-/skriveegenskaper;
- bitnavn;
- reserverte bits;
- sideeffekter;
- forholdet til andre registre.
Anta aldri at skriving av 1 nullstiller et flagg, at reserverte bits kan skrives fritt eller at registerlesing er uten sideeffekter. Les beskrivelsen.
Eksempel: USART¶
Finn USART-kapitlet og svar på:
- Hvilke UBRR-registre setter baudrate?
- Hvordan beregnes UBRR fra
F_CPU? - Hvilke bits aktiverer RX og TX?
- Hvilke bits velger frame-format?
- Hvilket statusflagg sier at transmit data register er klart?
- Hvilke flagg rapporterer mottaksfeil?
- I hvilken rekkefølge må status- og dataregistre leses?
Først deretter bør konfigurasjonen uttrykkes i C eller Assembly.
Datablad ↔ Assembly ↔ C¶
| Databladet sier | Assembly | C |
|---|---|---|
| Sett et kontrollbit | load/mask/store eller bitinstruksjon | register + bitmaske |
| Vent på et flagg | read/test/branch | polling-løkke |
| Skriv periferidata | store til I/O-/dataadresse | assignment til registermakro |
Compileren erstatter ikke databladet. C-registermakroene gir bare symbolske navn til den samme maskinvaren.
Simulatorgrensen¶
Databladet beskriver den virkelige komponenten. Simulatoren implementerer en modell av deler av denne oppførselen.
Bruk databladet til å definere forventet MCU-oppførsel, og kvalifiser på Q1 bare det simulatoren modellerer pålitelig. Elektriske egenskaper, analog nøyaktighet og annen fysisk oppførsel forblir Q2.
Oppgaver¶
- Finn ATmega1284P-registeret som styrer retningen til Port B og forklar hvert bit.
- Finn prescaler-tabellen for Timer0 og beregn timer-tick ved 8 MHz CPU-klokke.
- Finn USART-formelen og beregn innstillingen for 9600 baud.
- Finn SPI-tabellen og identifiser bits som velger
F_CPU/16. - Finn et register med et flagg der nullstillingsregelen må leses nøye.
- Finn errata-seksjonen og forklar hvorfor den hører hjemme i implementasjonsarbeidet.
God vane
Når en leksjon nevner et register, åpne det tilsvarende databladkapitlet. Å kunne navigere i databladet er i seg selv en sentral embedded-ferdighet.