MỤC LỤC
MỤC LỤC 2
LỜI NÓI ĐẦU 3
Chương I 4
CƠ SỞ LÝ THUYẾT 4
I.1 HỌ VI ĐIỀU KHIỂN AVR 4
I.1.1 GIỚI THIỆU CHUNG 4
I.1.1.1 Giới thiệu AT90S8535 4
I.1.1.2 Tính năng của AT90S8535 5
I.1.3 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU CỦA AVR 7
I.1.3.1 Sơ đồ chân tín hiệu: 7
I.1.3.2 Sơ đồ khối chức năng 8
I.1.4 BỘ NHỚ CỦA AVR : 13
II.1.5 CẤU TRÚC NGẮT : 14
I.1.5.1 Chức năng điều khiển ngắt : 14
I.1.5.2 Tổ chức ngăn xếp trong AVR: 15
I.1.6 GHÉP NỐI NỐI TIẾP : 15
I.1.7 MỘT SỐ LỆNH CƠ BẢN 17
I.1.8 CẤU TRÚC 1 CHƯƠNG TRÌNH ĐIỀU KHỂN AVR 18
I.2 VI MẠCH VÀO RA ĐA NĂNG PPI – 8255A 19
I.2.1 GIỚI THIỆU PPI – 8255 19
I.2.2 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU PPI-8255 19
I.2.2.1 Sơ đồ khối hình 3) 19
I.2.2.2 Sơ đồ chân tín hiệu hình 4) 20
I.2.3 NGUYÊN LÝ HOẠT ĐỘNG CỦA 8255A 21
I.2.3.1 Chức năng điều khiển ngắt : 22
I.2.3.2 Các chế độ hoạt động : 22
I.2.4 CÁC BƯỚC VIẾT CHƯƠNG TRÌNH 23
Chương II 24
THỰC NGHIỆM - GHÉP NỐI AVR VÀ 8255 24
II.1 SƠ ĐỒ KHỐI PHỐI GHÉP GIỮA AVR VÀ 8255A 24
II.2 SƠ ĐỒ CHI TIẾT KHỐI PHỐI GHÉP GIỮA AVR VÀ 8255A 25
II.3 THUẬT TOÁN ĐIỀU KHIỂN 27
KẾT LUẬN 29
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 30
[/LEFT][/LEFT]
29 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2784 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Tìm hiểu các chíp khả lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỤC LỤC
LỜI NÓI ĐẦU
Công nghệ thông tin đã phát triển một cách nhanh chóng trong những năm gần đây và có nhiều bước tiến nhảy vọt trên nhiều mặt. Nghành công nghệ thông tin ở nước ta tuy còn non trẻ nhưng tốc độ phát triển khá nhanh và đang dần được ứng dụng trong nhiều lĩnh vực của nền kinh tế, góp phần thúc đẩy vào sự phát triển của xã hội.
Việc đưa tin học hóa vào công việc kỹ thuật giảm bớt sức lao động của con người, tiết kiệm được thời gian, độ chính xác cao và tiện lợi hơn rất nhiều so với việc làm thủ công trên các công cụ thông thường .Việc ghép nối máy tính với các thiết bị ngoại vi giúp con người dễ dàng theo dõi các thông số kỹ thuật tại mọi thời điểm. Đưa ra các quyết định kịp thời nhất nhanh và chính xác nhất
Tìm hiểu các chip khả lập trình là đề tài của em trong lần thực tập cơ sở này. Mục đích của đề tài này tìm hiểu các chip cho phép lập trình chẳng hạn như các chip 8255, 8051, AVR cách thức hoạt động và việc ghép nối chúng với hệ thống máy vi tính cũng như khi chúng làm việc độc lập.
Do còn nhiều hạn chế về thời gian, về kiến thức và điều kiện làm việc cũng như sự thử nghiện thực tế, việc tìm hiểu của em chắc chắn còn nhiều sai sót. Em rất mong nhận được sự góp ý của các thầy cô cùng các bạn để có thể hiểu hơn về sự hoạt động của các chip và thời gian tới có thể lập trình cho các chip hoạt động. Em xin chân thành cảm ơn.
Sinh viên : Lê Văn Chung
Chương I
CƠ SỞ LÝ THUYẾT
I.1 HỌ VI ĐIỀU KHIỂN AVR
I.1.1 GIỚI THIỆU CHUNG
Ngày nay những ứng dụng của vi điều khiển đã đi xâu vào trong đời sống sinh hoạt và sản xuất của con người. Có một thực tế là hầu hết các thiết bị điều khiển, thiết bị tự động, thiết bị điện dân dụng bây giờ đều có sự góp mặt của các vi điều khiển và vi xử lý. Ứng dụng của vi điều khiển đã làm cho các thiết bị trở lên ổn định hơn hoạt động tốt hơn, ổn định hơn.
Trên thị trường có rất nhiều họ vi điều khiển: họ 8051 của Intel, 68HC11 của Motorola, Z80 của hãng Eilog, PIC của hãng Microchip, H8 của Hitachi, vv.. và cuối cùng là AVR của hãng Atmel. AVR là họ Vi điều khiển khá mới trên thị trường cũng như đối với người sử dụng. Ðây là họ VÐK được chế tạo theo kiến trúc RISC ( Reduced Intruction Set Computer) có cấu trúc khá phức tạp. Ngoài các tính năng như các họ VÐK khác, nó còn tích hợp nhiều tính năng mới rất tiện lợi cho người thiết kế và lập trình. Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu hết khi cần lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao HLL ( Hight Level Language) để lâp trình ngay cả với loại chip xử lí 8 bit trong dó ngôn ngữ C là ngôn ngữ phổ biến nhất. Tuy nhiên khi biên dịch thì kích thước đoạn mã sẽ tăng nhiều so với dùng ngôn ngữ Assembly. Hãng Atmel nhận thấy rằng cần phải phát triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã đã nói trên. Và kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kích thước đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng trong 1 chu kỳ máy với 32 thanh ghi tích lũy và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đến 12 lần. Vì thế nghiên cứu AVR là một đề tài khá lý thú và giúp cho sinh viên biết thêm một họ vi điều khiển vào loại mạnh nhất hiện nay
I.1.1.1 Giới thiệu AT90S8535
AT 90S8535 là bộ vi điều khiển CMOS 8 bit tiêu thụ điện năng thấp dựa trên kiến trúc RISC. Với công nghệ này cho phép các lệnh thực thi chỉ trong một chu kì nhịp xung, vì thế tốc độ xử lý dữ liệu có thể đạt đến 1 triệu lệnh trên giây ở tần số 1 Mhz. Vi điều khiển này cho phép người thiết kế có thể tối ưu hoá mức độ tiêu thụ năng lượng mà vẫn đảm bảo tốc độ xử lý. Phần cốt lõi của AVR kết hợp tập lệnh phong phú và số lượng với 32 thanh ghi làm việc đa năng. Toàn bộ 32 thanh ghi đều được nối trực tiếp với ALU ( Arithmetic Logic Unit), cho phép truy cập 2 thanh ghi độc lập trong một chu kì xung nhịp. Kiến trúc đạt được có tốc độ xử lý nhanh gấp 10 lần vi điều khiển dạng CISC thông thường.
I.1.1.2 Tính năng của AT90S8535
Ðược chế tạo theo kiến trúc RISC, hiệu suất cao và điện năng tiêu thụ thấp
Bộ lệnh gồm 118 lệnh, hầu hết đều thực thi chỉ trong một chu kì xung nhịp.
32x8 thanh ghi làm việc đa năng.
Cổng Giao diện nối tiếp SPI cho phép lập trình ngay trên hệ thống .
8KB Flash ROM lập trình được ngay trên hệ thống.
Cho phép 1000 lần ghi/ xoá.
Bộ EEPROM 512 byte .
Cho phép 100.000 ghi/ xoá.
Bộ nhớ SRAM 512 byte.
Bộ biến đổi ADC 8 kênh, 10 bit .
32 ngõ I/ O lập trình được .
Bộ truyền nối tiếp bất đồng bộ vạn năng UART .
Vcc= 2.7V đến 6V
Tốc độ làm việc từ 0 đến 8 Mhz
Tốc độ xử lý lệnh đạt đến 8 MIPS ở 8 MHz nghĩa là 8 triệu lệnh trên giây.
Bộ đếm thời gian thực ( RTC) với bộ dao động và chế độ đếm tách biệt .
2 bộ Timer 8 bit và 1 bộ Timer 16 bit với chế độ so sánh và chia tần số tách biệt và chế độ bắt mẫu.
Ba kênh điều chế độ rộng xung PWM.
Có đến 13 interrupt ngoài và trong .
Bộ định thời Watchdog lập trình được.
Tự động reset khi treo máy.
Bộ so sánh tương tự .
Ba chế độ ngủ : chế độ rảnh rỗi ( Idle), tiết kiệm điện ( Power save) và chế độ Power Down
Sau đây là bảng so sánh những đặc tính giữa AT90S8535 với họ AT89C51 một trong những chíp trong họ AVR nhưng đời cũ hơn.
Bảng 1 :
Ðặc tính
AT90S8535
AT89C51
Flash ROM
8K Byte có thể lập trình trên hệ thống
- 4 KB
EEPROM
- 512 byte
- Không
RAM nội
- 512 byte SRAM
- 128 byte ram
Bộ Timer
- 2 bộ timer 8 bit
- 1 bộ timer 16 bit
- 1 bộ watchdog timer
- 2 bộ timer 16 bit
: Bộ ADC
- 1 bộ ADC 8 kênh 10 bit
- Không
Giao thức truyền nối tiếp chủ/ tớ
- Có
- Không
Bộ PWM
– Bộ điều chế PWN 8-, 9- và 10- bit
- Không
Bộ truyền nối tiếp UART
- Có 2 chế độ
- Có 4 chế độ
Bộ so sánh tương tự
- Có
- Không
Nguồn ngắt
- Có 17 nguồn ngắt
- Có 6 nguồn ngắt
Tần sô hoạt động
- 0 ÷ 8 Mhz
- ( 0 ÷ 24 Mhz)/ 12
Ðiện áp tiêu thụ
Thạch anh 4 Mhz , VCC= 3V:
- Trạng thái tích cực : 6.4mA
– Trạng thái rỗi : 1.9mA
– Trạng thái Power Down : < 1 uA
Thạch anh 12Mhz,VCC= 3V:
- Trạng thái tích cực : 20 mA
– Trạng thái rỗi : 5 mA
– Trạng Power Down : < 40 Ua
I.1.3 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU CỦA AVR
I.1.3.1 Sơ đồ chân tín hiệu:
AVR
1. PB0 (T0)
2. PB1 (T1)
3. PB 2 (AIN0)
4. PB 3 (AIN1)
5. PB 4 (SS)
6. PB 5 (MOSI)
7. PB 6 (MISO)
8. PB 7 (SCK)
9. RESET
10. PD0 (RXD)
11. PD1 (TXD)
12. PD2 (INT0)
13. PD3 (INT0)
14. PD4 (OC1B)
15. PD5 (OC1A)
16. PD6 (ICP)
40. VCC
39. PA 0
38. PA 1
37. PA 2
17. PD7 (OC2)
18. XTAL1
19. XTAL2
20. GND
28. PC7
27. PC6
26. PC5
25. PC4
24. PC3
23. PC2
22. PC1
21. PC0
36. PA 3
35. PA 4
34.. PA 5
33. PA6
32. PA7
31. AREF
30. AGND
29. AVCC
PB0: đưa vào time/counter0 từ bộ đếm bên ngoài
PB1: đưa vào time/counter1 từ bộ đếm bên ngoài
PB 2 (AIN0) : đưa vào bộ so sánh tương tự gtrị rõ ràng
PB 3 (AIN1): đưa vào bộ so sánh tương tự gtrị tự nhiên
PB 4 (SS) : Lựa chọn đường nối Slave trên kết nối SPI
PB 5 (MOSI): đưa vào bus Master output/slave
PB 6 (MISO) đưa ra bus Master input/slave
PB 7 (SCK) SPI Bus serial clock
RXD : UART nhận dòng dữ liệu
TXD: UART gửi dòng dữ liệu
INT0 : Ngắt bên ngoài 0
INT1: Ngắt bên ngoài 1
OC1B: time /counter1 so sánh lối ra
OC1A: so sánh lối vào
ICP: time/ counter 1 input capture thanh ghi chỉ để đọc
OC2 : Time/cuonter2 so sánh lối ra
Hình 1: Sơ đồ chân tín hiệu của AVR
VCC: điện áp nguồn cung cấp cho AVR hoạt động.
GND: tín hiệu đất.
PA0-PA7, PB0- PB7, PC0- PC7, PD0- PD7 : là các cổng vào ra 8 bit
RESET : khi chân reset ở mức thấp sẽ sinh ra tín hiệu reset. Khi một xung tín hiệu reset kéo dài hơn 50 ns sẽ sinh ra 1 reset, sự kiện này xảy ra khi đồng hồ không chạy.
XTAL1: đưa tín hiệu tới 1 máy tạo dao động khuếch đại và được dùng làm xung đồng hồ cho hệ thống mạch.
XTAL2: lấy tín hiệu từ 1 máy tạo dao động.
AVCC : nguồn cung cấp cho bộ biến đổi A/D.
AREF : chuyển tín hiệu tương tự cho đầu vào của bộ biến đổi A/D.
AGND: tín hiệu đất.
I.1.3.2 Sơ đồ khối chức năng
Trong AT90S8535 có thêm bộ nhớ EEPROM 512 byte. Bảng vecto ngắt được đặt ở địa chỉ đầu tiên của bộ nhớ program memory. Ngoài ra còn có bộ nhớ vào/ra là 32 thanh ghi đa năng được thiết kế giống như SRAM và có thể trao đổi dữ liệu theo cả 3 kiểu giống như SRAM hoặc giống như các thanh ghi I/O. 32 thanh ghi đó bao gồm: SREG thanh ghi trạng thái, SP thanh ghi con trỏ ngăn xếp, thanh ghi che ngắt GIMSK, thanh ghi cờ ngắt GIFR, thanh ghi điều khiển MCUCR, thanh ghi trạng thái bộ xử lý MCUSR, thanh ghi TIMER/COUNTER0 TCNT0, thanh ghi điều khiển TIMER/COUNTER1A TCCR1A, thanh ghi điều khiển TIMER/ COUNTER1B TCCR1B, thanh ghi TIMER/COUNTER1, các thanh ghi so sánh lối ra bộ OCR1AH, OCR1AL, các thanh ghi so sánh lối vào OCR1BH, OCR1BL, ICR1H, ICR1L, thanh ghi bộ định thời Watchdog WDTCR, thanh ghi địa chỉ bộ nhớ EEPROM EEAR, thanh ghi dữ liệu bộ nhớ EEDR, mỗi cổng A, B, C, D có 3 thanh ghi: hướng dữ liệu, dữ liệu, chân dữ liệu PIN, thanh ghi dữ liệu, trạng thái, điều khiển cổng truyền dữ liệu nối tiếp SPI, và của cổng song song UART , thanh ghi tốc độ của UART, thanh ghi trạng thái, điều khiển của bộ so sánh tương tự ACSR.
AREF
AGND
Avcc
PC0 - PC7
PA0 - PA7
Gnd
Vcc
ANALOG MUX
ADC
TIME/
COUNTER 8
GENERAL PUSPOSE REGISTER
+ -
RESET
8 BIT DATA BUS
PORT A DRIVERS
DATA DIR REG PORT A
DATA REGISTER PORT A
PORT C DRIVERS
DATA DIR REG PORT C
DATA REGISTER PORT C
MCU CONTROL REGISTER
WATCH DOG TIME
STACK POINTER
SRAM
INSTRUCTION REGISTER
PROGRAM FLASH
PROGRAM COUNTER
TIMING AND CONTROL
OBCILLATOR
OBCILLATOR
INTERNAL OBCILLATOR
INTERUPT UNIT
EEPROM
INSTRUCTION DECODER
CONTROL LINE
X
Y
Z
ALU
STATUS REGISTER
UART
PROGRAMMING LOGIC
SPI
PORT B DRIVERS
DATA DIR REG PORT B
DATA REGISTER PORT B
PB0 - PB7
PORT D DRIVERS
DATA DIR REG PORT D
DATA REGISTER PORT D
PDO-PD7
XTAL2
XTAL1
8 BIT DATA BUS
8 BIT DATA BUS
Các thanh ghi X, Y, Z là các thanh ghi được thêm vào các chức năng cho các mục đích thông thường. Chúng thường được dùng như các thanh ghi control trong việc truy cập bộ nhớ.
Khối ALU (Arithmetic Logic Unit) : Đây là khối thực thi việc điều hành AVR nó được kết nối trực tiếp cả với 32 thanh ghi trong cùng xung nhịp. Khối ALU có 3 chức năng chính là thực thi các toán hạng, các phép toán logic, các phép toán trên bit.
Bộ định thời Watchdog timer: đây là 1 định thời riêng biệt từ một chip tạo dao động. Với 8 chu kỳ đồng hồ khác nhau có thể được lựa chọn để quyết định thời điểm reset. Nếu thời điểm reset không có hiệu lực bởi 1 bộ định thời nào thì việc reset của At90s8535 được thực hiện từ vecto reset. Việc reset hệ thống nhằm tránh các sai lệch dữ liệu trong AVR vì 1 lý do nào đó chẳng hạn như sụt áp với 1 thời gian quá 1 mức nào đó.
EEPROM bộ nhớ truy cập đọc/ ghi: tốc độ ghi khoảng chừng 2,5 đến 4 ms và nó được quyết định bởi điện áp Vcc. Khi muốn ghi dữ liệu tới thanh ghi EEPROM ta thực hiện ghi dữ liệu tới thanh ghi dữ liệu EEDR. Khi muốn đọc dữ liệu trong EEPROM ta phải chờ sau khi quá trình ghi thực hiện xong. EEPROM có các ngắt đặc biệt được thiết lập khởi tạo nhận dữ liệu mới khi nó sẵn sàng. Khi EEPROM đọc hoặc ghi thì cpu tạm nghỉ trong 2 chu kỳ đồng hồ trước khi lệnh tiếp theo được thực hiện. EEPROM có 2 thanh ghi địa chỉ EEARH , EEARL, 1 thanh ghi dữ liệu EEDR, và 1 thanh ghi điều khiển EECR.
EECR :
7
6
5
4
3 EERIE
2 EEMWE
1 EEWE
0 EERE
Bit 7- 4 là các bit dành riêng trong 8535 và có gia tri 0.
Bit 3: Interupt enable khi bit I trên Sreg và bit EERIE trên thanh ghi điều khiển có giá trị 1 thì EEPROM cho phép ngắt.
Bit 2: Master write enable: khi bit này có gia trị 1 thì nó thiết đặt EEWE sẽ viết dữ liệu vào EEPROM tại địa chỉ được chọn. Nếu EEMWE có giá trị 0 thì việc thiết lập EEWR sẽ không có hiệu lực.
Bit 1: EEPROM Write Enable: là tín hiệu EEPROM cho phép ghi vào EEPROM khi địa chỉ và dữ liệu được thiết lập chính xác. Bit EEWE cần thiết lập để viết giá trị tới EEPROM. Bit EEMWE cần phải đặt ở mức logic 1 khi viết tới EEWE, nếu không sẽ không viết được tới EEPROM. Thủ tục khi viết tới EEPROM qua các bước sau:
Đợi đến khi EEWE có giá trị 0.
Viết địa chỉ mới tới EEPROM tại thanh ghi EEARL và EEARH (theo tuỳ chọn).
Viết dữ liệu mới vào thanh ghi EEDR cho EEPROM .
Đặt mức logic 1 tại bit EEMWE trong thanh ghi control EECR.
Trong 4 chu kỳ đồng hồ sau khi thiết đặt EEMWE, nó viết mức logic 1 tới EEWE.
Nếu có 1 ngắt giữa bước 4 và 5 sẽ làm thất bại quá trình viết tới EEPROM do vậy nên làm sạch các cờ ngắt trong thời gian 4 bước cuối để tránh các vấn đề này. Thời gian truy cập khi viết tiêu biểu là 2.5 ms tại VCC = 5v hoặc 4ms tại VCC = 2.77 V.
Bit 0: EERE: EEPROM Read Enable: EEPROM báo cho phép đọc khi địa chỉ được thiết lập đúng bên trong thanh ghi địa chỉ EEAR.
Time/Couter: AT90S8535 cung cấp 3 bộ Time 2 bộ 8 bit và 1 bộ 16 bit. Có thể tuỳ chọn đồng hồ không đồng bộ từ bộ tạo dao động ở bên ngoài. Bộ tạo dao động đó có thể dễ dàng tạo dao động ở tần số 32768 Khz. Bộ Time/counter 0: là 1 bộ định thời đơn gian dùng để đếm tiến từ giá trị đếm đã được nạp vào. Bộ đếm được tăng thêm 1 giá trị mỗi khi có thêm 1 tín hiệu đồng hồ ở lối vào của nó.
UART: AT90S8535 có thể truyền song công thu phát không đồng bộ với UART. Các tính năng của chúng gồm có:
Truyền dữ liệu với tốc độ cao.
Tốc độ cao tại tần số thấp của XTAL.
8 hoặc 9 bit dữ liệu.
Lọc nhiễu.
Phát hiện tràn .
Phát hiện khung truyền lỗi.
Phát hiện bit start sai.
3 ngắt riêng biệt thanh ghi data rỗng, TX hoàn thành, RX hoàn thành.
Đệm truyền và nhận.
Việc truyền dữ liệu qua UART được khởi tạo bằng cách ghi dữ liệu vào thanh ghi dữ liệu I/O (UDR). Sau đó dữ liệu được truyền từ UDR đến thanh ghi dịch truyền khi :
Khi có 1 ký tự mới được ghi tới UDR sau khi bit stop của ký tự trước đã được dịch chuyển ra. Thanh ghi dịch chuyển ra sẽ được nạp ngay tiếp đó.
Ký tự mới được ghi tới UDR trước khi bit stop của ký tự trước đã được dịch đi. Thanh ghi dịch chuyển ra sẽ được nạp khi bit stop của ký tự trước đang được dịch chuyển ra.
Thanh ghi dữ liệu vào/ra UART: trên thực tế chúng là 2 thanh ghi nhưng có chung 1 địa chỉ vật lý. Khi ghi dữ liệu vào địa chỉ này nó ghi vào thanh ghi truyền dữ liệu. Khi đọc từ địa chỉ này nó đọc từ thanh ghi nhận dữ liệu.
Thanh ghi trạng thái UART: dùng để giám sát trạng thái của của UART.
Bit 7: (Receive Complete)mức giá trị 1 cho biết UART đã nhận 1 byte dữ liệu từ thanh ghi dịch bộ nhận.
Bit 6: (Transmit Complete) mức 1 cho biết 1 byte đã được dịch chuyển ra từ thanh ghi dịch và không có dữ liệu mới được ghi vào.
Bit 5: (Data Register Empty) UART sẵn sành nhận dữ liệu mới.
Bit 4: (Framing Error) báo lỗi khung truyền bằng cách kiểm tra parity.
Bit 3: (Overrun Error) báo tràn dữ liệu khi 1 byte chưa được đọc trước khi 1 byte mới được ghi tới.
Thanh ghi điều khiển UART:
Bit 7: Mức 1 sinh ra 1 ngắt Receive Complete Interupt. Khi bit RxC trong USR là 1 thì cho phép các ngắt toàn cục.
Bit 6: Mức 1 sinh ra ngắt Transmint Complete Interupt. Khi bit TxC trong USR là 1 thì cho phép các ngắt toàn cục.
Bit 5: Khi bit này là 1 và bit UDRE trong USR là 1 thì cho phép các ngắt toàn cục.
Bit 4: Mức 1 cho phép bộ nhận của UART nhận dữ liệu.
Bit 3: Mức 1 cho phép bộ truyền dữ liệu được truyền dữ liệu.
Bit 2: Mức 1 thông báo ký tụe truyền sẽ có 9 bit.
Bit 1: Mức 1 thông báo bit thứ 9 đã được nhận.
Bit 0: Mức 1 thông báo bit thứ 9 đã được truyền.
Các cổng I/O: có 4 cổng I/O là các cổng 8 bit.
Port A: có 3 vùng nhớ địa chỉ được cấp phát cho port A. một cho thanh ghi dữ liệu từ $ 1B -$3B, một cho thanh ghi hướng dữ liệu DDRA ($1A- $3A.) và chân pin input của cổng A PINA ($19-$39). Có thể đặt giá trị riêng biệt cho tất cả các chân của Port A. Mức điện áp 20mA cho output và thấp hơn cho input. Port A có chức năng tuần tự giống như tín hiệu tương tự nhập cho bộ biến đổi ADC.
Thanh ghi dữ liệu: Port A7- Port A0.
Thanh ghi hướng dữ liệu DDA7 – DDA0
Thanh ghi chân pin input Pin A7- Pin A0.
Các chân của cổng A sẽ có chức năng in hoặc out khi các chân trên thang ghi hướng dữ liệu và thanh ghi dữ liệu được thiết đặt khác nhau.
Tất cả các cổng vào/ra đều có 3 địa chỉ vào ra đi kèm với chúng. Ba địa chỉ cần để đặt cấu hình cho các bit riêng biệt là lối vào hay ra ; địa chỉ khác được cần đến để xuất ra dữ liệu tới các bit đó, địa chỉ thứ 3 được cần đến để đọc dữ liệu từ các chân đó( hoặc tất cả) được cấu hình thành lối vào.
Bảng thiết đặt các bit DDAn và PortAn để có thể thiết đặt từng châncủa cổng A là các cổng vào hặc ra:
DDAn
PortAn
I/O
Đẩy vào
0
0
Input
No
0
0
Input
Yes
1
0
Output
No
1
1
Output
no
Việc thiết lập cho các chân của các cổng khác cũng tương tự như việc thiết lập cho các chân trên cổng A. Do vậy ta hoàn toàn có thể lập trình cho các chân của các cổng là các chân ra hay vào.
I.1.4 BỘ NHỚ CỦA AVR :
Bộ nhớ của AT90S8535 được chia làm 3 phần gồm có bộ nhớ cho chương trình program flash memory có độ lớn 4k x 16 có địa chỉ $000 đến $FFF. Trong quá trình xử lý gọi các ngắt và trở về thì địa chỉ ngắt được đưa vào trong Stack, vùng địa chỉ này được tạo ra trên SRAM của AVR. AT90S8535 có 512 byte SRAM có thể truy cập dễ dàng thông qua 5 mode chuyển đổi mà AVR này hỗ trợ.
Sơ đồ bộ nhớ của AVR:
Hình 3: Sơ đồ bộ nhớ của AVR
$000
Bộ nhớ chương trình
Là bộ nhớ kiểu flash
$FFF
Bộ nhớ dữ liệu
32 thanh ghi
64 thanh ghi I/O
SRAM trong AVR
SRAM ngoài
EEPROM
Bộ nhớ EEPROM
8bit
8bit
$0000
$1F
$5F
$địa chỉ cuối
$0000
$1FF
Bộ nhớ chương trình
Bộ nhớ chương trình: là loại bộ nhớ Flash dung lượng của bộ nhớ này phụ thuộc vào bộ vi xử lý cụ thể trong cùng 1 họ. Bộ nhớ chương trình truy cập theo từng chu kỳ của đồng hồ, mỗi chu kỳ có thể nạp 1 lệnh để xử lý. Bộ nhớ chương trình cũng chứa các vecto ngắt bắt đầu ở địa chỉ $0000. Còn chương trình được lưu trữ từ địa chỉ ngay sau địa chỉ cuối dành cho ngắt.
Bộ nhớ dữ liệu: Bộ nhớ này được chia làm các phần khác nhau:
Tập 32 thanh ghi có trong tất cả các lọai AVR.
64 thanh ghi I/O, một số AVR có thể có nhiều hơn. Thực chất là 1 phần bộ nhớ SRAM có thể truy cập theo kiểu thanh ghi I/O hoặc như SRAM. Nó được dùng làm trung gian đến tất cả các bộ phận ngoại vi của AVR.
Bộ nhớ SRAM bên trong AVR, có trong hầu hết các loại AVR. Ngăn xếp của chương trình cũng được lưu trữ ở đây.
Bộ nhớ SRAM bên ngoài, có hay không là tùy vào người thiết kế.
Bộ nhớ EEPROM: các loại AVR khác nhau có từ 64 byte đến 4kb bộ nhớ loại này.
II.1.5 CẤU TRÚC NGẮT :
Thiết bị ngoại vi sẽ ngắt sự thực hiện của chương trình chính, bộ xử lý dừng việc thực hiện chương trình đang chạy để kiểm tra nguồn ngắt và thực hiện các thao tác đáp ứng cần thiết : các bước để thực thi 1 ngắt là :
1. Thiết bị ngoại vi ngắt bộ vi xử lý.
2. Bộ xử lý hoàn thành việc thực hiện lệnh hiện tại
Địa chỉ lệnh tiếp theo được đưa vào ngăn xếp
Địa chỉ đoạn lệnh chương trình ngắt được đưa vào bộ đệm.
Bộ xử lý thực thi các lệnh của đoạn chương trình ngắt.
Hoàn thành các lệnh ngắt và thông báo bằng lệnh RETI.
Bộ xử lý nạp lệnh được lưu trữ trên ngăn xếp vào và tiếp tục chương trình.
Các bước này cũng giống như quá trình thực hiện ngắt của các bộ xử lý khác.
I.1.5.1 Chức năng điều khiển ngắt :
Khi muốn đặt 1 ngắt tới bộ vi xử lý ta đặt cờ ngắt bằng lệnh SEI khi đó cờ ngắt toàn cục trong thanh ghi trạng thái SREG được đưa lên mức logic 1. Và trước khi chuyển sang phục vụ chương trình ngắt ta cần phải lưu trữ trạng thái của hệ thống hiện tại. Trạng thái của bộ vi xử lý được ghi lại trong thanh ghi SREG. Do đó ta cần phải lưu lại thanh ghi ghi này vào 1 thanh ghi khác và thanh ghi đó không được dùng cho bất kỳ 1 mục đích nào khác. Và trước khi lệnh RETI thanh ghi này cần phải được khôi phục lại.
Một cách khác để có thể lưu trữ thanh ghi này là dùng ngăn xếp (ta sẽ tìm hiểu kỹ hơn trong phần sau). Bằng các lệnh PUSH SREG và POP SREG ta sẽ cất và khôi phục lại thanh ghi này một cách dễ dàng. Trong khi 1 ngắt đang được phục vụ bởi thanh ghi SIR thì việc các ngắt toàn cục khác bị cấm (giống như khi ta cho thực thi lệnh CLI). Tuy nhiên ta vẫn có thể có khả năng cho phép 1 ngắt khác thực thi bằng cách đặt lệnh SEI trong SIR. Và nó được phục vụ bằng cách ngắt đoạn chương trình đang phục vụ cho ngắt trước đó. Sau khi trở lại nó tiếp tục phục vụ cho ngắt đang bị bỏ dở. Việc cho phép các ngắt chen ngang hay không còn phụ thuộc vào độ ưu tiên của ngắt đó trong bảng vecto ngắt, đó chính là thứ tự địa chỉ của vecto ngắt đã được xắp xếp trong bộ nhớ. Mức ưu tiên này cũng quyết định xem ngắt nào sẽ được phục vụ trước nếu có nhiều ngắt tại 1 thời điểm. Tình huống này xuất hiện khi ngắt toàn cục bị cấm để cho phép 1 số phần cấp thiết của chương trình được thực thi. Sau tình huống này chương trình cho phép các ngắt toàn cục. Bây giờ 2 ngắt Interupt0 và ngắt UART đều đã xuất hiện thì ngắt Interupt0 ngoài có độ ưu tiên cao hơn sẽ được thực thi trước sau đó thanh ghi ISR dùng cho ngắt UART sẽ được thực thi.
I.1.5.2 Tổ chức ngăn xếp trong AVR:
Để trở về sau ngắt hoặc chương trình con thì địa chỉ của lệnh tiếp theo trong chương trình phải được lưu trữ trước khi địa chỉ ngắt hoặc chương trình con được đưa vào. Thực chất ngăn xếp là phần trong bộ nhớ Sram nhưng nếu AVR không có Sram chẳng hạn như AVR AT90S1200 thì chúng có 1 ngăn xếp phần cứng. Để có 1 ngăn xếp bằng phần mềm trên Sram thì cần phải khởi tạo 1 vùng nhớ bất kỳ trong Sram dùng làm ngăn xếp. Để khởi tạo thì con trỏ ngăn xếp được nạp cùng với địa chỉ của bộ nhớ Sram. Ngăn xếp được sử dụng khi một thủ tục (subroutine) được gọi hoặc 1 ngắt xuất hiện. Ngăn xếp được từ địa chỉ bộ nhớ lớn hơn đến địa chỉ bộ nhớ nhỏ hơn. Do đó khi 1 số dữ liệu được đẩy vào thì dữ liệu được ghi tại địa chỉ con trỏ ngăn xếp hiện thời và con trỏ ngăn xếp giảm đi 1. Tương tự khi lấy dữ liệu thì con trỏ ngăn xếp trước tiên được giảm đi 1 sau đó dữ liệu được lấy ra.
I.1.6 GHÉP NỐI NỐI TIẾP :
Giao diện ghép nối nối tiếp SPI ( cho phép trao đổi dữ liệu tốc độ cao giữa AVR AT90S8535 với thiết bị bên ngoài hoặc giữa các AVR với nhau. Các đặc tính của SPI bao gồm:
Song công di chuyển dữ liệu đồng bộ với 3 dây
Có điều khiển Master Slave.
4 chế độ truyền theo bit có thể lập trình.
Kết thúc của cờ ngắt truyền.
Viết cờ tránh va chạm.
Đánh thức từ chế độ rảnh rỗi.
• LSB First or MSB First Data Transfer
Thanh ghi điều khiển của SPI – SPCR :
SPIE
SPE
DORD
MSTR
CPOL
CPHA
SPR1
SPR0
Bit 7 SPIE: SPI Interupt Enable : cho phép SPI thực thi ngắt nếu SPIF ở thanh ghi SPSR được thiết lập và cho phép ngắt.
Bit 6 SPE: SPI Enable: cho phép giao tiếp SPI khi bit này đặt là 1
Bit 5 DORD: Data Order: khi bit có giá trị 1 thì LSB của từ dữ liệu đựợc truyền, là 0 thì MSB được truyền.
Bit 4 MSTR: Master/Slave Select: sẽ chọn chế độ SPI chủ nếu bit đựơc đặt là 1 ngược lại sẽ chọn chế độ SPI slave.
Bit 3 CPOL: Clock Polarity: khi bit có giá trị 1 thì SCK ở mức cao
Bit 2 Clock Phase:
Bit 1,0: SPI Clock Select 1 or 0: dùng để cấu hình cho SPI Master nó có liên quan đến tần số của máy tạo dao động fcl :
SPR1
SPR0
Fcl
0
0
Fcl /4
0
1
Fcl /16
1
0
Fcl /64
1
1
Fcl /128
Sơ đồ khối SPI:
Hình 4 : sơ đồ bên trong khối SPI
Thanh ghi trạng thái SPSR:
SPIF
WCOL
-
-
-
-
-
-
Bit 7 SPI Interupt Flag: khi quá trình truyền hoàn thành bit này được thiết đặt lên 1. và sinh ra 1 ngắt nếu bit SPIE trong thanh ghi SPCR được đặt giá trị 1.
Bit 6 Write Collision Flag : cờ va chạm đựơc thiết lập trong thời gian di chuyển dữ liệu.
Bit 5 – 0 được đặt giá trị là 0.
Thanh ghi dữ liệu SPDR:
MSB
LSB
Đây là thanh ghi dùng để chuyển dữ liệu giữa thanh ghi lưu trữ và thanh ghi cần chuyển tới. Nó được viết tới để bắt đầu cho quá trình di chuyển dữ liệu
I.1.7 MỘT SỐ LỆNH CƠ BẢN
Cấu trúc: tênlệnh,
Lệnh
Toán hạng
Mô tả
Hoạt động
ảnh hưởng cờ
Trong ? chu kì
ADD
Rd,Rr
Cộng 2 thanh ghi
Rd = Rd+Rr
Z,c,n,v,h
1
ADC
Rd,Rr
Công cờ và 2 Reg
Rd=Rd+Rr+C
Z,c,n,v,h
1
SUB
Rd,Rr
Trừ 2 thanh ghi
Rd=Rd-Rr
Z,c,n,v,h
1
SUBI
Rd,k
Trừ đi 1 hằng số
Rd=Rd-K
Z,c,n,v,h
1
SBC
Rd,Rr
Trừ di 1 thanh ghi và cờ
Rd=Rd-Rr-C
Z,c,n,v,h
1
AND
Rd,Rr
AND logic 2 thanh ghi
Rd=Rd and Rr
Z,n,v
1
ANDI
Rd,K
And thanh ghi &hằng số
Rd=Rd and k
Z,n,v
1
OR
Rd,Rr
Hoặc logic 2 thanh ghi
Rd=Rd or Rr
Z,n,v
1
ORI
Rd,Rr
Hoặc thanh ghi &hằng số
Rd=Rd ork
Z,n,v
1
EOR
Rd,Rr
Xor 2 thanh ghi
Rd=Rd xor Rr
Z,n,v
1
NEG
Rd
Đổi dấu thanh ghi
Rd=0-Rd
Z,n,c,v
1
SBR
Rd,k
Set bit của 1 thanh ghi
Rd=Rd v k
Z,n,v
1
CBR
Rd,k
Xóa 1 bit của 1 thanh ghi
Rd=rd a FF-K
Z,n,v
1
INC
Rd
Cộng thêm 1 vào Rd
Rd=Rd+1
Z,n,v
1
DEC
Rd
Trừ đi 1 từ Rd
Rd=Rd-1
Z,n,v
1
TST
Rd
Kiểm tra xem có = 0
Rd=Rd and Rd
Z,n,v
1
CLS
Rd
Xóa 1 thanh ghi
Rd=Rd xor Rd
Z,v,n
1
Rcall
Gọi chương trình con
3
Icall
Gọi gián tiếp CT con
3
RET
Trở về từ CT con
3
RETI
Trở về từ 1 ngắt
I
4
RJMP
Nhảy so vơi đc hiện tại
Pc=pc+1+offset
Z,v,n
3
BRNE
Nhảy khi điều kiện sai
1
CP
Rd,Rr
So sánh 2 thanh ghi
Rd-Rd
Z,n,v,c,h
1
MOV
Rd,Rr
Chuyển dữ liệu giữa 2 reg
Rd ßRr
None
1
LD
Rd,K
Nạp dữ liệu vào thanh ghi
Rd ß K
None
2
LDS
Rd,k
Nạp dữ liệu từ Sram
Rdß(k)
None
2
ST
Z,Rr
Lưu trữ vào biến
(Z)ßRr
None
2
STD
z+q, Rr
(z+q)ßRr
None
2
STS
K,Rr
Lưu trữ vào ram
(k) ß Rr
None
2
LPM
Nạp chương trình vào bộ nhớ
R0ß (Z)
None
3
IN
Rd,P
In port đọc giá trị từ cổng
RdßP
None
1
OUT
P,Rr
Out xuất giá trị ra cổng
Pß Rr
None
1
Push
Rr
Cất thanh ghi vào stack
Stack ßRr
None
2
POP
Rd
Lấy thanh ghi ra Stack
RdßStack
None
2
SBI
P,b
Thiết lập bit vào reg I/O
I/O(P,b)ß1
None
2
CBI
P,b
Xóa
I/O(P,b)ß0
None
2
LSL
Rd
Dịch trái bit
Z,c,n,v
1
LSR
Rd
Dịch phải bit
Z,c,n,v
1
SWAP
Rd
SWAP nibbles cao & thấp
None
1
BSET
S
Đặt bit 1 tới bit s của Sreg
SREG (s)ß1
SREG(s)
1
BCLS
S
Xóa bit s của SRRG
SREG(s)ß0
SREG(s)
1
SEI
Cho phép ngắt toàn cục
Iß1
I
1
CLI
Cấm ngắt toàn cục
Iß0
I
1
Sleep
Đăt chế độ ngủ cho AVR
None
3
WDR
Watch dog reset
None
1
I.1.8 CẤU TRÚC 1 CHƯƠNG TRÌNH ĐIỀU KHỂN AVR
Để viết chương trình điều khiển cho AVR ta cần phải biết về một số ngôn ngữ lập trình có thể thao tác trực tiếp đến phần cứng như pascal, ASM, C. và sau khi viết cần biên dịch chúng trên các trình dịch chẳng hạn như AVR_assembler của Atmel, Iar, hay trình dịch C của IAR, GNU…. Tiếp theo phải nạp chúng vào bộ nhớ chương trình của AVR đây là loại bộ nhớ Flash. Và đưa AVR vào mạch đã được thiết kế. Ngoài ra cũng có thể lập trình ngay trên chip khi nó đang chạy nếu bản mạch có AVR được ghép nối với máy vi tính theo đúng cách
Các bước viết chương trình:
B1: Khai báo các tệp hỗ trợ, định nghĩa nhiệm vụ cho các thanh ghi.
B2: Nạp các giá trị để định nghĩa cho các cổng vào 1 thanh ghi rồi xuất tới cổng để định nghĩa chức năng cho các chân của các cổng là ra hay vào với mức 0:input; 1:output;
B3: Tiến hành lập trình xử lý công việc, lấy giá trị từ các cổng và đưa giá trị ra cho các cổng theo các mục tiêu đã đặt ra.
I.2 VI MẠCH VÀO RA ĐA NĂNG PPI – 8255A
I.2.1 GIỚI THIỆU PPI – 8255
PPI – 8255A (Programmable Peripheral Interface ) là một vi mạch vào ra đa năng có thể lập trình được cho nó hoạt động. Nó được thiết kế để ghép nối các thiết bị ngoại vi với hệ thống máy tính dùng vi xử lý Intel theo phương thức truyền dữ liệu dạng song song. Độ tích hợp của vi mạch này tạo ra 1 ưu điểm là bản mạch ghép nối dùng PPI-8255A chỉ cần thêm rất ít các linh kiện phụ trợ.
PPI-8255A có 24 đầu của 3 cổng vào/ra 8 bit hai hướng : PA0 - PA7 của cổng A, PB0 - PB7 của cổng B và PC0 - PC7 của cổng C được chia làm 2 nhóm : Group A gồm có cổng A và 4 bit cao của cổng CH, Group B gồm có cổng B và 4 bit thấp của cổng CL . Vi điều khiển có thể chương trình hoá để hoạt động theo 3 chế độ 0, 1 và 2. Việc chọn chế độ hoạt động nào phụ thuộc vào giá trị của từ điều khiển được nạp vào từ điều khiển CW khi viết chương trình. Ngoài ra PPI-8255 còn có thể hoạt động theo chế độ bắt tay .
I.2.2 SƠ ĐỒ KHỐI VÀ SƠ ĐỒ CHÂN TÍN HIỆU PPI-8255
I.2.2.1 Sơ đồ khối :( hình 3)
Các cổng PA, PB, PC đều có thể hoạt động ở chế độ vào ra đơn giản, nếu PPI - 8255 được đặt theo chế độ bắt tay thì các bit cao của PC sẽ đựơc sử dụng vào mục đích tạo tín hiệu bắt tay.
Bộ đệm số liệu là loại bộ đệm 8 bit 2 hướng 3 trạng thái được dùng để ghép nối 8255A với bus hệ thống của PC. Số liệu sẽ được bộ đệm phát hoặc thu bằng việc chạy các lệnh IN, OUT. Các từ điều khiển đặt chế độ cho 8255A và thông tin trạng thái cũng được truyền qua bộ đệm này.
Các mạch logic đọc /viết và điều khiển quản lý các quá trình truyền số liệ, truyền các từ điều khiển, chấp nhận các tín hiệu vào từ các bus địa chỉ và bus điều khiển của CPU và lần lượt phát ra các lệnh tới cả 2 nhóm điều khiển A và B.
Điều khiển đọc/viết
Cổng A
Điều khiển nhóm A
Điều khiển nhóm B
Bộ đệm số liệu
Cổng CH
Cổng CL
Cổng B
Bus nội bộ
Pa7 – pa0
Pc7-pc4
Pc3-pc0
Pb0- pb7
Hình 5: sơ đồ khối của 8255
I.2.2.2 Sơ đồ chân tín hiệu :( hình 4)
Chân VCC : điện áp nguồn cung cấp cho 8255.
Chân CS: khi ở mức tích cực thấp cho phép 8255 thông tin được với Cpu
RD
Chân : khi ở mức tích cực thấp cho phép CPU đọc số liệu hoặc thông tin trạng thái của 8255.
WR
Chân : khi ở mức tích cực thấp cho phép CPU viết số liệu hoặc từ điều khiển vào 8255.
Chân Reset : ở mức cao sẽ xoá các thanh ghi điều khiển và đặt các cổng A, B, C ở chế độ vào
2 chân A0, A1 khi kết hợp với các tín hiệu WR, RD sẽ cho phép truy cập 1 trong 3 cổng hoặc thanh ghi :
A0
A1
Công việc
0
0
Đọc/ ghi cổng A
0
1
Đọc/ ghi cổng B
1
0
Đọc/ ghi cổng
1
1
Đọc/ ghi từ điều khiển CW
Sơ đồ chân của 8255:
PPI - 8255A
PA
RD
CS
GND
A0
A1
PC
PB0
PB2
PB
20
21
VCC
D7
D0
RESET
WR
PA7
PA4
Hình 6: Sơ đồ chân của 8255
1
40
5
18
26
36
I.2.3 NGUYÊN LÝ HOẠT ĐỘNG CỦA 8255A
PPI-8255A 3 chế độ hoạt động 0, 1 và 2. sau khi reset thì tất cả các cổng đều được đặt ở chế độ vào. Bằng cách đặt các bit của từ điều khiển CW thì ta sẽ chọn được chế độ:
D7
D6
D5
D4
D3
D2
D1
D0
D7: được đặt giá trị 1.
D6 d5 : chọn chế độ: 00 : chế độ 0, 01: chế độ 1, 1x chế độ 2.
D4 : cổng A :0 :ra, 1 :vào.
D3 : cổng C cao (pc7 – pc4 ).
D2 : chế độ 0: chế độ 0 ; 1: chế độ 1.
D1: cổng B.
D0: cổng c thấp ( pc3 – pc0).
I.2.3.1 Chức năng điều khiển ngắt :
Khi từ điều khiển CW của 8255A được lập trình hoạt động theo chế độ 2 hoặc 1 thì các tín hiệu điều khiển sẽ được cung cấp nhằm có thể sử dụng chúng như các tín hiệu ngắt tới CPU. Các yêu cầu ngắt từ cổng C có thể được cho phép hoặc bị cấm bằng cách đặt lại một mạch lật INTE có liên quan khi sử dụng chức năng đặt/xoá các bit trên cổng C.
I.2.3.2 Các chế độ hoạt động :
Chế độ 0: vào ra 1 chiều đơn giản không có móc nối. Bất kỳ cổng nào cũng có thể là các cổng vào/ra trong chế độ này. Trong mode ra số liệu viết ra cổng được chốt và tồn tại trên đầu các cổng ra cho tới khi một byte mới được viết tới. Trong mode vào sẽ đọc các giá trị trên các chân của cổng vào và các bit này không được chốt.
Chế độ 1: vào ra 2 chiều có móc nối qua cổng ch.
Trong mode vào:
- STB chân PC4(strobe input): khi thiết bị ngoại vi nối với đường này ở mức tích cực thấp thì byte trên cổng được nạp vào thanh ghi chốt lối vào.
- IBF chân PC5 (input buffer full): nhảy lên mức cao khi đã có 1 byte trong bộ chốt nối vào.
- INTR (interupt request): chân PC3:mức cao của lối ra này có thể được dùng để ngắt cho CPU.
Trong mode ra:
- OFB : (output buffer full): được đưa về mức 0 khi CPU đã viết số liệu ra cổng.
- ACK: (Acknowledge): thiết bị ngoại vi làm tín hiệu đến lối vào ở mức thấp thông báo cho 8255 biết rằng số liệu từ cổng A hoặc B đã nhận được. Khi bit này ở mức 1 thì có thể gửi tiếp tới 1 byte khác.
- INTR: nếu cho phép một ngắt sẽ phát ra khi bộ đệm rỗng .
Chế độ 2: Vào /ra 2 chiều qua cổng A có móc nối qua nibble cao và bit c3 của cổng C, vậy là có 5 bit của cổng C được dùng để lưu trữ trạng thái cho cổng A hai chiều vào/ra 8 bit.
Mode vào:
- INTR chân PC2: mức cao được dùng để ngắt CPU.
- OBF chân PC7: mức thấp chỉ rằng CPU viết xong số liệu tới cổng A
- ACK chân PC6: mức thấp cho phép bộ đệm 3 trạng thái phát số liệu ngược lại nó ở trong trạng thái trở kháng cao.
- INTE 1: mạch lật này được điều khiển bởi việc đặt/xóa bit PC6.
Mode ra:
- STB: chân PC4 mức thấp để nạp số liệu tới chốt lối vào.
- IBF : chân PC5 mức cao chỉ thị rằng số liệu đã được nạp tới bộ chốt lối vào
- INTE 2 :có liên quan đến tới bit IBF được điều khiển bởi việc đặt/xóa bit PC4.
I.2.4 CÁC BƯỚC VIẾT CHƯƠNG TRÌNH
B1: Xác định địa chỉ của các cổng và CW
B1: nạp từ điều khiển vào CW để xác định chế độ họat động và cho các cổng là vào hay ra.
B3: viết chương trình điều khiển cho chúng theo các mục tiêu đã đặt ra
Chương II
THỰC NGHIỆM - GHÉP NỐI AVR VÀ 8255
II.1 SƠ ĐỒ KHỐI PHỐI GHÉP GIỮA AVR VÀ 8255A
Nguồn nuôi
AVR
PPI - 8255
PA
PC
DATA
CONTROL
VCC
BỘ TẠO DAO ĐỘNG
KHỐI RESET
ADD
PB
PA
D0 – D7
RESET
Hình 7: sơ đồ khối ghép nối 8255 với AVR
PD
PD
Sơ đồ trên thực hiện việc điều khiển vào ra của AVR với PPI-8255A. AVR sẽ điều khiển 8255A vào ra qua các cổng để tăng thêm số cổng vào ra cho bộ vi xử lý. Đường dữ liệu là 1 đường dẫn 8 bit mà 1 cổng trên AVR là cổng ra và cổng trên 8255A là cổng nhận dữ liệu vào, sau đó sẽ đưa giá trị này ra 1 cổng nào đó. Đường điều khiển để chọn cổng vào ra trên 8255A, chọn chế độ đọc viết tới các cổng trên 8255. Sau khi viết từ điều khiển cho 8255 việc vào ra dữ liệu giữa AVR và 8255 được thực hiện. Nếu AVR muốn đưa dữ liệu ra dữ liệu trước tiên được viết tới thanh ghi dữ liệu của cổng A (cổng được ghép nối với đường dữ liệu của 8255). Sau đó dữ liệu này được viết tới bộ đệm dữ liệu của 8255. Bằng việc xác định CW và lựa chọn các cổng trên 8255 đã được lập trình thì dữ liệu sẽ được xuất ra các cổng. Tương tự nếu 1 cổng của 8255 được cấu hình thành cổng vào thì dữ liệu được đọc và viết tới bộ đệm dữ liệu khi đó ta cấu hình các chân cổng A của AVR thành các cổng vào để lấy dữ liệu vào cho AVR.
II.2 SƠ ĐỒ CHI TIẾT KHỐI PHỐI GHÉP GIỮA AVR VÀ 8255A
Nguồn nuôi
PA
AVR
PD
PC
PB
VCC
VCC
PB
PC
VCC
AREF
AVCC
AGND
XTAL1
ATAL2
BỘ TẠO DAO ĐỘNG
RESET
0
1
2
3
4
5
6
7
pa0
pa1
pa2
pa3
pa4
pa5
pa6
pa7
pd0
pd1
pd2
pd6
pd7
A0
A1
CS
RD
WR
RESET
GND
D
PPI-8255A
PA
Hình 8: Sơ đồ ghép nối chi tiểt
Việc lập trình cho PPI thành các cổng vào ra được tiến hành trên AVR. Điều khiển với việc chọn cổng và giá trị hoàn toàn trên AVR bằng việc đặt giá trị cho từ điều khiển CW
Trước tiên để có giá trị cho chân CS của 8255 thì các chân số 2 của cổng D, AVR được thiết lập thành các chân ra và thiết lập cho chúng giá trị =1. Các chân PD0, PD1 được dùng để chọn các cổng hoặc CW trên 8255 theo bảng trên. Các chân này cũng được đặt là các cổng ra. Chân D7, D6 được dùng để lựa chọn chế độ đọc hay ghi đến các cổng của 8255 khi được kết hợp với các chân D0 và D1 sẽ cho phép đọc hoặc ghi tới từng cổng cụ thể :
Bảng chọn chế độ điều khiển cho 8255 khi thiết đặt các chân tương ứng trên AVR:
PD0 (A0)
PD1 (A1)
PD6 (RD)
PD7 (WR)
Chức năng
(8255)
0
0
0
1
Đọc dữ liệu từ cổng A vào bus số liệu
0
1
0
1
Đọc dữ liệu từ cổng B vào bus số liệu
1
0
0
1
Đọc dữ liệu từ cổng C vào bus số liệu
1
1
0
1
Đọc từ điều khiển vào bus số liệu
0
0
1
0
Viết dữ liệu từ bus số liệu vào cổng A
0
1
1
0
Viết dữ liệu từ bus số liệu vào cổng B
1
0
1
0
Viết dữ liệu từ bus số liệu vào cổng C
1
1
1
0
Viết dữ liệu từ bus số liệu vào từ điều khiển CW.
Với việc dễ dàng thiết lập cho các chân của AVR là các chân vào/ra, trong trường hợp này ta cần thiết lập toàn bộ các chân của cổng A là các chân vào hoặc ra. Khi đó nếu cần xuất dữ liệu tới cổng A thì trước hết ta chỉ cần dùng lệnh: SER Rd sau đó OUT DDRA, Rd. Tương tự khi ta muốn lấy dữ liệu vào từ cổng A thì trước hết ta đặt cổng A là cổng vào: CLR Rd sau đó OUT DDRA,RD rồi dùng lệnh In Rd, PINA để lấy dữ liệu vào cho AVR.
II.3 THUẬT TOÁN ĐIỀU KHIỂN
BẮT ĐẨU
Cấu hình các cổng trên AVR
Nạp từ điều khiển cho 8255
Chọn PA của 8255
Đọc /ghi
Đọc
Ghi
Lấy dl từ PA đưa vào ram của avr
Lấy dl từ Ram của avr đưa ra PA
Đọc /ghi
Đọc
Ghi
Lấy dl từ PC đưa vào ram của avr
Chọn PB của 8255
Đọc /ghi
Đọc
Ghi
Lấy dl từ PB đưa vào ram của avr
Lấy dl từ Ram của avr đưa ra PA
Chọn PC của 8255
Lấy dl từ Ram của avr đưa ra PA
Khi hệ thống bắt đầu được cấp nguồn, mạch tạo dao động bắt đầu hoạt động và các vi điều khiển cũng bắt đầu hoạt động thì việc đầu tiên chúng cần phải được đặt cấu hình. Ta cần phải cấu hình trước tiên cho các cổng trên AVR sau đó là cho các cổng trên 8255A bằng việc nạp từ điều khiển CWR cho 8255. Công việc này được bắt đầu bằng việc viết từ điều khiển đó vào 1 thanh ghi dữ liệu của một cổng nào đó trên AVR rồi xuất chúng tới bộ đệm dữ liệu trên 8255. Việc đưa giá trị vào các chân trên AVR cụ thể là các chân chọn cổng A0( chân PD0), A1(chân PD1), và CS(chân PD3) sẽ hỗ trợ cho việc viết từ điều khiển này. Sau đó công việc điều khiển của hệ thống được bắt đầu: AVR sẽ kiểm tra lần lượt các cổng trên 8255 xem chúng là đọc hay ghi và nếu là đọc thì dữ liệu đọc vào từ 1 cổng nào đó sẽ được ghi tại bộ đệm của 8255 và AVR cần lấy dữ liệu từ đây vào. Nếu cổng cần được ghi thì dữ liệu trước tiên cần AVR đưa từ Ram ra cổng PA rồi xuất tới bộ đệm dữ liệu trên 8255 và bằng giá trị các chân chọn như trên ta sẽ xuất được giá trị đó tới cổng cụ thể.
Quá trình hoạt động của hệ thống là liên tục và lặp lại, chỉ khi nào hệ thống được tắt thì nó mới ngừng chương trình. Nếu AVR được reset thì tương ứng 8255A cũng sẽ được reset và hệ thống lại được bắt đầu lại.
KẾT LUẬN
Trong thời gian thực tập 3 tuần, cùng với sự chỉ dẫn tận tình của thầy Lê Hùng Linh, và sự cố gắng của bản thân Em đã hoàn thành việc tìm hiểu đề tài của mình theo đúng thời gian quy định.
Do thời gian có hạn nên Em chưa có điều kiện tìm hiểu sâu hơn về các vi điều khiển. Mặt khác còn vì trình độ bản thân còn hạn chế và các tài liệu về vi điều khiển loại này chưa nhiều nên chắc chắn việc nghiên cứu đề tài này của em khó tránh khỏi những sai sót. Em rất mong nhận được các ý kiến phê bình và đóng góp của các thầy, các cô, các bạn sinh viên. Em xin chân thành cảm ơn.
Trong thời gian tới em rất muốn nghiên cứu sâu hơn về các loại vi điều khiển và các ứng dụng thực tiễn của chúng. Để từ đó có thể có các đề tài nghiên cứu đưa các vi điều khiển vào các ứng dụng thực tiễn. Em rất mong nhận được sự hướng dẫn của các thầy các cô.
TÀI LIỆU THAM KHẢO
Kỹ thuật vi điều khiển với AVR (Nhà xuất bản khoa học và kỹ thuật) của tác giả Ngô Diên Tập
Nguyên lý phần cứng kỹ thuật ghép nối máy vi tính (Nhà xuất bản giáo dục) của tác giả Trần Quang Vinh
AVR Microcontroller AT90S8535 ( Tài liệu về AT90S8535 của hãng ATMEL )
Datasheet AT90S4434/ LS4434/ S8535/ LS8535 Preliminary (Complete) của hãng Atmel Corporation.
ĐẠI HỌC THÁI NGUYÊN Cộng hoà xã hội chủ nghĩa Việt Nam
Khoa công nghệ thông tin Độc lập tự do hạnh phúc
-------------***-------------- -----------------***------------------
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Thái Nguyên Ngày…Tháng…Năm…
Giảng viên hướng dẫn
LÊ HÙNG LINH
Các file đính kèm theo tài liệu này:
- Tìm hiểu các chíp khả lập trình.doc