MezData-Logo Creative Commons License 577 Lösungen Button :AVR: Fragen und Übungen

Begriffe und Grundlagen

Was unterscheidet nen Microcontroller von einer CPU? Der Controller ist ne CPU + X: I/O Peripherie (Ports, A/D Wandler, D/A Wandler, Serielle Schnittstellen usw..), RAM, ROM, Timer. Man denke an die Anwendungen: Auto, Handy, Waschmaschiene, Tintenpisser, Modem, Fahrrad (Computergesteuerte Gangschaltung).

Erklären Sie den Begriff Befehlszyklus anhand eines Beispiels.

Welche Aufgabe hat ein Assembler? de.wikipedia.org/wiki/Assemblersprache

Worin besteht der Unterschied zwischen CISC und RISC? de.wikipedia.org/wiki/Reduced_Instruction_Set_Computing

Was sind MIPS? Milionen Instruktionen pro Sekunde

Was bewirkt ein Reset? Register und PC werden auf Null gesetzt: Folge Programm beginnt wieder bei Adresse 0

Was bedeuten MSB und LSB? Most Significant Bit -> Das Bit ganz links hat die grösste Wertigkeit...

Der Flash-Speicher des ATtiny2313 ist 2KByte gross, als 16 Bit organisiert.

Wofür wird der Flash-Speicher verwendet? Er ist der Programm- und Konstantdatenspeicher.

Wie oft kann der Flash-Speicher wiederbeschrieben werden? Mindestens 10000 mal.

Warum ist der Speicher 16 Bit organisiert? Weil die Befehle 16 bzw. 32 Bit lang sind.

Wie viele Adressen hat der 2kiB Flash-Speicher? Da er 16 Bit organisiert ist: 2048 Byte / 2 Byte = 1024 Adressen.

Einfache Programme

Dem Assembler seien schon die 1Byte Register-Variablen a,b,c bekannt.

Erstellen Sie Assembler-Programme für folgende Rechnungen und ermitteln Sie die Anzahl der Takte zur Bearbeitung:

a = b + c; b = b -c; a = a +1; b = b - 3; if (b == 0) a = c;

Lösung anzeigen..

Programm analysieren

Gegeben ist folgender Quelltext:

.include "tn2313def.inc"

.def a = R16 ;R16 als Variable a
.def b = R17 ;R17 als Variable b
.def c = R18 ;R18 als Variable c

  ;Zuweisen von Werten a,b

  cp a,b
  brmi eva
  mov c,a
  sub c,b
  rjmp gogo
eva:
  mov c,b
  sub c,a
gogo:
    ...

FrageErstellen Sie einen PAP für den Quelltext. Lösung..

FrageWie sieht der Quellcode für ein entsprechendes C-Programm aus?

Lösung anzeigen..

FrageWelche Werte werden für folgende Belegungen von a und b für c errechnet?

a b c
10 20 10
5 5 0
23 4 19

Erstellen von Programm

Erstellen Sie ein Programm (Assembler mit PAP) das berechnet:

Wenn a gerade dann b = 1 sonst b = 0.

Lösung anzeigen..

Aufgabe (Programm-Analyse)

Analysieren Sie folgendes Assembler-Programm.

.include "tn2313def.inc"

.def tmp = R16
.def merker = R17

init:
  out DDRD,tmp
  out PORTD,tmp
  ldi tmp,0xFF
  out DDRB,tmp
  out PORTB,tmp
atest:
  in tmp,PIND
  andi tmp,0x40
  brne btest
  in merker,PIND
  andi merker,0x0F
btest:
  in tmp,PIND
  andi tmp,0x20
  brne atest
  in tmp,PIND
  andi tmp,0x0F
  cp tmp,merker
  brne nein
  out PORTB,tmp
  rjmp atest
nein:
  ldi tmp,0xFF
  out PORTB,tmp
  rjmp atest 
An Port D (Eingang) sind die 8 Taster angeschlossen, gedrückt ist Bit=0
Bits Port D 7 6 5 4 3 2 1 0 Nummer des Tasters
Maske - 0x40 0x20 - 0x0F Tasten selektieren, maskieren
Bedeutung - A B - X = X3..X0 A,B lösen Aktionen aus,
X ist Eingabe

An Port B (Ausgang) sind die 8 Leuchtdioden (LED) angeschlossen. Eine LED leucht, wenn das jeweilige Bit = 0 ist.

BRNE Branch if not equal (to Zero): Sprung, wenn das Ergebnis der letzten Rechenoperation ungleich null ist.

Welche Einstellungen werden zwischen Marke "init:" und "atest:" vorgenommen, leuchten die LEDs kurz oder permanent oder gar nicht?

 PORTB ist Ausgang, alle Pins sind 1; PORTD ist Eingang, PullUps sind aus. LED leuchten 1 Takt lang auf.

Erstellen Sie einen PAP für das Programm ab Marke "atest:"

 Lösung..

Kommentieren Sie den PAP aus b) sinnvoll und beschreiben Sie die Funktion des Programms.

Wenn Taste A gedrückt ist, wird X = X3..X0 in merker gespeichert.
Wird Taste B gedrückt, wird X mit merker verglichen. Sind beide gleich wird X auf PORTB ausgegeben,
sonst wird PORTB=0xff ausgegeben.

Optimieren Sie das Programm -es können Befehle geschicktere Befehle verwendet werden.

Lösung anzeigen..