Home: www.rowalt.de
Über AVR-Mikrocontroller
Die kleinen und preiswerten AVR-Prozessoren (der AT90S2313-10PI kostet z.B. etwa 6 Euro) gehören zu den modernsten Universal-Mikrokontrollern. Das Design wurde an der Universität für Technologie in Trondheim/Norwegen entwickelt und dann von der Firma Atmel gekauft. Die Entwickler behaupten, daß "AVR" rein gar nichts meint und ganz besonders nicht "Arnes og Vegards RISC". Der AVR-Kern ist außergewöhnlich klein und enthält nur rund 4000 Gates. Atmel als einziger Hersteller von Prozessoren dieses Designs bietet drei Serien an: AT-tiny (tiny=winzig), AT90 und ATmega. Der Prozessor ist hervorragend geeignet für Schaltungen, die früher auf Prozessoren wie dem Motorola 6805 beruhten, dem Intel 8051, MSP 430, oder dem PIC von Microchip. Nicht nur ich bin der Meinung, daß der AVR von allen diesen Prozessoren der innovativste ist und die höchste "Lebenserwartung" hat.

Der AVR ist ein RISC-Prozessor (RISC="Reduced Instruction Set Computer"). Ein traditioneller CISC (CISC="Complex Instruction Set Coding") verfügt über mächtige Befehle, die in einer Vielzahl von Einzelschritten ausgeführt werden. Das macht Sinn, denn z.B. muß der Befehl erst decodiert werden und die CPU hat in dieser Zeit nichts zu tun. Ebenso war der RAM früher viel langsamer als die CPU und wiederum hatte die CPU zu warten. Es lag daher nahe, daß die CPU in der Wartezeit mit komplexen Befehlen beschäftigt wird. Mit der Entwicklung der Technik bot es sich dann an, einfach die Masse der selten benötigten Befehle wegzulassen, und in der Hardware nur diejenigen zu implementieren, die auch häufig benutzt werden. Alle anderen Befehle werden dann vom Compiler aus diesen elementaren Befehlen aufgebaut. Der stark reduzierte RISC-Befehlssatz erfordert keine Dekodierung, und das macht ihn schnell, spart Platz auf dem Chip und macht ihn damit billig.

Einen echten RISC in Assembler zu programmieren, ist manchmal recht umständlich, weil die fehlenden komplexen Befehle eben durch Software ersetzt werden müssen. Der AVR wurde deshalb als RISC mit Anleihen zum CISC entworfen. Neben den Instruktionen, die in einem einzigen Takt ausgeführt werden, gibt es auch solche, die 2 bis 4 Takte zur Ausführung benötigen. Wer lieber mit Assembler programmiert und vom PIC zum AVR umsteigt, wird speziell diese Instruktionen heiß lieben lernen. Außerdem ergibt sich logisch, daß AVR-Programme kürzer sind als PIC-Programme. Der AVR-Befehlssatz ist aber auch nicht ganz so umfangreich, wie es Atmel vortäuscht, denn einige der Instruktionen im offiziellen Befehlssatz beruhen schlicht auf einem anderen, diesmal echten Befehl (siehe Kasten).

BSET s	1001 0100 0sss 1000	Bit Set in SREG
SEC	1001 0100 0000 1000	Set Carry Flag
SEH	1001 0100 0101 1000	Set Half Carry Flag
SEI	1001 0100 0111 1000	Set Global Interrupt Flag
SEN	1001 0100 0010 1000	Set Negative Flag
SES	1001 0100 0100 1000	Set Signed Flag
SET	1001 0100 0110 1000	Set T Flag
SEV	1001 0100 0011 1000	Set Overflow Flag
SEZ	1001 0100 0001 1000	Set Zero Flag
Atmel schummelt: Von den 9 Befehlen zum Setzen eines Bits im Statusregister ist nur BSET echt.

Alle ICs der AVR-Famile sind im Prinzip gleich aufgebaut. Die Einzeltypen unterscheiden sich nur in ihrer Ausstattung, z.B. Größe des Speichers, Anzahl und Art der Timer, einige haben einen A/D-Wandler u.s.w.. Zum Kennenlernen ist der AVRs ist der AT90S2313 völlig ausreichend. Noch preiswerter ist der bekanntere AT90S1200, der aber einige Einschränkungen aufweist. Zum Beispiel sind bei ihm einige Hochsprachen wie z.B. die Programmiersprache BASCOM nicht einsetzbar, weil der AT90S1200 keinen SRAM hat. Außerdem hat der 1200 keine UART (serielle Schnittstelle), und gerade die kann beim Debuggen mehr als nützlich sein.

Das Design der AVRs ist für die Programmierung mit Hochsprachen optimiert, oder besser ausgedrückt: Die speziellen Erfordernisse von Hochsprachen wurden bereits konstruktiv berücksichtigt. Assembler läßt sich deshalb natürlich genauso gut einsetzen...


This site is a member of AVR WebRing.
[PreviousList Sites | Next | Random Site]