Sie sind auf Seite 1von 6

PICAVR32Programmer

Hard- und Software zur Programmierung


von PIC- und AVR-Mikrocontrollern
Die hier vorgestellte
Hard- und PC-Software ermglicht die
Programmierung
der Mikrocontroller
PIC 16C84/16F84
(Microchip) und der
AVR-Typen
AT90S1200,
AT90S2313,
AT90S4414 und
AT90S8515 (Atmel).
All diese (RISC)Mikrocontroller
sind in-circuitprogrammierbar,
besitzen einen
internen
Flash/EEPROMProgrammspeicher, SRAM, diverse
Ein/Ausgabe-Leitungen
und ein vom Mikrocontroller selbst beschreibbares EEPROM.

Von Wolfgang Schrder

16

Die Anwendung von Mikrocontrollern ist aus der heutigen Elektronik nicht mehr
wegzudenken. Sie haben eine Vielzahl
von Anwendungsgebieten, die sich
von der PC-Maus ber Steuerungseinheiten in der Industrie bis zur
Waschmaschine erstrecken. Nun wollen die wenigsten Elektor-Leser eine
eigene Waschmaschine entwickeln,
aber wer hat nicht schon mal ber
timergesteuerte Jalousien, infrarotgesteuerte Garagentore, Lichtorgeln,
digital gesteuerte Labornetzteile oder
hnliches nachgedacht? In all diesen
Anwendungsgebieten bieten sich Pro-

zessorsteuerungen mit mehr oder weniger leistungsfhigen Mikrocontrollern


an. Zu den etwas weniger leistungsfhigen, aber auch preiswerteren
Mikrocontrollern zhlen die PICs der
Typen 16C(F)84. Diese RISC-Controller
besitzen einen Befehlssatz von etwas
mehr wie 30 Befehlen (eben: reduced
instruction set!). Sie knnen mit maximal 10 MHz Taktfrequenz betrieben
werden und haben dann eine Befehlszykluszeit von 400 ns (ein Viertel der
Taktfrequenz). Wenn mehr Rechenleistung beziehungsweise mehr I/O-Pins
bentigt werden, sollte man zu Atmels
Elektor

6/98

K8

IC2

5V

5V

C3

C4

C7

C10

100
25V

100n

100n

10
16V

100n

100n

RB0

10k

BS250

R6

MCLR

1k
R4

100n

100n

10
16V

PD0

17

PD2

PD3

DEBUG

RA1

V+

C1+

RB3

RA3
RA4

TXD5

RXD5

11

K2

16

CTS5

10

PMISO

12

PIC16C84
10
RB4
-10/P
11

RTS5

PONL

12

PMOSI

13

AT RES

RB5
RB6

MCLR

RB7

OSC1

T1OUT

T2IN

T2OUT

R1OUT

R1IN

R2OUT

R2IN

C20

C18

CTS

13

TXD

RTS

5V

VC14

R8

C13 ...C17= 1 / 16V

5V

C5

K1

5V

IC5

C19

100n

P1

S4

IC5a

IC5b

IC5d 8

PMISO

PMOSI

PONL

18p

10MHz

10k

PD0

PD1

15

C2

PD3

18p

RXD

C2+

7
100n

14

C17

C16

15
X2

T1IN

MAX232

CLKOUT

16

IC7
C1

14

IC5 = 74LS07

8x 1k

RB2

IC8

RA2

R9

5V
1

RB1

IC5c 6

1N4001

R3

RA0

5V

R7

T1

4k7

C27

C23

18

100

10
25V

D1

C24

100k

C26

PD1

270

12V

R5

IC6
78L12

C15

10k

14

C1

R13

100n
C2

C13

5V

C6

5V

7805

IC5e

11

IC5f

B3

RS

B2

R/W 5

B1

EN

6
7
8

5V

12

C9

10
100n

A0

10

13

20

B6

B5

B7

A2

B7

B6

A1

A3
A4

5V

A5
A6

14

5V

A1

17

A2

A3

A4

3
4

MCLR

R1

8x 1k

RA0

RB1

RA1

RB2

IC1

RA2

PIC16C84

RA3
RA4

RB3
RB4
RB5
RB6

MCLR

RB7

OSC1

CLKOUT

16

15

B0

B1

B2

B3

10

B4

A2

A3

11

B5

12

B6

13

B7

PD0

A6

11

PB0

IC9

PD1

A5

PB1

PD2

PB2

PD3

PB3

AT90
S1200

PD4

PB4

PD5

PB5

PD6

PB6
PB7

RESET

5V
R10

12 B0
13 B1

XTAL1

9
X1

15

16 B4
17 B5

K3

18 B6

MCLR

19 B7

C11

B0

K6

B6

IC3

T2
C25

C21

C22

18p

4MHz

18p

19 1

A6

A5

A4

A3

A2

A1

A0

B7

B6
7

B0

B1

B2

B3

B4

B5

B6

B7

5V
K7
B7
B6
MCLR

10

IC4

5V

B6

&

B7

&
K5

5V
EN

20

C8

IC3
10

20

D16

D15

D14

D10
2

D13

18 17 16 15 14 13 12 11

74HC541

D9

D8

D7

D6

D5

D4

D2

5V

D3

18 17 16 15 14 13 12 11

74HC541

D12

EN

D11

S2

IC4
100n

B5

R11

10n

B5

B4

B3

B2

B1

B0
19 1

B5

K4

5V

B2

B4

DATA

5V

BS170

B3

B7

10

X3

BS170

B1

CLK

RESET

18p

4MHz

VPP

B6

XTAL2

R2

C12

18p

MCLR

B7

T3
PD2

14

S5

10k

13

A3

16

AT RES

270

12

A2

15 B3

DEBUG
2
S1

11

A1

14 B2

RESET

5V

10k

RB0
18

A1

A4

S3
A0

A0

A0

A0

A1

A2

A3

A4

A5

A6

10

8
9
10

R14

Bild 1. Die Schaltung


des Programmiergerts mit der Programmierfassung IC9.

AVR-Mikrocontrollern greifen. Hierbei


ist der kleinste, in Elektor schon vorgestellte AT90S1200 ist mit den PICs
vergleichbar, grere AVRs bieten
zustzliche Features wie eine intergrierte RS232-Schnittstelle, eine serielle
Controller

Takt

RAM

8x 2k2

R12

8x 2k2

980049 - 11

SPI-Schnittstelle, Pulsweitenmodulation, zwei Timer, bis zu 120 Befehle


und so weiter. Auerdem verarbeiten
sie die Befehle mit voller Taktfrequenz und sind damit bei gleicher
Quarzfrequenz viermal so schnell wie
ein PIC. In der nachfolgenden Tabelle
ist eine Gegenberstellung der einzelnen Mikrocontroller mit ihren wichtigsten Leistungsmerkmalen dargestellt. Die derzeit besterhltlichen
Mikrocontroller sind brigens der PIC
Progr.Flash

EEPROM

I/O

16F84, AT90S1200 und AT90S8515


(maximal 8 MHz).

AUFBAU UND
BESCHREIBUNG
HARDWARE

DER

Die hier vorgestellte Hard- und PCSoftware programmiert Microchips


PIC 16C84/16F84 sowie alle derzeit
von Atmel verfgbaren AVR Mikrocontroller (AT90S1200, AT90S2313,
AT90S4414, AT90S8515). Alle mit der
TIMER

RS232

SPI

PWM

PIC 16C(F)84

10 MHz

36 B

1024 W

64 B

13

AVR AT90S1200

16 MHz

0 B*

512 W

64 B

15

AVR AT90S2313

20 MHz

128 B*

1024 W

128 B

15

AVR AT90S4414

20 MHz

256 B*

2048 W

256 B

32

AVR AT90S8515

20 MHz

512 B*

4096 W

512 B

32

* + 32 8 Bit Register

Elektor

6/98

17

IC2

D2 - - - - - - - - - D9 D10 - - - - - - - D16

C1

H2

C4
C8

C26
C24 C10
K8

C27
R1

R6

K2

R3

S1

S4

S2

S3

IC5

IC7

IC8

C14

C16

C3

C9

R7
T1

R4

R5

IC4

R13

C2

IC3

C23

980049-1 980049-1

D1

H1

R12

R14

C17

C13

C15

C6

R2

K4

IC9
S5

K5

T3

C21

K1

C22

980049-1

980049-1

H4

K6
K7

H3

R10 R11

X3

K3

(C) Segment

C18
T2

C12
C11

C5
C25

C19

P1

C20
X1

R9

IC1

R8

X2

C7

IC6

ausschlielich unter Windows 95 arbeiteten Shell


PICAVR32 programmierbaren (RISC)-Mikrocontroller
sind in-circuit programmierbar, verfgen ber
einen
internen
Flash/EEPROM-Programmspeicher, SRAM, diverse
Ein/Ausgabe-Leitungen und
ein vom Mikrocontroller
selbst
beschreibbares
EEPROM.
Der Nachbau der Hardware
gestaltet sich unproblematisch, da bis auf den zu programmierenden PIC nur
Standard-Bausteine verwendet wurden. Die Hardware ist so ausgelegt, da
sich der PIC wie auch die
im DIL-Gehuse erhltlichen
AT90S1200
und
AT90S2313 in einer DIL-Fassung direkt auf dem Programmierboard programmieren und testen lassen.
Alle Mikrocontroller lassen
sich zustzlich ber die
Steckverbinder K6 (AVR)
und K3 (PIC) auch in-circuit
programmieren, was besonders fr die im PLCCGehuse
erhltlichen
AT90S4414 und AT90S8515
interessant ist. Das Programmierboard wird mit
einem
handelsblichen
Steckernetzteil (15 V/500
mA) ber K8 mit Strom versorgt. Wenn nur AVRs programmiert werden sollen,
reicht auch ein 9-V-Steckernetzteil aus, da diese Mikrocontroller keine zustzliche
Programmierspannung
bentigen. Die Betriebsspannung wird vom Spannungsregler 7805 (IC2) und
den
zugehrenden
Lade/Entkoppel-Kondensatoren C1..C4 stabilisiert. Fr
die zustzliche PIC-Programmierspannung von 12
V sorgt ein 78L12 (IC6).
Das
Herzstck
des
PICAVR32 ist natrlich der
PIC IC8, der fr die Kommunikation einerseits mit
dem PC, andererseits mit
dem zu programmierenden
oder zu lesenden Mikrocontroller verantwortlich. Die
Verbindung zum PC wird
mit einem gewhnlichen
9poligen 1:1-DSUB -Kabel

Bild 2. Alles pat


auf eine doppelseitige Platine!

18

Elektor

6/98

Stckliste

C13...C17 = 1 /16 V stehend


C25 = 10 n
C26 = 10 /25 V stehend

Widerstnde:
R1,R3 = SIL-Array 81 k
R2,R8 = 270
R4 = 100 k
R5,R10,R11,R13 = 10 k
R6 = 1 k
R7 = 4k7
R9 = 100
R12,R14 = SIL-Array 82k2
P1 = 10 k

Halbleiter:
D1 = 1N4001
D2...D16 = LED low current
T1 = BS250
T2,T3 = BS170
IC1 = PIC16C84 *
IC2 = 7805
IC3,IC4 = 74HC541
IC5 = 74LS07
IC6 = 78L12
IC7 = MAX232
IC8 = PIC16C84-10/P (EPS 986509-1)
IC9 = AT90S1200 *

Kondensatoren:
C1,C3,C5...C10,C20,C23,
C24 = 100 n
C2 = 100 /25 V stehend
C4,C27 = 10 /16 V stehend
C11,C12,C18,C19,C21,C22 = 18 p

(Stecker-Buchse) hergestellt. Der


bekannte Pegelwandler MAX232 (IC7)
auf dem Programmierboard wandelt
die RS232-Pegel (12 V) in
TTL/CMOS-kompatible 5-V-Signale
und leitet diese direkt zu den entsprechenden I/O-Pins von IC8. Der Controller gibt seinerseits die durch das
Protokoll zur PC-Software vorgegebenen Steuerbefehle entweder an den
zu programmierenden PIC (IC1) oder
AVR (IC9) weiter. Beide Mikrocontrollertypen werden in diesem Programmiergert ber ein SP-Interface seriell
programmiert. AVRs bentigen hierzu
die I/O-Pins 5..7 von Port B (MOSI,
MISO, SCK), der PIC wird ber seine
I/O-Pins 6 und 7 von Port B (CLK,
DATA) programmiert. Dazu kommen
whrend der Programmier- und
Leseoperationen bei beiden Chips
noch die Betriebsspannung (GND,
VCC) und die /RESET-beziehungsweise /MCLR-Leitung. Die beiden
schon erwhnten In-circuit-Programmierstecker sind entsprechend ausgelegt. Beim Design eigener Schaltungen, in denen diese Art der Programmierung verwendet werden soll, ist
natrlich darauf zu achten, da die
Hardware des Programmiergertes
fr die Programmierung nicht mit der
Zielhardware kollidiert! Hier sollte
man auf entsprechende Serienwiderstnde zu den whrend der Programmierung ntigen Anschlssen achten.
Um Schden am Programmiergert
whrend der Testphase eigener Projekte zu verhindern, sind auf dem
Programmiergert ein Open-Collector-Treiber 74LS07 (IC5) und die Transistoren T2 und T3 vorgesehen, die
alle Leitungen von IC8 puffern. Durch
die Verwendung des Open-CollectorTreibers ist es allerdings auch notwendig, da whrend der Programmierung die DIP-Schalter fr die Pull-UpWiderstnde beim AVR an PortB (S1.6
bis S1.8) und beim PIC an S1.7 und
S1.8 eingeschaltet sind. Die DIP-Schalter S1 und S4 sollten ein-, S2 und S3
ausgeschaltet sein.
Elektor

6/98

Die /RESET-Leitung des AVR wird


ber T2 geschaltet. Die fallende Flanke
am /RESET-Pin ist zur Einleitung des
Programmiervorganges beim AVR
wichtig. Da /MCLR am PIC whrend
der Programmierung auf 12 V liegen
mu, ist hier auer T3, der fr den
eigentlichen Reset des PICs zustndig
ist, noch T1 ntig. Im Normalbetrieb
sind T3 sowie T1 gesperrt. Am Knoten
des Spannungsteilers R5/R7 liegt eine
Spannung von etwa 4 V, die ber R6
an den /MCLR-Eingang des zu programmierenden PICs IC1 gelangt. Um
einen Reset des PICs auszufhren,
wird der /MCLR-Pin ber T3 nach
Masse geschaltet. Die Programmierspannung wird durch Einschalten des
P-Gate-MOSFETs erzeugt, der im leitenden Zustand R5 kurzschliet, so
da an R6 12 V anliegen.
Der PIC IC1 wird durch X1 mit einer
Taktfrequenz von 4 MHz betrieben,
aber auch andere Taktfrequenzen sind
denkbar. Fr den AVR stehen ein
Quarz und alternativ ein Quarzoszillator zur Verfgung.
Die DIP-Schalter helfen beim Test von
Ein/Ausgaben der beiden Mikrocontroller. Mit S1 und S4 knnen fr alle
Ports entsprechende Pull-Up-Widerstnde (1 k) zugeschaltet, mit S2 und
S3 Low-Eingabepegel fr die Ports
eingestellt werden. Man sollte allerdings darauf achten, da die Eingabeschalter nicht auf als Ausgang deklarierte Ports angewandt werden, da
dies zu Schden am entsprechenden
Port von IC1 beziehungsweise IC9
fhren kann. Die Low-current-LEDs
D2..D16 informieren ber die Portzustnde und werden ber IC3 und IC4
gepuffert.
Der Test der fertig aufgebauten Hardware erfolgt spter nach der Beschreibung der Software und einigen eigens
dafr entwickelten Testprogrammen.

DIE SOF TWARE


Mit der Software dieses Projekts lassen sich Assembler-Programme fr die

Auerdem:
S1...S4 = 8facher DIP-Schalter
S5 = 4facher DIP-Schalter
X1,X3 = Quarz 4 MHz
X2 = Quarz 10 MHz
K1 = 28poliger Pfostenverbinder
K2 = 9polige Sub-D-Buchse, gewinkelt, fr Platinenmontage
K3,K6,K7 = 6poligerSIL-Verbinder
K4,K5 = 25poliger Pfostenverbinder
K8 = Niederspannungsverbinder fr
Platinenmontage
Platine: EPS 980049-1
Programmierter PIC: EPS 986509-1
Diskette mit PICAVR32: EPS986019-1
(siehe Serviceseiten in der Heftmitte)

Mikrocontroller PIC und AVR entwickeln, programmieren und lesen.


Hierbei kann sowohl der Programmals auch der EEPROM-Speicher gelesen und beschrieben werden. Nachdem das Programmiergert ber das
9polige DSUB-Kabel (1:1) mit der seriellen Schnittstelle des PCs verbunden
und das Programmiergert mit Strom
versorgt ist, kann es losgehen.
Als erstes sollte man zum Testen der
Hardware die Testprogramme TESTPIC.ASM
beziehungsweise
TESTAVR.ASM brennen. Neben dem
Controllertest werden alle LED-Ausgaben mit einem Lauflicht berprft.
Hierzu geht man wie folgt vor:
PICAVR32 starten
Nach dem Start sucht PICAVR32
zunchst die Hardware. Wenn die
Hardware sich nicht meldet, wird in
der Statuszeile am unteren Bildschirmrand No COM Port selected ausgegeben.
Schnittstelle whlen
Nun mu unter OPTIONS|COM PORT
der richtige Port ausgewhlt werden.
Wenn das Programmiergert gefunden wird, steht in der Statuszeile
PICAVR32 Board (PIC Version
x.x) ready. und der Menpunkt
CONTROLLER ist freigeschaltet.
Assemblerdatei laden
Nun sollte unter FILE|OPEN der entsprechende Assembler-Quelltext geladen werden, alternativ kann auch
unter FILE|LOAD INTELHEX32 die
fertige HEX-Datei geladen werden.
Assemblieren
Wenn das Assemblerfile geladen
wurde, mu dies durch FILE|START
ASSEMBLER assembliert werden.
Download
Anschlieend erfolgt unter CONTROLLER|DOWNLOAD PROGRAM die Programmierung des AVR oder PICs.
Sofern hierbei keine Fehler aufgetreten

19

sind, wird der Controller anschlieend


gestartet und die LEDs des Programmiergerts bilden ein (etwas durcheinandergewrfeltes) Lauflicht.

OPTIONEN
Nun steht der weiteren Programmierung nichts mehr im Wege. Vorher
jedoch zu den weiteren Optionen der
Software. Zu den einzelnen Menpunkten lt sich mit der F1-Taste
Hilfe anrufen. Die Mens FILE, EDIT
und HELP drften sich wohl soweit
selbst erklren, so da hierauf nicht
nher eingegangen werden mu.
Unter OPTIONS|CONTROLLER lt
sich der zu programmierende Controller einstellen. Wenn im AssemblerSourcefile in der ersten Zeile hinter
dem Semikolon der Prozessortyp angegeben wird, wird er beim Laden des
Sourcefiles automatisch eingestellt.
Unter OPTIONS|EDITOR lassen sich
die Editorschriftart -farbe und -typ
sowie die Hintergrundfarbe des Editors einstellen.
Die OPTIONS|ASSEMBLER OPTIONS stellen den Assembler und die
zum Aufruf notwendigen Parameter
ein. Es sollten fr den PIC der Microchip Assembler Release 1.4 und fr den
AVR der Atmel AVRASM Version 1.1
verwendet werden, und zwar jeweils
die DOS-Varianten. Die beiden
Assembler gehren brigens nicht
zum Lieferumfang der Software
986019-1, lassen sich aber im Internet
kostenlos downloaden.
OPTIONS|AUTODOWNLOAD startet,
wenn eingeschaltet, automatisch nach
erfolgreicher Assemblierung einen
Programm-Download.
OPTIONS|PIC DIFF DOWNLOAD
ermglicht einen schnellen differentiellen Programm-Download fr PICs.
Diese Option ist unter anderem ntzlich, wenn nur Parameter eines Programms und daher nur wenige Bytes
gendert werden mssen. Da die AVR
vor einem Download komplett
gelscht werden, ist diese Option nur
fr PICs verfgbar.
OPTIONS|SLOW PC sollte fr langsamere PCs ohne serielle FIFO eingeschaltet werden, wenn kontinuierlich
Fehler beim Download von Programmen auftreten.
OPTIONS|DEBUG MONITOR schaltet
einen Debug-Monitor ein, ber den
man mit einer Testausgaberoutine im
Mikrocontroller Hex-Werte ausgeben
kann. Das Debugverfahren und die
entsprechenden Routinen sind in der
Hilfe von PICAVR32 genauer erklrt.
Durch Anwahl von OPTIONS|SHOW
ERRORS wird die Fehlerausgabedatei
Bild 3. Einige Screendumps der Software
PICAVR32.

20

Elektor

6/98

des Assemblers angezeigt (Error-Viewer). Der Error-Viewer wird auch


automatisch geffnet, wenn nach dem
Assemblieren von Programmen eine
Fehlermeldung im Errorfile des
Assemblers aufgefhrt wird.
Alle Funktionen unter dem Menpunkt CONTROLLER betreffen den
Down/Upload von Programmen,
EEPROM und die Konfiguration der
einzelnen Controller. Die einzelnen
Funktionen sind hierbei abhngig vom
jeweils ausgewhlten Controllertyp.
CONTROLLER|DOWNLOAD schreibt ein
aktuell geladenes Hex-File beziehungsweise das letzte kompilierte
Assemblerprogramm in den Controller. PICAVR32 besitzt einen internen
Puffer fr das in den Mikrocontroller
zu schreibende Programm. Ein unter
FILE|LOAD INTELHEX32 geladenes
Hex-File wird genauso in diesen Puffer geladen wie der durch Assemblieren entstehende Machinencode. Dieser Puffer wird in PICAVR32 nicht grafisch dargestellt.
CONTROLLER|UPLOAD liest den Programmspeicher des Mikrocontrollers
und stellt den Inhalt Wort fr Wort in
einem Hex-Ausgabefenster dar. Wenn
ein Controller lesegeschtzt ist, wird
natrlich nur ein leerer Programmspeicher dargestellt (FFFFh beim AVR
und 3FFFh beim PIC). Die Ausgabe

Elektor

6/98

erfolgt in Form von Wrtern, da beide


Mikrocontroller eine entsprechende
Speicherorganisation aufweisen. Beim
PIC sind die Wrter 14 bit breit, beim
AVR 16 bit.
CONTROLLER|WRITE TO EEPROM
ermglicht das ndern von einzelnen
Bytes im EEPROM-Bereich des Mikrocontrollers. Die EEPROMs von PIC
und AVR sind byteweise organisiert.
CONTROLLER|UPLOAD EEPROM liest
das komplette EEPROM des Mikrocontrollers und stellt den Inhalt byteweise hexadezimal dar.
Unter CONTROLLER|CONFIGURE
CONTROLLER lassen sich die Grundkonfigurationsdaten des jeweiligen
Mikrocontrollers einstellen. Beim AVR
sind die Einstellungen sehr simpel, da
hier eigentlich nur die Mglichkeit des
Flash-Programmschutzes gegeben ist.
Beim PIC betreffen die Einstellungen
nicht nur den Programm- und
EEPROM-Schutz, sondern auch die
Einstellung des Oszillators des PowerUp- und des Watchdog-Timers.
Mit CONTROLLER|ERASE CONTROLLER lassen sich die Mikrocontroller
lschen. Diese Option ist sinnvoll, um
einen lesegeschtzten PIC wieder neu
programmieren zu knnen.
CONTROLLER|START CONTROLLER
fhrt einen Hardware-Reset des Controllers durch.

PROGRAMMIERUNG DER
MIKROCONTROLLER
Auf das Protokoll zur Programmierung
der beiden Mikrocontroller soll an dieser Stelle nicht weiter eingegangen
werden. Wer daran interessiert ist, findet die ntigen Informationen im
ATMEL AVR ENHANCED RISC
MICROCONTROLLER DATA BOOK
von Atmel und auf die Microchip DataSheets DS30430A und DS30189D hin, in
denen die Mikrocontroller und deren
Programmierung ausfhrlich beschrieben sind. Die Datenbltter sind brigens von beiden Herstellern auch im
Internet verfgbar. Hier sind auch die
Architektur und die Assemblerbefehle
der beiden Mikrocontroller ausfhrlich
beschrieben.
(9800xx)rg

Adressen:
Atmel GmbH
Otto von Guericke Ring 3
65205 Wiesbaden
Tel: 0 61 22 / 92 49 - 0
Fax: 0 61 22 / 92 49 - 33
Internet: www.atmel.com
Arizona Microchip Technology
Gustav Heinemann Ring 125
81739 Mnchen
Tel: 089/627144-0
Fax: ++49-(0)89-627144-44
Internet: www.microchip.com

21