avr.tex implementiert
authorManfred <xzarion@l0725898.(none)>
Mon, 18 Oct 2010 11:32:03 +0000 (13:32 +0200)
committerManfred <xzarion@l0725898.(none)>
Mon, 18 Oct 2010 11:38:15 +0000 (13:38 +0200)
1_isacmp/.gitignore
1_isacmp/avr.tex

index 3cd2a71d93fe8e9b3c32118e7add276d5c3acbf8..48b5879c0bfc98fa299c49c883a24eb4b3ea347d 100644 (file)
@@ -9,4 +9,5 @@
 *.blg
 *.lof
 *.lot
+*.*~
 testppc
index 4ce9ec14ab82f36c63b4a8a5e57d0a6383bbeb94..fa5decfdf39ab7a428b335c1674bea6999c099ad 100644 (file)
@@ -1 +1,74 @@
 \section{AVR}
+
+Das 8-bit AVR Instruction Set ist das von den meisten Atmel Microkontroller implementierte Instructions Set.
+Es ist eine RISC Architektur die vorallem auf 1 Zyklus Instructionen hin optimiert ist.
+Es handelt sich hierbei um eine Register basierende Maschiene.
+
+\subsection{Einsatzgebiet}
+Die 8-bit AVR ISA wird zum Beispiel in der megaAVR Serie verwendet, welche die breiteste Auswahl aus Peripherie M\"oglichkeiten/Ger\"aten anbietet. Dies macht sie verwendbar f\"ur eine breite Palette an Applicationen. Die Serie verf\"ugt unter anderem \"uber USB,LCD,CAN und LIN Interfaces, zus\"atzlich zu den Standards f\"ur SPI,UARToder I2C.
+Ausswerdem bietet es Features wie selbst programmierung f\"ur den Flash und sicherer, g\"unstige Upgrades w\"ahrend des Betriebs.
+
+\subsection{Conditional Jumps}
+Conditional Jumps sind bei dieser ISA immer getrennt vorhanden. 
+Es gibt ein Set an Jump Instructionen, sowie eines f\"ur Branches.
+Die Latenzzeiten die auftreten f\"ur Jumps und Branches, sowie f\"ur andere mehr Zyklen Instructionen werden auf Hardwareebene behandelt und sind deshalb nicht auf den ISA Level sichbar.
+
+\subsection{Ziele}
+Laut der ersten Feature Zeile in den AVR PDFs liegt das hauptaugenmerk auf:
+
+High-performance, Low-power
+
+Umgesetzt wird das ganze durch Instructionen die haupts\"achlich in einem Zyklus abgearbeitet werden.
+
+\subsection{W\"unsche und gute Features}
+Folgende zwei Punkte finde ich besonders positiv:
+\begin{itemize}
+       \item Das getrennte Compare-Branch Konzept find ich sehr angenehm, da man die weiligen Optionen nach Wunsch kombinieren kann.
+       \item Das man viele Bitoperationen (auch Vergleiche f\"ur Conditional Jumps) zur Verf\"ugung hat.
+\end{itemize}
+Negativ auffallen ist mir:
+\begin{itemize}
+       \item Es gibt keinen add imidiate Befehl um eine Konstante zu einem Register hinzuzuf\"ugen.
+\end{itemize}
+
+\subsection{Listing}
+Ich gehe von folgenden Vorbedingungen aus:
+\begin{itemize}
+       \item len in r24,r25
+       \item Array im Datenspeicher unter Y+0:Y+1 bis Y+6:Y+7 abgelegt
+       \item Summe wird in r24,r25 gespeichert
+\end{itemize}
+
+\begin{lstlisting}[caption=MCS-51 Code]
+subroutine:
+ld r28,"Adresse mit zu verwendenden Arraydaten"
+ld r29,"Adresse mit zu verwendenden Arraydaten"
+
+adiw r25:r124,1
+subi r29:r28,2
+ldi r1,0x00
+ldi r2;0x00
+ldi r20,0x00
+ldi r21,0x00
+
+for:
+adiw r2:r1,1
+adiw r29:r28,2
+
+ldd r24,Y
+ldd r25,Y+1
+
+add r20,r24
+adc r21,r25
+
+cp  r1,r10
+cpc r2,r11
+brlt for
+
+ld r24,r20
+ld r25,r21
+ret
+\end{lstlisting}
+
+