From 5d087d3fac4283686625756ff8eb49943ba14a42 Mon Sep 17 00:00:00 2001 From: Manfred Date: Mon, 18 Oct 2010 13:32:03 +0200 Subject: [PATCH] avr.tex implementiert --- 1_isacmp/.gitignore | 1 + 1_isacmp/avr.tex | 73 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/1_isacmp/.gitignore b/1_isacmp/.gitignore index 3cd2a71..48b5879 100644 --- a/1_isacmp/.gitignore +++ b/1_isacmp/.gitignore @@ -9,4 +9,5 @@ *.blg *.lof *.lot +*.*~ testppc diff --git a/1_isacmp/avr.tex b/1_isacmp/avr.tex index 4ce9ec1..fa5decf 100644 --- a/1_isacmp/avr.tex +++ b/1_isacmp/avr.tex @@ -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} + + + -- 2.25.1