ngô thanh bình Bộ môn Kỹ thuật điện tử Khoa Điện - Điện tử Trường Đại học Giao thông Vận tải Tóm tắt: Bμi báo nμy trình bμy về một thiết kế cho lập trình nhúng với vi xử lý AVR thông
Trang 1LậP TRìNH NHúNG VớI VI Xử Lý AVR
ThS ngô thanh bình
Bộ môn Kỹ thuật điện tử Khoa Điện - Điện tử Trường Đại học Giao thông Vận tải
Tóm tắt: Bμi báo nμy trình bμy về một thiết kế cho lập trình nhúng với vi xử lý AVR thông
qua một KIT phát triển có các bộ phận có thể điều khiển độc lập, giúp sinh viên bước đầu lμm
quen với lập trình phần cứng ứng dụng vμo thực tế
Summary: This report introduces a design for programming embedded with AVR
microcontroller by an evolution KIT whose parts can be controlled separately so as to assist
students in familiarizing with hardware programs and applications.
I Đặt vấn đề
Với các chuyên ngành về điện, điện tử, cơ khí tự động hoá, các kỹ sư để làm việc tốt đòi hỏi
rất cao các kiến thức về vi xử lý Lập trình nhúng là môn học liên quan nhiều tới thực tế, lập trình
vi xử lý với phần cứng và thiết bị ngoại vi cụ thể Môn học yêu cầu nhiều tới các kiến thức về kỹ
thuật điện tử, vi xử lý và kỹ thuật lập trình, ngoài ra sinh viên còn cần có kiến thức về kỹ thuật
điện, cảm biến đo lường… Với một lượng kiến thức lớn, lại đòi hỏi có ghép nối phần cứng cụ thể
nên thật khó tưởng tượng môn học này khi học mà không có thiết bị thực tế Với các thiết kế
ghép nối ngoại vi khác nhau nếu sinh viên phải tự mua sắm linh kiện và bản mạch thô để hàn
nối sẽ không thể đủ thời gian để làm được một vài ứng dụng, thêm vào đó là khoản kinh phí tốn
kém mà sinh viên phải bỏ ra là không nhỏ Để giải quyết vấn đề này, tác giả đã thiết kế, chế tạo
sẵn một KIT phát triển với các cụm thiết bị độc lập, đi kèm với nó là trên 10 bài toán lập trình cụ
thể, có thể lập trình độc lập hoặc kết hợp với nhau thành một bài toán lớn Điều này sẽ gây hứng
thú cho các môn học về vi xử lý, kỹ thuật lập trình và giúp đỡ được sinh viên không phải tốn kinh
phí lắp ráp phần cứng
CT 2
II YÊU CầU THIếT Kế
1 Chọn vi xử lý
Vi xử lý là một môn học truyền thống cho sinh viên các ngành kỹ thuật về điện, điện tử nói
chung Đã có rất nhiều tài liệu nói về lĩnh vực này, tuy nhiên hầu hết chỉ chú trọng đến lý thuyết
chung mà chưa đưa ra được các bài toán ứng dụng cụ thể kèm theo sơ đồ phần cứng và chương
trình điều khiển Trong chương trình học sinh viên đã được học lý thuyết và thí nghiệm với vi xử
lý họ MCS51 Thực tế họ MCS51 trước đây là một họ vi xử lý khá mạnh, đã có trên 250 thành
viên và được các công ty bán dẫn hàng đầu thế giới chế tạo như Intel, AMD, Atmel, Siemens,
Philips, Dallas, OKI, Các dẫn xuất này đều có chung một kiến trúc trên cơ sở vi điều khiển
Trang 2Intel 8051 kinh điển Thêm vào đó, tùy theo từng loại mà các chip dẫn xuất được tích hợp thêm các ngoại vi khác nhau (như ADC, SPI, EEPROM, capture/compare channels…), tính năng cũng được nâng cao để phù hợp với các ứng dụng ngày càng phức tạp Ngoài ra đối với các loại chip có cấu trúc CPU ngoại vi cố định (fixel digital and analog penpherals) còn phải kể đến các công ty khác có các sản phẩm là những họ vi điều khiển riêng cũng khá mạnh và được tiêu thụ nhiều trên thị trường, mỗi loại lại có cấu trúc phần cứng được tổ chức khác nhau, bộ lệnh riêng
và các cấu trúc lập trình khác nhau Có thể kể ra như:
68HCxx và các dẫn xuất của Motorola ST62xx của SGS-THOMSON
H8 của Hitachi PIC 16#xx của Microchip
… Phát triển của họ MCS51 Atmel cho ra đời thế hệ AVR, có tích hợp thêm các chức năng ADC, PWM, … với phần mềm trên cả Assembly và C khá linh động, hỗ trợ ghép nối LCD, RTC Các dạng chip thế hệ sau như chíp CSoC có khả năng mềm dẻo thích ứng với đa dạng ứng dụng và nhất là khả năng tái cấu hình (reconfigurable), tạo thành nhiều loại chip khác nhau trên một chip ở những thời điểm khác nhau trong một ứng dụng CYPRESS phát triển họ PSoC (Programmable System on Chip) có đặc điểm linh động phần cứng từ phần mềm, tự tạo cấu hình phần cứng từ tài nguyên có sẵn phục vụ các bài toán cụ thể đòi hỏi yêu cầu phần cứng khác nhau Thực chất các chip chế tạo theo công nghệ PSoC cho phép thay đổi cấu hình phần cứng bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chip, ghép nối mềm dẻo giữa các khối với nhau và với các cổng In/Out Ngoài ra thành phần của chip PSoC bao gồm cả các khối ngoại vi số và tương tự có thể tự cấu hình được, lập trình cho chip thông qua phương pháp kéo/thả các khối tài nguyên này vào vùng làm việc Việc thiết lập ngắt trên chân nào, loại ngắt gì, các chân In/Out được thiết lập hoạt động thế nào đều tuỳ thuộc vào thiết lập của người lập trình Với khả năng đặt cấu hình mạnh mẽ này một thiết bị Đo lường - Điều khiển có thể
được gói gọn trên một chip duy nhất Chính vì vậy người ta không gọi chip này là vi điều khiển ( μC) mà gọi là thiết bị PSoC (PsoC Device - Thiết bị lập trình trên chip), với hy vọng rằng người
sử dụng sẽ có được những thiết bị nhỏ gọn, giá rẻ, tin cậy bởi chỉ dùng riêng chip PSoC mà không cần các kết nối ngoại vi khác và sản phầm này sẽ thay thế dần các thiết bị sử dụng vi xử
lý kinh điển trước đây Một số dạng thiết kế chip nhằm mục đích chủ yếu cho các bài toán xử lý dữ liệu như CPLD (Complex Programmable Logic Device), FPGA (Field Programmable Logic Array) có hỗ trợ kết nối máy tính với các phần mềm tiêu chuẩn, tái cấu hình lại nhiều lần… Lập trình mảng tương tự đã xuất hiện trong nhiều năm, nhưng chỉ mới gần đây mới được phát triển mạnh, và nền công nghiệp điện tử đã chấp nhận phát triển đầy đủ các công cụ phát triển và các phiên bản phần mềm phát triển mới Lập trình mảng tương tự FPAAs (Field Programmable Analog Arrays) cung cấp cho nhà thiết kế tính mềm dẻo như trong phần thiết kế mạch tương tự của họ Những dạng linh kiện này giải quyết tốt hầu hết các vấn đề ứng dụng trong những thành phần của hệ thống (Vi xử lý lõi, khối logic, khối tương tự) Ví dụ, một mạch chứa đựng thành phần chính là logic sẽ có lợi nhất khi sử dụng linh kiện lập trình logic, nhưng một thiết kế với nhiều thành phần tương tự sẽ không thích hợp với những linh kiện đó Như vậy sử dụng các chip thế hệ sau để nghiên cứu về vi xử lý và lập trình nhúng là không phù hợp, chúng dành cho người
CT 2
Trang 3chuyên nghiệp với các ứng dụng cao cấp, còn với sinh viên khi đang học cần có một họ chip với
tính năng vừa phải, giá rẻ, phần mềm sẵn có, thuận tiện khi mua chip và phần mềm dễ sử dụng
Tóm lại, sự phát triển của công nghệ vi điện tử thúc đẩy sự phát triển nhanh của các thế hệ
vi xử lý, chúng sẽ luôn phát triển nên không thể nói một loại chip nào là hay nhất mà phải tuỳ
thuộc vào yêu cầu bài toán của từng lĩnh vực cụ thể để chọn chip Chúng ta cần chọn một loại vi
xử lý phù hợp với chương trình học, khả năng của sinh viên về kiến thức và tài chính Với các
yêu cầu này chip vi xử lý họ AVR là phù hợp nhất
2 Kết cấu KIT phát triển
Trên KIT phục vụ lập trình nhúng sử dụng vi xử lý AVR ATMega88, bao gồm các cụm thiết
bị độc lập sau:
Nguồn +5VDC, +12VDC
Mạch nạp onboard
Cụm vi xử lý ATMega88
Phím bấm
LED đơn, LED 7 thanh,
LCD ITM1602A
Thu phát hồng ngoại
Động cơ một chiều +12VDC,
CT 2
Động cơ bước +12VDC
Loa, quạt
MAX232 kết nối PC
4 kênh tương tự, đo nhiệt độ sử dụng LM335
Ghép nối bộ nhớ ngoài Extenal serial memory 24C16B
Ghép nối Real Time Clock RTC DS1307
ISP terminals, Jack kết nối đa vi xử lý
Sinh viên sẽ được nghiên cứu về cấu trúc vi xử lý, các phương pháp lập trình cho vi xử lý,
lập trình nhúng, hướng dẫn điều khiển các cụm thiết bị độc lập Sau đó phối hợp các cụm thiết
bị này ta tạo ra được nhiều bài toán ứng dụng trong thực tế như:
- Kết hợp LED đơn và LED 7 thanh tạo ra chương trình điều khiển mô hình đèn giao thông,
mìn hẹn giờ…
- Kết hợp PWM và LED đơn tạo ra chương chình điều khiển đèn quảng cáo có thể nháy và
thay đổi cường độ sáng theo chu trình khác nhau
- Điều khiển động cơ một chiều và động cơ bước thông qua phím bấm Kết hợp PWM tăng
giảm tốc độ động cơ một chiều
Trang 4- Kết hợp Sensor đo nhiệt độ hiển thị trên LCD, sử dụng phím bấm đặt ngưỡng cảnh báo và tác động quạt
- Kết hợp thu phát hồng ngoại điều khiển từ xa LED, động cơ một chiều, động cơ bước, thay đổi ngưỡng đặt nhiệt độ từ xa
- Ghép nối máy tính tạo chương trình quản lý giám sát hệ thống
- Quản lý thời gian thực của các thiết bị hoạt động thông qua RTC DS1307
Đi kèm với KIT phát triển này là trên 10 bài toán nhỏ điều khiển các cụm thiết bị độc lập và một số bài toán ứng dụng Phiên bản KIT đầu tiên được thiết kế nhỏ gọn với các bài toán cơ bản nằm trong phạm vi các bài toán trên, kết hợp một bảng cắm đa năng nhằm tạo điều khiện cho sinh viên tự làm lấy một KIT với giá thành rẻ Trên cơ sở KIT phát triển này người học sẽ được tiếp cận với các bài toán thực tế thông qua các ví dụ nhỏ, từ đó tự phát huy khả năng sáng tạo của mình phát triển các bài toán cao cấp hơn
Title Size Document Number Rev Date: Sheet of
1 <Rev Code> Lap trinh nhung v oi AVR - Designed by BinhNT.
A2
1 1 Sunday , October 28, 2007
J10
CON2
1
ATmega48/88/168
U6
PCINT14/#RESET/PC6
1
PCINT16/RXD/PD0
2
PCINT17/TXD/PD1
3
PCINT18/INT0/PD2
4
PCINT19/INT1/PD3
5
PCINT20/XCK/T0/PD4
6
VCC
7
GND
8
PCINT6/XTAL1/TOSC1/PB6
9
PCINT7/XTAL2/TOSC2/PB7
10
PCINT21/OC0B/T1/PD5
11
PCINT22/OC0A/AIN0/PD6
12
PCINT23/AIN1/PD7
13
PCINT0/CLKO/ICP1/PB0
14
PB1/OC1A/PCINT115 PB2/#SS/OC1B/PCINT216 PB3/MOSI/OC2A/PCINT317 PB4/MISO/PCINT418 PB5/SCK/PCINT519 AVCC20 AREF21 GND22 PC0/ADC0/PCINT823 PC1/ADC1/PCINT924 PC2/ADC2/PCINT1025 PC3/ADC3/PCINT1126 PC4/ADC4/SDA/PCINT12 27
PC5/ADC5/SCL/PCINT1328
Character LCD
U1
R8 5K1
Y1
32.768kHz
Q7 TIP41C
Q3 C2383
J21
1 4
R15 5K1
24C16B
U4
A0
1
A1
2
A2
3
GND
4 SCLKSDAVCC WP 5 6 7 8
R5 1K
R11 4K7
+5V
+5V
DC1
C1 100n
R6 1K
J14
1 4
KEY1
+5V
R17 1K
Q13 TIP41C R18 1K
R1 10K
R54 10K
R45 1K
Temperature Sensor Chanel 2
Temperature Sensor Chanel 4
+5V
TEMP4
D23 LM335/TO92
R2 10K R3 10K
SCL
J9
1 4
SDA
R9 5K1
PB5
R46 100
PB4
+5V
PB3
R16 5K1
GND
DS1307
U2
X1
1
X2
2
Vbat
3
GND
4
SDA5 SCL6 SQW/OUT7 VCC8
R48 100
+5V
R50 100
7-SEG LED
DC2
D3 1N4007
R51 100
U9 LED7SEGx3
R13 10K
Q20 Q17
R14 10K
Q16
KEY2
D2 D3 D4 D5 D6 D7 A
GN VEE RS RW E D0 D1
U11
IN0 1
IN1 2
IN2 3
IN3 4
IN4 5
IN5 6
IN6 7
IN7 8
GND
9
COM
10
OUT7
11 OUT6
12 OUT5
13 OUT4
14 OUT3
15 OUT2
16 OUT1
17 OUT0
18
R26
DC Motor
R28
R31
+5V
SCK
D1 1N4007
MISO
CONNECTOR 17x1
+5V
DIGIT 3 DIGIT 2 DIGIT 1
MOSI
SEG F DOT
SEG D
D14 1N4007
SEG A
J2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
RST
R7 2K2
SQW_OUT
C19 10n
J1
CON3
1
C20 100n
J3
CON2
1
Q15 TIP41C
D13 1N4007
DC3
External crystal
KEY3
D20 LED
Y2 4-20MHz C9 22p
BACKLIGHT
ISP terminals
C2 100n
+5V
R35 30K
J11
1
C12 22p
RXD
STREP Motor
XTAL1
R25 22E2W
TXD
XTAL2
R59 1K
C10 100n
+5V
PC6
DC4
KEY4
R21 10K
VEE
STEP2 DC1
PD0
PD3
Q19 TIP41C
PD4
P2
MALE DB25
13
24
10
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1
+ C3
STEP1
KEY5
J5
1 4
D7 LED
D19
LED
+5V
+5V
LOA
Q22 C2383
In System Programmer interface
R43 100
PB6
PB0
R55
4K7
+5V
PD5
LS1
8 Ohm
GND
U8
1
OUT3
KEY3
J18
1
D6 LED
KEY4
J20
1
KEY5
D5 LED
J17 1
J19 1
D4 LED
D10 D8 LED
R42 4K7
D9 LED D11
R4 470
2 3 4 5 6 7 8 9
QUAT1
12V 1.1W
Drills
+5V
STEP2
J22
1 2 3
R72
STEP1
+5V
Q23 D30 R73
R74
+5V +5V
J23
1
J24
1
R57 30K
+5V
J4
1 2 3 4 5 6 7 8
U3
PIN+3V
2
1
CONNECTOR 8x2
+12V
R33 4K7
QUAT STEP3
R34
4K7
R32 100
Realtime clock
+5V
+ C4
TEMP1
PC0 PC3
J16
1 4
TEMP2
PB1 PB4 AVCC
TEMP4
L3 10uH
M
GND
AGND +5V L2 10uH AVCC
U5
1 OUT3
D2 1N4007
+5V
C8
D12 1N4007
C11 100n
+5V
SW5
STEP4
R68 220 C24 100n
D15 1N4007
+5V
D26 R63 10K
D18 1N4007
STEP3
Q12 R10 5K1
Q14 R19 5K1
STEP4
DC3
R22 5K1
SW2
J12
CON8
1 4 7
R27 5K1
R67 220
D21 LM335/TO92
C21
+5V
D25 4148
R47 1K
R62 10K
J6
1 4 7 10 13
SW3
R20 0-470
+ C6
R69 220 C22
+5V
D27 4148
Q6
R64 10K
SW4 R70 220 C25 100n
+5V
D28 4148
R12 0-470
R65 10K
1-MO 1-MO
R23 0-470
+5V
DC4
R29 0-470 C5
12VAC input
R52 10K
TEMP3
MAX232
U10
C1+
1
C1-3
C2+
4
C2-5
VCC 16
GND 15
V+
2
V-6
R1OUT 12
R2OUT 9
T1IN 11
T2IN 10
R1IN
13
R2IN
8
T1OUT
14
T2OUT
7
Q21 TIP41C
+5V
J7
1 4 7 10 13
SW1
R61 10K
Q18
+12V +12V
D24
4148
C18 1u C17 1u C16 1u
- +
D17
1
4
R53 10K
R44 1K
U7
1
MG1
1 2
+5V
74245
U12
DIR
1
A0
2
A1
3
A2
4
A3
5
A4
6
A5
7
A6
8
A7
9
GND
10
B7
13 16
#OE19 VCC20
Temperature Sensor Chanel 3
TEMP2
D22 LM335/TO92
R71 10K
R60 1K
+5V
C13 1u
Temperature Sensor Chanel 1
TEMP1
D29 LM335/TO92
C15 1u
Q4 C828
L1 100uH
R66 220
Q2
External serial memory
R40 1K
+12V
R41 1K
+5V
J8
CON3
1
Q5 C828
+5V
R49 1K
AC2/DC2
R56 100
RS232 interface
C23
+5V
AC1/DC1
R58 1K
R24
P1
FEMALE DB9
5 8 2
Q8 A1015
+5V
R39 4K7 R38 4K7
+5V
R37 4K7 R36 4K7
+ C7
Q1
Q10 A1015
J13
CON1
1
J15
CON1
1
DC2
J25
1 4
D16
LED
R30
Q9 C2383
C14 1u
AREF
J26
1 4
Q11 C2383
CT 2
Trang 5SảN PHẩM KIT PHIÊN BảN RúT GọN
III KếT LUậN
CT 2
AVR là vi xử lý phù hợp với chương trình học, khả năng của sinh viên về kiến thức và tài
chính Sau khi đã được học vi xử lý cơ bản với họ MCS51 bằng Assembly, sinh viên cần được
tiếp xúc và làm việc với vi xử lý mới bằng ngôn ngữ lập trình cấp cao như C Với một KIT phát
triển nhỏ này, người học sẽ giảm bớt thời gian và kinh phí cho việc lắp ráp phần cứng cho mỗi ví
dụ thực hành trong bài toán lập trình Thêm vào đó người học sẽ được phát huy khả năng sáng
tạo của mình thông qua các phương pháp kết hợp khác nhau các cụm thiết bị trên KIT vào các
bài toán cụ thể Để giảm kinh phí nhưng vẫn mở rộng khả năng của KIT, tác giả đưa ra một kết
cấu rút gọn kèm với một bảng cắm đa năng để người học tự phát triển bài toán của mình, phục
vụ nghiên cứu khoa học, sản phẩm cho bảo vệ tốt nghiệp… Hy vọng phương pháp học tập này
sẽ được áp dụng trong nhiều môn học khác
Tài liệu tham khảo
[1] ThS Ngô Thanh Bình (2003) Lập trình hợp ngữ Trường ĐHGTVT
[2] Michael Pont (2003) Programming Embedded Systems I, II University Leicester
[3] Datasheet 2545F-AVR-06/05 Atmega 48/88/168 Atmel Corp