Geschwindigkeit ist keine Hexerei Experimente mit dem ATMEL AVR RISC Prozessor

background image

Um dem neuen Prozessor einen
guten Start zu verschaffen, hat ATMEL
im Internet einiges an Software ver-
fügbar gemacht. Da ist zum Beispiel

ein kompletter Assembler (für DOS
wie auch für WINDOWS) und ein
Simulator. Auch die kompletten
Datenblätter und Dokumentationen

der Software sind dort verfügbar. Wer
sich also vorab schon ohne Hard-
ware mit dem Prozessor beschäftigen
will: Unter www.atmel.com findet man

X-2 - 10/98 Elektor

EXTRA

———————————————————— PC-P

LUS

Seit einiger Zeit ist von ATMEL ein 8-bit-RISC-Prozessor erhältlich, der AT90S1200.
Was die Geschwindigkeit angeht, liegt dieser Prozessor ganz weit vorne. Auch
beim Preis liegt der Prozessor gut im Rennen, für den Hobbyisten kostet er schon
weniger als 10,- DM. Gelingt es einem also, mit so einem Prozessor ein paar
Logik-ICs (samt Fassungen etc) zu ersetzen, ist das bereits eine interessante
Alternative. Erst recht interessant ist der Prozessor dadurch, daß er zum
Programmieren über eine serielle Schnittstelle verfügt, so daß man um den Kauf
eines speziellen Programmiergerätes herumkommt. Wie der Prozessor konzipiert ist,
war schon in Elektor 1/98 zu lesen. Was man mit diesem Prozessor so anstellen
kann, zeigt der folgende Artikel. Die notwendige Hard- und Software ist einfach zu
beschaffen, so daß es keinen Grund mehr gibt, sich nicht mit diesem schnellen
Prozessor zu beschäftigen.

Von Dr.-Ing. Mar tin Ohsmann

Geschwindigkeit ist
keine Hexerei

Experimente mit dem ATMEL-AVR RISC Prozessor

background image

alles notwendige, nämlich:

- Assembler für die ATMEL-AVR-Serie
- Simulator für die AVR-Serie
- Beispielprogramme:

einfache Arithmetik
EEPROM Benutzung

Experimentierboard

Von Atmel gibt es auch ein Demoboard
und die zugehörige Software, natürlich
ist das dann nicht mehr kostenlos. Da
ELEKTOR aber nun eine Zeitschrift ist, die
sich auch an den lötenden Elektroniker
wendet, haben wir natürlich eine eige-
nes kleines Experimentierboard ent-
wickelt. Der Schaltplan ist in Bild 1 zu
sehen. Eigentlich besteht die Schaltung
nur aus einem 6fach-Schmitt-Trigger,
der die Signale der seriellen PC-RS232
Schnittstelle an die serielle Schnittstelle
(nicht RS232 und nicht asynchron etc.)

des Prozessors anpaßt. Dann gibt es
noch einen Schalter, mit welchem man
zwischen Software-Download und Run
umschalten kann sowie dem Quarz
oder Quarzoszillator, der den Prozessor-
takt generiert. Wer Anwendungen plant
(z.B. Frequenz- oder Zeitmessung), bei
denen hohe Genauigkeit angestrebt
wird, ist mit einem Quarzoszillator
(gesockelt) gut beraten, er bestückt
den Quarz X1 und die beiden Konden-
satoren C1 und C2 nicht, sondern den
Oszillator IC1. Bei unkritischen Anwen-
dungen ist ein einfacher Quarz natür-
lich billiger und ausreichend. Als IC-Fas-
sung für den Prozessor kann man vor-
teilhaft einen Programmiersockel
einsetzen, wenn man vorhat, viele Pro-
zessoren zu programmieren. Das ist
schon alles. Man kann das ganze, weil
es so simpel ist, sogar auf einer Lochra-
sterplatte aufbauen. Schöner ist natür-
lich die Platine nach Bild 2.

Serielles Download

Damit man vom ATMEL-Assembler
erstellte Programme in den Prozessor
laden kann, ist eine Download-Software
erforderlich. Hier hat der Autor nichts
Passendes bei ATMEL selbst gefunden,
daher hat er selbst ein entsprechendes
Programm geschrieben. Dies ist auf der
Diskette, die zu diesem Projekt gehört,
enthalten (inkl. PASCAL-Quellcode), so
daß man mit dieser Diskette und der
Software aus dem WWW dann wirklich
komplett ausgestattet ist und loslegen
kann.

Beispielprogramme

Programmieren lernt man am besten
dadurch, daß man (lauffähige) Pro-
gramme selbst ausprobiert, abwandelt
und erweitert. Dabei ist es gerade bei
neuen Prozessoren oft entscheidend,
daß man Zugriff auf einen Fundus an
vorgefertigten Modulen hat, die einem
einige wichtige Aufgaben abnehmen,
wie z.B. Ausgabe von Zeichen, Hexa-
dezimalzahlen und Dezimalzahlen über
die serielle Schnittstelle, ebenso wie
auch Eingabe über die serielle Schnitt-
stelle. Auf der Projekt-Diskette sind zahl-
reiche solche Module vorhanden (siehe
Tabelle 1), so daß dem Anfänger die-
ser Ballast erspart bleibt und er sich auf
die wichtigen Aufgaben konzentrieren
kann. Hier ist nicht der Raum, alle diese
Programme im Detail zu besprechen.
Wer sich dafür interessiert, der kann sich
anhand der kommentierten Quellkodes
der Diskette im Detail informieren, die in
der Datei XAVR.DOC auch eine Über-
sicht über die Programme mit Kurzbe-
schreibungen und Anwendungshinwei-
sen enthält. Wir stellen hier nun ein
paar Ideen vor, die wir mit dem schnel-
len Prozessor realisieren können. Dabei
versuchen wir Anwendungen anzuge-
ben, bei welchen die Geschwindigkeit
wirklich entscheidend ist. Um ein Gerät
alle Sekunden ein- oder auszuschalten,
braucht man bestimmt nicht unbedingt
einen solchen Prozessor. Deshalb sucht
man solche Anwendungen hier ver-
geblich. Dafür erfährt man aber, wie
man aus 10 MHz verschiedene Taktsig-
nale erzeugen kann. Hier ist ein 8051
sicherlich überfordert, während ein
AT90S1200 noch gut mithält.

Ein Befehl alle 66ns:
Anwendungen

Der AT90S1200 kann mit einer Taktfre-
quenz bis zu 16 MHz betrieben werden.
Da die meisten (wirklich !) Befehle inner-
halb von einem Takt abgearbeitet wer-
den, kann man 16 Millionen Befehle in

PC-P

LUS

———————————————————

Elektor

EXTRA

X-3 - 10/98

NC

PD0

XTAL2

PD2(INT0)

PD4(TO)

GND

(AIN0)PB0

PB2

PB4

NC

PD1

XTAL1

PD3

PD5

PD6

(AIN1)PB1

PB3

(MOSI)PB5

(SCK)PB7

Vcc

NC

NC

K1

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

1

2

3

4

5

6

7

8

9

OE

1

OUT

5

Vdd.

8

GND

4

IC1

SG531P

12.0000MHz

X1

12MHz

C2

22p

C1

22p

/RESET

T

PB7

PB6

PB5

PB4

PB3

PB2

PB1

PB0

JP1

JP2

JP3

R24

1k

R1

10k

R3

1k

R4

5k6

R7

1k

R8

1k

9

8

1

IC2d

13

12

1

IC2f

11

10

1

IC2e

R6

100k

R12

100k

R13

100k

R10

10k

R9

1k

R11

10k

K2

1

2

3

4

5

6

7

8

9

5

6

1

IC2c

3

4

1

IC2b

1

2

1

IC2a

R2

100k

R5

10k

S1

PROG/RUN

ISP/

RS232

R14

20k

R16

20k

R15

10k

R18

20k

R17

10k

R20

20k

R19

10k

R22

20k

R21

10k

R23

20k

PB0

PB4

PB3

PB2

PB1

DAC

1%

1%

1%

1%

1%

1%

1%

1%

1%

1%

PB0 PB1 PB2 PB3 PB4

K3

10

1

2

3

4

5

6

7

8

9

FC10HB

PB7

PB6

PB5

PB4

PB3

PB2

PB1

PB0

C5

100n

C7

100n

IC2

14

7

C6

100n

7805

IC3

C3

100

µ

25V

C4

10

µ

10V

R25

1k

D2

D1

1N4001

K4

9...15V

IC2 = 74HC14

980082-11

(MISO)PB6

PB6

PB5

PB7

5V

5V

5V

5V

5V

Bild 1. Schaltplan des AVR-Experimentierboards.

background image

der Sekunde ausführen. Wenn man
also ein Programmsegment eine Million
mal in der Sekunde ausführen will, kann
es immerhin so 10 bis 16 Befehle lang
sein. Mit soviel Befehlen kann man
schon einiges anfangen. Natürlich nur
hardware-nah, wer kann sich schon ein
Windows-Programm vorstellen, das nur
einige -zig Befehle lang ist....
So ein schneller Prozessor kann also oft
eingesetzt werden, wenn eine Anzahl
an digitalen ICs eingespart werden soll
und andererseits die Geschwindigkeit
nicht so hoch ist, daß man auf teure
programmierbare Logik zurückgreifen
muß. Das Schöne an so einem Mikro-
controller ist, daß man Zugriff auf eini-
ges an Registern hat und auch rech-
nen kann. Wer schon mal versucht hat,
mit programmierbarer Logik Berech-
nungen anzustellen, weiß, was gemeint
ist. Nun aber genug der Vorrede, los
geht’s mit einer kurzen Vorstellung des
Prozessors und mit Beispielprogrammen.

AT90S1200 im Überblick

Aufgrund der RISC-Architektur ist der
Prozessor relativ einfach und über-
schaubar aufgebaut. Einen Überblick
gibt Bild 3. Der für uns wichtigste Teil ist

die Registergruppe von 30 Registern zu
8 bit. Mit diesen Registern kann man
Berechnungen anstellen und Werte in
ihnen speichern. Dann gibt es noch
zwei Ein-Ausgabe Ports (Port B und Port
D). Per Software kann man festlegen,
welche Pins Ein- und welche Ausgänge
sind. Dann kann man den Zustand von
Pins abfragen oder ändern. So kann
man mit der Außenwelt kommunizieren.
Gesteuert wird der Ablauf von einem

zentralen Oszillator, dessen Frequenz
zwischen 0 und 16 MHz liegen darf.
Natürlich gibt es dann noch Interrupt-
steuerung und einen kleinen einfachen
8-bit-Timer bzw. Zähler. Die komplette
Beschreibung das AT90S1200 ist ca. 50
Seiten lang, wer also alles genau wis-
sen will, sollte sie sich übers WWW
beschaffen. Nun aber ein paar Bei-
spielbefehle zum Eingewöhnen:

X-4 - 10/98 Elektor

EXTRA

———————————————————— PC-P

LUS

(C) ELEKTOR

980082-1

(C) ELEKTOR

980082-1

C1

C2

C3

C4

C5

C6

C7

D1

D2

H1

H2

H3

H4

IC1

IC2

IC3

JP1

JP2

JP3

K1

K2

K3

K4

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

R15

R16

R17

R18

R19

R20

R21

R22

R23

R24

R25

S1

X1

DAC

B4

B3

B2

B1

B0

T

T

T

T

980082-1

PROG

RUN

Bild 2. Die einseitige Platine des Experimentierboards.

Tabelle A

; mit einem Semikolon werden Kommentare eingeleitet

.def summe=R20 ; mit .def kann man Registern symbolische Namen geben

mov r2,r

; Der Inhalt von Register R3 wird nach R2 kopiert

ldi r17,123

; Register r17 wird mit 123 geladen

add r20,r21

; Register r20 wird summe r20+r21

adc r20,r21

; Register r20 wird summe r20+r21+carry

sbi PORTB,2

; setze Bit von PORTB nummer 2

clr r20

; Loesche (clear) r20 auf 0

brne loop

; springe wenn nicht ZERO nach loop

sbrs r20,2

; skip if bit in register set,

; ueberspringe naechsten Befehl wenn Bit 2 von R20 gesetzt

background image

Erste Programme:
Einfache Signalmuster

Der AT90S1200 arbeitet mit Taktfrequen-
zen von 0 Hz (statische Operation) bis 16
MHz. Man kann ihn daher hervorragend
einsetzen, um ausgehend von einem
Taktsignal ein komplexes Signalmuster
zu erzeugen. Normalerweise macht
man das mit Zählerbausteinen und
Dekodern. So eine Schaltung kann
schon recht aufwendig werden, bei
komplexeren Dekodierlogiken muß man
dann noch sorgfältig arbeiten, um Glit-
ches zu vermeiden. Bei Frequenzen
unter 16 MHz kann man nun auch so
einen RISC-Prozessor einsetzen. Bei noch
niedrigeren Frequenzen kommen auch
zahlreiche andere Mikrocontroller in
Frage. Um z.B. das in Bild 4 dargestellte
Impulsmuster zu erzeugen, kann man
das Programm nach Bild 5 (XPAT-
GEN1.ASM) verwenden. Es ist schön kurz
und besteht eigentlich nur darin, die
Register r17 bis r22 mit den möglichen
Signalkombinationen zu laden. Dann

PC-P

LUS

———————————————————

Elektor

EXTRA

X-5 - 10/98

Stückliste

Widerstände:
R1,R5,R10,R11 = 10 k
R2,R6,R12,R13 = 100 k
R3,R7...R9,R24,R25 = 1 k
R4 = 5k6
R14,R16,R18,R20,R22,R23 = 20 k 1%
R15,R17,R19,R21 = 10 k 1%

Kondensatoren:
C1,C2 = 22 p ker * siehe Text

C3 = 100

µ/25 V stehend

C4 = 10

µ/10 V stehend

C5...C7 = 100 n keramisch

Halbleiter:
D1 = 1N4001
D2 = LED rot (high efficiency)
IC1 = SG531P12.0000MHz EPSON
(Texim) * siehe Text
IC2 = 74HC14
IC3 = 7805

Außerdem:
X1 = 12 MHz * siehe Text
K1 = 24-polige Aries 0,3-0,6” (Farnell)
JP1...JP3 = 2-polige JUMPER
S1 = Schiebeschalter 1 x Um für
Platinenmontage
K2 = 9-polige SUB-D-Buchse

K3 = 2

⋅5poliger Pfostenverbinder

(optional)
K4 = Netzteil-Anschlußbuchse
(Niedervolt-Buchse) für Platinenmontage
Platine 980082-1
Programmdiskette 986020-1 (siehe
Serviceseiten in der Heftmitte)

1

2

3

4

5

6

7

8

9

10

17

18

19

20

21

B0

B1

B2

980082-13

Bild 4. Aufgrund der hohen Arbeitsgeschwindigkeit kann der AVR-Controller auch komple-
xere Impulsmuster mit Frequenzen bis über 10 MHz erzeugen.

Bild 3. Das Blockschaltbild gibt einen Überblick über die inneren Werte des RISC-
Controllers.

background image

werden die Werte mit maximaler
Geschwindigkeit in der Schleife (begin-
nend bei Label LOOP:) an den Port B
ausgegeben. Dieses Programm kann
man nun vielfältig abwandeln. Durch
den Einbau von Warteschleifen kann
man z.B. Signalformen mit sehr langen
Periodendauern realisieren, die mit
Quarzgenauigkeit bzw. taktsynchron
ablaufen. So stellt es kein Problem dar,
das Programm so zu modifizieren, daß
die Signalform in den ersten 6 Taktzyklen
gleichbleibt, es dann aber 428376233
Zyklen dauert, bis das Spielchen von
vorne losgeht. Dazu braucht man
gerade mal einen Zähler, der die not-
wendige Zahl von Zyklen zählen kann.
Dazu reichen 32 bit, d.h. 4 Register des
Prozessors mit ein paar Additionsbefeh-
len tun diesen Job. Zudem braucht man
nicht umzulöten, wenn sich die Zahl der
Zyklen ändert. Man muß nur ein paar
Konstanten im Programm ändern, und
weiter geht’s. Dies ist eine Flexibilität, die
man mit klassischer verdrahteter Logik
nicht hat, und für die man in program-
mierbarer Logik oft einiges an Geld
bezahlen muß (insbesondere für Ent-
wicklungstools). In der Softwaresamm-
lung auf der Diskette befindet sich übri-
gens ein Beispiel eines einfachen Pat-
tern-Generators, wobei die Muster noch
durch eine serielle Schnittstelle einge-
stellt werden (über XPATGEN2.EXE und
XPATGEN2.PAT).

980082-1

Im zweiten und letzten Teil geht es weiter mit
Programmbeispielen, wie Frequenzteiler,
numerisch gesteuertem Oszillator (NCO),
Zeitmessung und Frequenzmessung.

X-6 - 10/98 Elektor

EXTRA

———————————————————— PC-P

LUS

Tabelle 1. Inhaltsübersicht der
Programmdiskette

Bild 5. Dieses kleine und übersichtliche
Programm erzeugt das in Bild 4 gezeigte
Impulssignal.

Tabelle 1.

PC Programme

SER90

Download von Programmen ans Experimentierboard
(PASCAL-Quelltext ist auch auf der Diskette)

V24COM

V24 serielles Kommunikationsprogramm
(PASCAL-Quelltext ist auch auf der Diskette)

AVRASM.EXE

AVR-Assembler (DOS-Version)

AT90S1200 Beispielprogramme
Name

Aufgabe

XSEROUT1

Ausgabe eines Zeichens via RS232, 9600 Bit/sek

XHEXOUT1

Ausgabe von Registern, hexadezimal via RS232

XHEXOUT2

Ausgabe aller 32 Register (Dump) via RS232

XDECOUT1

Ausgabe von 24-Bit Werten (0..16777215)
Dezimal via RS232

XSERIN1

Einlesen eines Zeichens via RS232 9600 Bit/sek

XFMES1

Frequenzmessung bis 5 MHz, 1 Sek. Messzeit,
RS232 Ausgabe dezimal mit 9600 Bit/Sek

XTMES1

Zeitmessung 1 ms bis 8 Sekunden 0,5 ms Aufloesung
Ausgabe via RS232, 9600 Bit/Sek

XNCO1

numerisch gesteuerter Oszillator

77,5 KHz Ausgang mit 12-MHz-Quarz

XNCO2

numerisch gesteuerter Saegezahnoszillator,
programmierbar via RS232

XFRQDIV1

Frequenzteiler durch N, N via RS232 programmierbar

XPATGEN1

Einfacher 8 Kanal Pattern-Generator

XPATGEN2

Einfacher 8 Kanal Pattern-Generator

via RS232 einstellbares Muster

XDIV625

Teiler durch 625, nicht ueberlappende Pulse

ldi r16,$0FF ; set output B to totem-pole
out DDRB,r16

ldi r17,0b0001 ; set patterns into registers
ldi r18,0b0010
ldi r19,0b0100
ldi r20,0b0110
ldi r21,0b0010
ldi r22,0b0000

LOOP: out PORTB,r17 ; output each register to PORT

out PORTB,r18
out PORTB,r19
out PORTB,r20
out PORTB,r21
out PORTB,r22
nop ; two extra cycles
nop
rjmp LOOP ; this takes also 2 cycles


Wyszukiwarka

Podobne podstrony:
Geschwindigkeit ist keine Hexerei Teil2
Messen mit dem NTC
Der Zionismus im Komplott mit dem Nationalsozialismus 1
Celmer, Michelle Caroselli Inheritance 01 Im Bett mit dem besten Freund
Robert Walser Der Mann mit dem Kürbiskopf 2
Apache Cochise 02 Mit dem Abend kam das Grauen
Charmed 18 Date mit dem Tod Elizabeth Lenhard
Ritter Roland 18 Joachim Honnef Hochzeit mit dem Mordgesellen
der betrug mit dem globalklima
Ritter Roland 03 Ekkehart Reinke Der Kampf mit dem Drachen
Carlisle, Kate Man of the Month Heisser Flirt mit dem Feind epub(1)
Die Christen wurden mit dem Bann belegt
Celmer, Michelle Black Gold Billionaires 01 Mein Monat mit dem Millionaer
Blaulicht 115 Andreew, Alexander Die Dame mit dem Trick
Blaulicht 156 Wittgen, Tom Der Mann mit dem Reiselord
(DER SPIEGEL 43 2002 Was ist ein Was ) Gespräch mit Bickerton
Mann, Catherine Flitterwochen mit dem Millionaer
Metzger, Barbara Begegnung mit dem Schicksal

więcej podobnych podstron