ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 14.06.2025

Просмотров: 3135

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

8.4 The EEPROM Memory of the AVR Microcontrollers

113

Note that before launching the actual write command, the program disables all interrupts. The reason for this is that an interrupt occurring between the execution of steps 4 and 5 would delay the moment when EEWE is set beyond the limit of four cycles after EEMWE is set. Writing EEWE in step 5 would find EEWME cleared by hardware, and the whole write operation would fail.

9

HC11 Development Board

9.1 In this Chapter

This chapter contains the description of a simple development board based on the microcontroller 68HC11F1, and related software utilities, intended to allow the user to write and test software applications for this microcontroller.

9.2 Description of the Hardware Module

A development system for the study of a microcontroller comprises a hardware module and a set of software utilities (cross-assembler, compiler, etc). Along with the data sheets and application notes from the manufacturer, this allows the user to reach a clear understanding of the resources and capabilities of that specific microcontroller, and to write and test software applications for it.

The module presented here is one of the simplest possible. It is built around the Motorola 68HC11F1 microcontroller, operating with an external EEPROM memory AT28C256, easily reprogrammable around 10 000 times. Test programs can be written directly to AT28C256 using a standard commercial EPROM programmer.

The 68HC11F1 microcontroller does not have internal program memory – it is designed to work with external ROM in expanded mode. For this purpose, the microcontroller can provide up to four chip select signals for external memory or other I/O devices. The way these signals activate, their polarity and relative priority are software controlled. The schematic of the hardware module is presented in Fig. 9.1.

There are very few external components, besides the microcontroller. The program memory is connected directly to the address and data buses, and the chip select signal CSPROG is provided by the microcontroller, without the need of an external address decoder.

The external clock circuit is implemented using the crystal Q1 (8 MHz typical), the capacitors C5 and C6 (15–22 pF) and the resistor R1 (1–10 M). This type of oscillator circuit is typical of all HC11 family members.

116

9 HC11 Development Board

D0 D1 D2 D3 D4 D5 D6 D7

VCC

GND

PA7

PA5

PA3

PA1

VCC

AN7

AN5

AN3 AN1

GND

PD5 PD3 PG3 PG1 VCC

11 12 13 15 16 17 18 19

28

14

9 7 5 3 1

9 7 5 3 1

9 7 5 3 1

D0

D1

D2

D3

D4

D5

D6

D7

VCC

VSS

SV1

GND10

PA6 8

PA4 6

PA2 4

PA0 2

SV3

SV2

IC3

WE\

GND10

AN6 8

AN4 6

AN2 4

AN0 2

10

8 6 4 2

A0

A1

A2

A3

A4

A5

A6

A7 A8 A9

A10 A11 A12 A13 A14

OE\ CE\

GND

PD4 PD2

PG2

PG0

10

9 8 7 6 5 4 3

25 24 21 23

2

26

1

27

22 20

A0 A1 A2 A3 A4 A5 A6 A7

A8 A9

A10

A11

A12 A13 A14

VCC

CSPRG

GND

PA0

PA1

PA2

PA3

PA4

PA5

PA6

PA7

A0

A1

A2

A3 A4 A5 A6

A7

A8

A9

A10

A11

A12

A13

A14

D0 D1 D2 D3 D4 D5 D6 D7

IC1

42

41

40

39

38

37

36

35

58

57

56

55

54

53

52

51

50

49

48

47

46

45

44

43

9

10

11

12

13

14

15

16

5

68HC11F1CFN2

RESET#

XTAL

EXTAL

E

4XOUT

IRQ#

XIRQ#

PA7

MODA/LIR# MODB/VSTBY

A1/PF1 PE0/AN0

PE1/AN1

PE2/AN2

PE3/AN3

PE4/AN4

PE5/AN5

PE6/AN6 PE7/AN7 A9/PB1 VRH

VRL A12/PB4 PG0A13/PB5 PG1A14/PB6 PG2A15/PB7 PG3 PG4DO/PC0

PG5D1/PC1

PG6D2/PC2 PG7D3/PC3 D4/PC4 PD0D5/PC5 PD1D6/PC6 PD2D7/PC7 PD3 PD4 R/W\ PD5

PA0

PA1

PA2

PA3

PA4

PA5

PA6

A0/PF0

A2/PF2

A3/PF3

A4/PF4

A5/PF5

A6/PF6

A7/PF7

A8/PB0

A10/PB2

A11/PB3

17

7 6 4 8

19 18

3 2

59

61 63 65 60 62 64 66

68

67

27

26

25

24

23 22 21 20

28 29 30 31 32 33

RESET

XTAL

EXTAL

IRQ

XIRQ

MODA MODB

AN0 AN1 AN2 AN3 AN4

AN5

AN6

AN7

VCC

GND

PG0

PG1

PG2

PG3

CSPRG

RX

TX

PD2

PD3

PD4

PD5

C5

XTAL

EXTAL

R4

RESET

Q2

GND

C1+

-C1

C2+

-C2

T1IN T2IN R1OUT

R2OUT

MAX232

MOSIPD31

SSPD53

5

SCKPD47

MISOPD29

SV5

JP4

C1

C2

TX

RX

PG0

3

4

5

11 10 12

9

GND

C6

Q1

VCC

C2

R2

R3

IC2

2

6

14

7

13

8

VCC

2 2

4 4

6 6

8 8

10 10

SV4

R1

V+

V-

T1OUT T2OUT R1IN

R2IN

R5

JP1

XIRQ

C4

C3

1 3 5 7

9

R7 R6

IRQ

VCC C7

GND

B1

C10

GND

R8

MODA

JP3

IC4

INOUT

GND

C8

MODB

JP2

X1-1

X1-2

Fig. 9.1. Schematics of the HC11 development board


9.3 Assembling and Testing the Module

117

The RESET circuit comprises the transistor T1 along with resistors R2, R3, R4, capacitor C9 and connector JP1. At power-up, the capacitor C8 starts charging through R2, feeding current to the base of T1. This saturates the transistor for a time interval comparable to R2×C9, generating an active LOW pulse on the RESET line of the microcontroller. A similar process occurs when the terminals of JP1 are short-circuited, providing a means for manual reset of the module.

The IC2 circuit (MAX232) along with capacitors C1, C2, C3, and C4 implement the typical RS232 interface presented in Chap. 3.

The control signals MODA, MODB and the external interrupts IRQ and XIRQ are pulled up to Vcc using four 10 K resistors. The rest of the I/O lines of the microcontroller are brought to three header-type connectors SV1, SV2, SV3.

The module is powered from a DC or ac adapter, able to deliver 9–12 V at 250 mA. The input voltage is applied through the bridge rectifier B1 to the voltage regulator IC4 (7805) that generates the +5 V supply voltage.

9.3 Assembling and Testing the Module

All the projects described in this section come with detailed schematics and printed circuit board drawings available on the accompanying CD. The PCB drawings are created with Eagle 4.11 from CadSoft. A freeware version of this software is available for free download from Cadsoft, so that the user can view, edit, and print all the schematics and the PCB drawings of the projects described in this book.

The major advantage of this CAD software is that it is very easy to learn, and the freeware version, despite some limitations, still allows the user to design pretty complex microcontroller based circuits.

Most companies manufacturing custom printed circuit boards accept drawings created with Eagle 4.11, and the cost per square decimeter of printed circuit board is reasonable. However, in this particular case, the circuit is so simple that it can be easily realized on a prototyping board using the wire wrap technique. It is recommended to use appropriate IC sockets for all ICs, except IC4.

Refer to Fig. 9.2 for a possible component layout of the PCB. Once you have the module assembled, follow this test sequence:

1.Apply power to the module, without having the ICs inserted in the sockets.

2.Check the +5 V voltage on every socket.

3.Check the RESET circuit by measuring the voltage in the collector of T1. When a short-circuit is applied to the terminals of JP1, the voltage on this point drops near 0 V, while without short-circuit it stays near the Vcc value.

4.Insert the ICs into the sockets and apply power to the module. With an oscilloscope check the E clock on pin 4 of the microcontroller. If you don’t have an oscilloscope, use a voltmeter to measure the RESET signal on the collector of T1. If the oscillator fails to operate, the clock monitor circuit of the microcontroller will force this line to logic zero.

118 9 HC11 Development Board

5.If everything is alright, install the cross-assembler, as described in the next paragraph and assemble a simple software example, like the one presented in this chapter in exercise X9.1.

6.Using a commercial EPROM programmer, program the AT28C256 memory with the binary file created by the cross-assembler, and check the expected behavior of the module.

1

IC4

X1

1

SV5

SV3

B1

JP4

C7

C8 1

C10 SV1

IC3

Q1

IC1

SV2

C6

R1

1

C5

SV4

R4

1

R5

C3

Q2

IC2

JP3 JP2

R6

R3

R7

R2

C1

R8

JP1

C2

C4

C9

Fig. 9.2. Component layout of the PCB for the HC11 development board

10

9

5

9

2

1

1

6

Fig. 9.3. Layout of the adapter cable for RS232

9

5

5

9

6

1

1

6

Fig. 9.4. Layout of the NULL MODEM cable


9.4 Description of the Software Components

119

For ALL the projects described in this book, the RS232 interface is connected to a header-type connector. The adapter cable between the header connector and the NULL MODEM cable is presented in Fig. 9.3, and the NULL MODEM CABLE is shown in Fig. 9.4.

9.4 Description of the Software Components

The freeware cross-assembler offered by Motorola for the HC11 family, called AS11.EXE, is extremely simple and has many weak points. Among them, the most important are:

It does not allow the INCLUDE directive, thus forcing the user to write all the source code in a single file. This can be extremely inconvenient. For example, the source code for the free monitor offered by Motorola (BUFFALO) has over 5000 lines of code. Obviously, it is virtually impossible to debug such a program, if anything goes wrong. On the other hand, if the assembler accepts INCLUDE, the source code can be organized in smaller, reusable, blocks of code, placed in distinct files, according to some user selected criteria, e.g. TIMER.ASM, SCI.ASM, OUTPUT.ASM, etc. All these software modules are invoked by a main module, using the INCLUDE directive.

It does not allow macro definitions, thus severely limiting the freedom of the user to customize his/her programming environment.

For these reasons, we chose to use a different freeware cross-assembler, called ASHC11, created by Peter Gargano. Besides INCLUDE and macro definitions, this cross-assembler has many additional features. See Appendix B2 for details on how to download this free software.

Getting Started

Step 1. Installing the Cross-Assembler

ASHC11 is a DOS application and does not require any special installation procedure. To install it, create a folder on the hard drive with the name C:\ASHC11, and unzip the downloaded archive to this folder. Then create a DOS window, having the working directory in C:\ASHC11.

To do this, in Windows™ 9.x, press the right button of the mouse on the desktop, and, from the list of options presented, choose New, then Shortcut. In the space reserved to define the command line associated to the new shortcut, type “Command.com”, then press the Next button, and Finish.

The effect of this operation is that a new shortcut appears on the desktop, named “MS-DOS™ Prompt”. To complete the job, specify the working directory for this

120 9 HC11 Development Board

shortcut. To do this, select the new shortcut, then press the right button of the mouse and choose the option Properties, and then Program.

In the field labeled Working, type C:\ASHC11, and then press OK. Double clicking on the new shortcut opens a DOS window, where applications can be launched from the command line by simply typing their names, followed by [ENTER].

To simplify the use of the assembler, we created a batch file, called LASM.BAT, with the following contents:

ashc11 %1.asm -LIST=%1.lst bincvt %1.s19 -OV

The first line invokes the assembler, and instructs it to create a list file, having the same name as the source file, and the extension .LST. The default extension for the source file is assumed to be .ASM.

The second line calls a conversion utility BINCVT, provided by the author of ASHC11 in the same archive with the assembler. BINCVT creates a binary file having the same name as the source, and the extension .BIN. This can be useful, since some EPROM programmers do not properly handle the S19 output files generated by the assembler.

The batch file must be invoked by specifying the name of the source file, without extension, like in the example below:

LASM STEP1

This causes the file STEP1.ASM to be open and assembled. The following files are created in this process:

STEP1.S19 – this contains the actual executable code in Motorola S19 format.

STEP1.BIN – contains the executable code in plain binary format.

STEP1.LST – this is the list file.

The list file is a text file, containing detailed information on the source file, as well as on the result of the assembly process – the output code, and the address where this will be placed in the memory map. The list file also explains the variable definitions, and gives a short description of the errors that might occur during assembly.

ASHC11, like all MS-DOS™ based programs, admits only short file names in the format “8.3”, i.e. maximum eight characters for the file name, and maximum three characters for the extension. If you are using a Windows™ based text editor to create your source files, like Notepad, make sure you observe this rule when you save your files on disk.

If you are not familiar with MS-DOS™ programs, consult Appendix A15 for the description of a software utility that allow invoking the assembler from a Windows™ application. This utility also contains a text editor for creating and editing the assembler source files.


9.4 Description of the Software Components

121

Step 2. Defining the Memory Sections for the Program

Consider the following simple source file: (STEP1.ASM)

TITLE Defining origins for DATA and CODE sections

DATA

ORG

$100

;DATA starts at $100

VAR1

DS

1

;reserve 1 byte for

a variable

CODE

ORG

$8000

;CODE starts at $8000

RESET

EQU

*

;Assign the value $8000 to

;the label RESET

LDAA

VAR1

;some code here

BRA

RESET

*Define the RESET vector here

ORG

$FFFE

DW

RESET

;place $8000 at the

address of ;vector

END

Though very simple, this code fragment contains some fundamental elements, to be considered in any program, written for any microcontroller. It shows how to define the starting address of the two main memory segments: the CODE segment (or section), where the executable code is placed, and the DATA segment, normally a RAM zone, reserved for variables. This is done with the ORG (Origin) directive.

The assembler associates a pointer to each predefined memory section (DATA, CODE). The ORG directive initializes the pointer of the current section to the value specified as a parameter to ORG.

Symbolic parameters for ORG are allowed, like in this example:

RESET EQU $8000

CODE

ORG RESET

The assembler automatically increments the pointer associated with the section, after each operation that reserves space in that section. In the example below, three variables are defined:

DATA

ORG $100

VAR1 DS 1

BUF1 DS 10

VAR2 DS 1