Với tốc độ tính toán cao dựa trên kiến trúc RISC, kết hợp các chứcnăng điều khiển tiện ích của một bộ vi điều khiển hiệu năng cao 16-bithighperformance16-bit microcontroller, có thể thực
Trang 1MỤC LỤC
Trang 2GPRS General Packet Radio Service
TCP Transmition Control Protocol
Trang 3DANH SÁCH CÁC BẢNG
CHƯƠNG 1 : VI ĐIỀU KHIỂN DSPIC30F4011
Bảng 1.1 Các chế độ định địa chỉ cơ bản đựơc hỗ trợ 17
CHƯƠNG 2 : MODULE SIM 548 Bảng 2.1 Chi tiết các chân của module SIM548 37
Bảng 2.2 Trạng thái chân RI 42
Bảng 2.3 Thứ tự chân SIM card 44
Bảng 2.4 Trạng thái chân STATUS 44
Bảng 2.5 Các chân dành cho ứng dụng GPS 45
48
Bảng 2.6 Chuẩn đầu ra 62
Bảng 2.7 Giao thức RMC 64
65
Trang 4
6
CHƯƠNG 6 : ỨNG DỤNG GOOGLE MAP API Bảng 6.1 Bảng Data 94
Trang 5DANH SÁCH CÁC HÌNH
CHƯƠNG 1 : VI ĐIỀU KHIỂN DSPIC30F4011
Hình 1.1 Sơ đồ khối DsPic30F4011 .14
Hình 1.2 Các thanh ghi của khối xử lý trung tâm 15
Hình 1.3 Một ví dụ về đảo bit địa chỉ 19
Hình 1.4 Bản đồ không gian bộ nhớ chương trình 20
Hình 1.5 Truy cập dữ liệu từ không gian chương trình 22
Hình 1.6 Ánh xạ không gian dữ liệu vào không gian chương trình 23
Hình 1.7 Các cổng I/O của dsPic30F4011 24
Hình 1.8 Sơ đồ khối của một cổng I/O dùng chung với ngoại vi khác 25
Hình 1.9 Các vector bẫy lỗi 27
Hình 1.10 Sơ đồ khối của Timer 1 29
Hình 1.11 Sơ đồ khối Timer 2 29
Hình 1.12 Sơ đồ khối Timer 3 30
Hình 1.13.Sơ đồ khối Timer 2/3 - 32bit 30
Trang 6CHƯƠNG 2 : MODULE SIM 548
Hình 2.1 Module SIM548 31
Hình 2.2 Các thiết bị kèm theo 32
Hình 2.3 Dùng chân PWMRKEY để bật ứng dụng GSM 39
Hình 2.4 Dùng chân PWRKEY để tắt ứng dụng GSM 41
Hình 2.5 Chuẩn giao tiếp nối tiếp của SIM548 43
Hình 2.6 Kết nối SIM card 6 chân 44
Hình 2.7 Cấu tạo đế SIM card 6 chân 44
Hình 2.8 Kết nối với chân NETLIGHT 45
Hình 2.9 Bật ứng dụng GPS 47
Hình 2.10 Kết nối với chân VRTC 47
Hình 2.11 Kết nối với chân RESET 48
Hình 2.12 Mạng GSM 49
Hình 2.13 Chuyển từ chế độ bình thường sang chế độ nghỉ (sleep mode) 51
Hình 2.14 Đưa module trở về trạng thái hoạt động 51
Hình 2.15 Khởi tạo cấu hình mặc định cho module SIM548 52
Hình 2.16 Thiết lập kết nối 56
Trang 7Hình 2.17 Truyền nhận gói tin giữa module Sim548C và Server 57 Hình 2.18 Kết nối bị huỷ 59 Hình 2.19 Vệ tinh GPS 61
CHƯƠNG 4 : LẬP TRÌNH SOCKET TCP/IP
Hình 4.1 Sơ đồ giao tiếp thông qua Winsock 83 Hình 4.2 Ứng dụng Client – Server (TCP) 84 Hình 4.3 Ứng dụng Client – Server (UDP 85
Trang 8LỜI MỞ ĐẦU
Cùng hoà nhịp với sự phát triển của thế giới,Việt Nam ta tiến dần trên conđường công nghiệp hoá, hiện đại hoá nền sản xuất công nghiệp cũng như đời sốngcủa người dân Với sự phát triển của công nghệ khoa học thì công cuộc này đang cónhững bước tiến vượt bậc
Trong quá trình công nghiệp hoá- hiện đại hoá, thì việc chuẩn hoá, đồng bộ cơ
sở hạ tầng là bước tiền đề quan trọng và tất yếu Và một trong dẫn chứng rõ ràngnhất đó là việc lắp đặt thiết bị giám sát hành trình trên xe ô tô theo quy định tạiNghị định 91/2009/NĐ-CP do Bộ Giao Thông Vận Tải ban hành, một trong nhữngbước đầu thực hiện việc đồng bộ hoá, chuẩn hoá
Xuất phát từ thực tiễn này, nhóm chúng em khi thực hiện đã đi đến quyết định
chọn đề tài “Thiết bị định vị GPS/GPRS”.
Trong quá trình thực hiện đồ án, nhóm đã cố gắng tìm hiểu nhiều vấn đề nhưngôn ngữ lập trình Socket, lập trình Web, ngôn ngữ lập trình C#, các thuật toánchuyển đổi… Sau thời gian thực hiện, nhóm chúng em đã đạt được một số kết quảnhất định đó là lập trình thành công cho Vi điều khiển, Socket, Web và đã hiển thịđược vị trí trên bản đồ cập nhật theo thời gian thực Song trong đồ án vẫn còn nhiềuvấn đề nhóm vẫn chưa khắc khục đươc như việc kết nối lại của Socket khi mất kếtnối, chức năng tìm đường, dẫn đường
Nhóm thực hiện đề tài
Nguyễn Tấn LợiNguyễn Trung Nhân
Trang 9CHƯƠNG 1 : VI ĐIỀU KHIỂN DSPIC30F4011 1.1 Giới thiệu chung về họ vi điều khiển Dspic
Họ vi điều khiển 16 bit dsPic do công ty công nghệ Microchip TechnologyInc sản xuất, được phát triển trên nền họ vi điều khiển 8 bit Pic Vi điều khiểndsPic là một chip xử lý mạnh với bộ xử lý 16 bit (có khả năng xử lý dữ liệu có độdài 16 bit) Với tốc độ tính toán cao dựa trên kiến trúc RISC, kết hợp các chứcnăng điều khiển tiện ích của một bộ vi điều khiển hiệu năng cao 16-bit(highperformance16-bit microcontroller), có thể thực hiện chức năng của một bộ
xử lý tín hiệusố (DSP) nên dsPIC còn có thể được xem là một bộ điều khiển tínhiệu số (Digital Signal Controller – DSC).Họ vi điều khiển dsPic có thể đạt tớitốc độ xử lý 40 MIPS (Mega Instruction Per Second - triệu lệnh trên một giây).Ngoài ra dsPic còn được trang bị bộ nhớ Flash, bộ nhớ dữ liệu EEPROM và cácngoại vi hiệu năng cao và rất đa dạng các thư viện phần mềm cho phép thực hiệncác giải thuật nhúng với hiệu suất cao một cách dễ dàng trong một khoảng thờigian ngắn Chính vì vậy dsPic được ứng dụng rất rộng rãi trong các ứng dụng xử
lý tín hiệu số, đo lường và điều khiển tự động, v v
Họ vi điều khiển dsPic được chia ra làm ba loại tùy theo mục đích của người sửdụng :
- Bộ điều khiển số cho điều khiển motor và biến đổi nguồn (DSC Motor Control
& Power Conversion Family)
- Bộ điều khiển số cho sensor (DSC Sensor Family)
- Bộ điều khiển số đa mục đích (DSC General Purpose Family)
Trang 101.2. Đặc điểm chung của vi điều khiển dsPic30F4011
1.2.1. Khối xử lý trung tâm CPU
- Tập lệnh cơ bản gồm 84 lệnh
- Chế độ định địa chỉ linh hoạt
- Độ dài lệnh 24-bit, độ dài dữ liệu 16-bit
- Bộ nhớ chương trình Flash 24 Kbytes
- Bộ nhớ RAM độ lớn 1Kbytes
- Bộ nhớ EEPROM
- Mảng 16 thanh ghi làm việc 16-bit
- Tốc độ làm việc lên tới 40 MIPS
1.2.2. Bộ chuyển đổi tương tự số ADC
- Bộ chuyển đổi tương tự - số (ADC) 10-bit
+ Tốc độ lấy mẫu tối đa 1 Msps (Mega samples per second)
+ Tối đa 10 kênh lối vào ADC
+ Thực hiện biến đổi cả trong chế độ Sleep và Idle
- Chế độ nhận biết điện thế thấp khả lập trình
- Tạo Reset bằng nhận diện điện áp khả lập trình
1.2.3. Các cổng vào ra I/O Port và các ngoại vi
Trang 11- 3 Timer 16-bit, có thể ghép 2 Timer 16-bit thành Timer 32-bit.
- Chức năng Capture 16-bit
- Các bộ so sánh/PWM 16-bit
- Module SPI 3 dây (hỗ trợ chế độ Frame)
- Module I2C, hỗ trợ chế độ đa chủ tớ, địa chỉ từ 7-bit đến 10-bit
- UART có khả năng địa chỉ hoá, hỗ trợ bộ đệm FIFO
1.2.4. Bộ xử lý tín hiệu số
- Nạp dữ liệu song song
- Hai thanh chứa 40-bit có hỗ trợ bão hoà logic
- Thực hiện phép nhân 2 số 17-bit trong một chu kì máy
- Tất cả các lệnh DSP đều thực hiện trong một chu kì máy
- Dịch trái hoặc phải 16 bit trong một chu kì máy
- Khả năng tự nạp trình dưới điều khiển của software
- Watch Dog Timer mềm dẻo với bộ dao động RC nguồn thấp trên chip
- Chế độ bảo vệ firmware khả lập trình
Trang 12- Có thể lựa chọn các chế độ quản lí nguồn: Sleep hoặc Idle.
1.3. Cấu trúc của vi điều khiển dsPic30F4011
1.3.1. Khối xử lý trung tâm CPUCPU của dsPic30F4011 được thiết kế trên kiến trúc RISC, nhân của CPU
có một bộ xử lí lệnh 24-bit và bộ đếm chương trình – Program Counter (PC)
độ rộng 23-bit với bit ý nghĩa thấp nhất luôn bằng 0, còn bít ý nghĩa cao nhấtthì được bỏ qua trong suốt quá trình thực hiện chương trình bình thường, chỉtrừ khi thực hiện các lệnh đặc biệt Do đó, bộ đếm chương trình có thể địnhđịa chỉ lên tới 4 triệu từ lệnh của không gian bộ nhớ chươngtrình được sửdụng Thiết bị dsPIC30F chứa 16 thanh ghi làm việc 16-bit Mỗi thanh ghilàm việc có thể có thể làm việc với vai trò như dữ liệu, địa chỉ hoặc thanh ghiđịa chỉ offset Thanh ghi thứ 16 (W15) hoạt động như là con trỏ ngăn xếpmềm cho hoạt động ngắt và gọi ngắt Các chỉ lệnh của dsPIC30F gồm 2 lớp:Lớp MCU và Lớp DSP của lệnh Hai lớp này được kết hợp đồng nhất vớinhau trong kiến trúc và thực hiện từ một khối thực hiện đơn Các chỉ lệnhbao gồm nhiều chế độ địa chỉ và được chế tạo nhằm tương thích với trìnhbiên dịch ngôn ngữ C Không gian dữ liệu có thể được địa chỉ hoá thành 32Kwords hoặc 64 Kbytes và được chia làm hai khối, được gọi là bộ nhớ dữ liệu
X và bộ nhớ dữ liệu Y Mỗi khối đều có khối tạo địa chỉ - AGU (AdressGenerator Unit) riêng biệt của nó Tất cả các lệnh hoạt động đơn độc chỉ qua
bộ nhớ X, và khối AGU – quy định sự xuất hiện của một vùng dữ liệu thốngnhất Lớp thanh chứa phép nhân (Multiply-Accumulate) – MAC của lệnhDSP hoạt động thông qua cả hai khối AGU của bộ nhớ X và Y, nó chia địachỉ dữ liệu thành hai phần Mỗi từ dữ liệu gồm 2-bytes, và tất cả các lệnh cóthể định địa chỉ dữ liệu theobytes hoặc words (từ) Có hai cách để truy xuất
Trang 13- 32 Kbytes cao của vùng nhớ dữ liệu có thể được sắp xếp trong nửa thấp củakhông gian chương trình tại biên của 16K từ chương trình bất kỳ, được định
nghĩa bởi thanh ghi PSVPAG 8-bit (Program Space Visibility Page) Do đó
các lệnh có thể truy cập không gian chương trình như không gian dữ liệu,nhưng có một giới hạn là nó cần thêm một chu kỳ lệnh nữa Chỉ có 16 bítthấp của mỗi từ lệnh có thể sử dụng phương thức truy cập này
- Truy cập trực tiếp không tuyến tính của các trang 32K từ nằm trong khônggian chương trình cũng có thể sử dụng các thanh ghi làm việc, thông quabảng lệnh đọc và ghi Bảng lệnh đọc và ghi có thể được sử dụng để truy cập
cả 24 bit của một từ lệnh Khối X AGU (khối AGU của bộ nhớ X) cũng hỗtrợ việc đảo bit địa chỉ trên địa chỉ đích kết quả nhằm đơn giản hoá tối đa dữliệu vào hoặc ra để chúng thích hợp cho thuật toán FFT cơ số 2.Với tất cảcác lệnh, nhân của dsPIC30F có khả năng thực hiện việc đọc bộ nhớ dữ liệuhoặc bộ nhớ chương trình, đọc thanh ghi làm việc, ghi vào thanh ghi làmviệc và đọc bộ nhớ chương trình mỗi chu kì lệnh Như vậy, lệnh 3 toán hạngđược hỗ trợ, cho phép thực hiện phép tính C = A + B trong một chu kì lệnh
Trang 14Hình 1.1 Sơ đồ khối DsPic30F4011
Trang 15Hình 1.2 Các thanh ghi của khối xử lý trung tâm
Công cụ DSP được tích hợp vào vi xử lý làm tăng ý nghĩa của một CPUmạnh về thuật toán Đặc điểm của nó là thực hiện ở tốc độ cao một phépnhân hai số 17-bit, mộtkhối số học và logic (ALU) 40-bit, hai thanh chứa cókhả năng bão hoà 40-bit và một bộdịch hai hướng 40-bit Dữ liệu trong thanhchứa hoặc bất kỳ một thanh ghi làm việc nào có thể được dịch trái 15 bit haydịch trái 16 bit chỉ trong một chu kỳ lệnh Các lệnh DSP hoạt động thốngnhất với tất cả các lệnh khác và được thiết kế nhằm thích hợp với việc xử lýthời gian thực
Trang 16Lớp MAC của lệnh có thể đồng thời nạp hai toán hạng dữ liệu từ bộ nhớtrong khi đang nhân hai thanh ghi W Để kích hoạt chế độ nạp đồng thời củatoán hạng, không gian dữ liệu được chia nhỏ cho các lệnh này và tuyến đốivới các lệnh khác Việc này được thực hiện rõ ràng và rất linh hoạt bằng cáchdành một vài thanh ghi làm việc cho mỗi không gian địa chỉ cho lớp MACcủa lệnh.
Nhân của vi xử lý không hỗ trợ đường ống đa tầng lệnh, nhưng một lệnh đơntầng sẽ sử dụng kĩ thuật tiền nạp, truy cập và giải mã từng phần lệnh nhằmmục tiêu một lệnh chỉ thực hiện trong một chu kỳ
1.3.2. Khối tạo địa chỉ AGU
Nhân của vi xử lý dsPIC chứa hai khối tạo địa chỉ độc lập là X AGU và YAGU Khối Y AGU hỗ trợ đọc dữ liệu 16-bit cho lớp MAC của lệnh DSP.Các khối AGU trong dsPIC hỗ trợ 3 kiểu địa chỉ dữ liệu:
- Địa chỉ tuyến tính
- Địa chỉ vòng
- Địa chỉ đảo bit
Chế độ địa chỉ tuyến tính và địa chỉ vòng có thể áp dụng cho không gian dữliệu hoặc không gian chương trình Chế độ đảo bit địa chỉ áp dụng cho cácđịa chỉ không gian dữ liệu
1.3.2.1 Chế độ địa chỉ lệnh
Các chế độ địa chỉ được cung cấp trong lớp MAC của các lệnh thì có khác nhau đôi chút ở các lệnh khác nhau
Trang 17Bảng 1.1 Các chế độ định địa chỉ cơ bản đựơc hỗ trợ
Lệnh thanh ghi tệp
Tất cả các lệnh thanh ghi đều sử dụng trường địa chỉ 13-bit để trực tiếp địnhđịa chỉ dữ liệu ở 8192 bytes đầu của bộ nhớ dữ liệu (gần không gian dữ liệu).Tất cả các lệnh thanh ghi tệp đều tận dụng thanh ghi làm việc W0, thanh ghilàm việc trong các lệnh này
Lệnh MCU
Các lệnh MCU 3 toán hạng có dạng như sau:
Toán hạng 3 = Toán hạng 1 <hàm> Toán hạng 2
Trong đó Toán hạng 1 luôn là thanh ghi làm việc (ví dụ: chế độ địa chỉ chỉ cóthể làthanh ghi trực tiếp) Toán hạng 2 có thể là thanh ghi W, lấy dữ liệu từ
bộ nhớ dữ liệu,hoặc 5 bit thông thường Kết quả được đặt trong có thể là
thanh ghi W hoặc một địa chỉ cố định
Lệnh di chuyển và tích luỹ
Lệnh di chuyển và các lớp DSP tích luỹ của lệnh làm cho sự mềm dẻo củađịa chỉ cao hơn các lệnh khác Tất cả các lệnh MCU, lệnh di chuyển và tích
Trang 18luỹ đều hỗ trợ chế độ địa chỉ, và cũng hỗ trợ chế độ thanh ghi gián tiếp vàthanh ghi địa chỉ offset.
Chú ý: đối với lệnh MOV, chế độ địa chỉ được chỉ rõ trong lệnh có thể khác
nhau giữa nguồn và đích Tuy nhiên trường của 4-bit offset của thanh ghi
Wb được chia sẻ giữa nguồn và đích
Các lệnh MAC
Cả hai toán hạng nguồn của các lệnh DSP (CLR, ED, EDAC, MAC, MPY.N,MOVSAC và MSC) được xem như các lệnh MAC, tận dụng các lệnh đượcđơn giản hoá của chế độ địa chỉ nhằm cho phép người sử dụng có thể điềukhiển con trỏ dữ liệu thông qua các bảng thanh ghi gián tiếp
Hai thanh ghi tiền nạp toán hạng nguồn phải là một trong các thanh ghi sau:{W8, W9, W10, W11} Với đọc dữ liệu, W8 và W9 luôn tương tác trực tiếpvới X AGU, W10 và W11 luôn tương tác trực tiếp với Y AGU Do đó địachỉ hiệu dụng được tạo (trước và sau khi hiệu chỉnh) phải hợp lệ với địa chỉtrong không gian dữ liệu X cho W8, W9 và trong không gian dữ liệu Y choW10, W11
Các lệnh khác
Bên cạnh các chế độ địa chỉ biến đổi, một vài lệnh sử dụng các hằng số cóđịnh dạng thay đổi Ví dụ: lệnh BRA (branch – phân nhánh) sử dụng dữ liệu16-bit có dấu để chỉ ra đích rẽ nhánh trực tiếp, trong khi lênh DISI sử dụngtrường số 14-bit không dấu Trong một vài lệnh như ADD hay ACC, nguồncủa một toán hạng hoặc kết quả được đưa ra bởi chính mã lệnh của nó Tuynhiên, một vài lệnh như NOR, lại không có toán hạng nào
1.3.2.2. Chế độ đảo bit địa chỉ
Địa chỉ được đảo bit nhằm làm đơn giản hoá dữ liệu cho thuật toán FFT
Trang 19Thực hiện đảo bit địa chỉ
Đảo bít địa chỉ được bật khi các điều kiện sau được thoả mãn:
- Các bit BWM (lựa chọn thanh ghi W) trong thanh ghi MODCON ở giá trịlớn hơn 15 (không thể truy cập ngăn xếp khi đang sử dụng chế độ đảo bit địachỉ)
- Bit BREN được đặt trong thanh ghi XBREV
- Chế độ địa chỉ được sử dụng là chế độ thanh ghi gián tiếp nếu độ dài bộđệm của các bit được đảo là M = 2N bytes, N bit cuối cùng của bộ đệm dữliệu bắt đầu được định địa chỉ bằng không
Các bit XB <từ bit 14 đến 0 của thanh ghi XBREV> là địa chỉ bit được đảo,hay còn gọi là “điểm xoay” (pivot point) thường là hằng số
Hình 1.3 Một ví dụ về đảo bit địa chỉ
1.3.3. Tổ chức bộ nhớ và bộ nhớ chương trình
1.3.3.1. Không gian địa chỉ chương trình
Không gian địa chỉ chương trình có độ lớn 4M từ lệnh Bản đồ khônggian bộ nhớ chương của dsPic30F4011 được chỉ ra trong Hình 2.4 Bộ nhớchương trình có thể được địa chỉ hoá bởi một giá trị 24-bit bởi bộ đếmchương trình (PC), hoặc bảng lệnh địa chỉ hiệu dụng (EA), hoặc không gian
dữ liệu EA khi không gian chương trình được sắp xếp và địa chỉ hoá Chú ýrằng, địa chỉ không gian chương trình được tăng lên với bước là 2 giữa các từ
Trang 20chương trình để tạo ra sự tương thích với việc địa chỉ hoá không gian dữ liệu.Truy cập không gian chương trình người sử dụng bị giới hạn trong dải 4Mđịa chỉ của từ lệnh (từ 0x000000 tới 0x7FFFFE) với tất cả các lệnhtruy cập,trừ hai lệnh TBLRD/TBLWT - sử dụngbit 7 của thanh ghi TBLPAG để xácđịnh người sử dụng hoặc thiết lập cấu hình truy cập bộ nhớ.
Hình 1.4 Bản đồ không gian bộ nhớ chương trình
1.3.3.2.Truy xuất dữ liệu từ bộ nhớ chương trình sử dụng các lệnh bảng
Trang 21Kiến trúc của dsPIC cho phép nạp dữ liệu rộng 24-bit tới bộ nhớ chươngtrình, do đó các lệnh luôn luôn được xếp hàng tuy nhiên kiến trúc của nó cócải tiến so với kiến trúc máy tính Hadvard nên dữ liệu cũng có thể được đưa
ra ở trong không gian chương trình Có hai phương pháp truy cập không gianchương trình
- Thông qua các lệnh đặc biệt về bảng hoặc thông qua việc định địa chỉ vàsắp xếp lại 16K trang từ không gian chương trình trong nửa cao của khônggian dữ liệu Các lệnh TBLRDL và TBLWTL cung cấp phương pháp đọc vàghi trực tiếp từ ít ý nghĩa nhất (LS Word) tại một địa chỉ bất kỳ trong khônggian chương trình mà không cần thông qua không gian dữ liệu Hai lệnhTBLRDH và TBLWTH chỉ là phương thức mà 8 bít cao của từ không gianchương trình có thể được truy xuất như dữ liệu
- Bộ đếm chương trình (PC) được tăng lên hai với mỗi từ chương trình bit Điều này cho phép các địa chỉ bộ nhớ chương trình ánh xạ trực tiếp tớiđịa chỉ không gian dữ liệu Do đó bộ nhớ chương trình có thể được xem nhưhai không gian từ địa chỉ độ rộng 16-bit Các lệnh TBLRDL và TBLWTLtruy cập không gian chứa từ dữ liệu ít ý nghĩa nhất (LS Data Word) và cáclệnh TBLRDH, TBLWTH truy cập không gian chứa Byte dữ liệu nhiều ýnghĩa nhất (MS Data Byte)
24-Sơ đồ trên chỉ ra cách EA được tạo cho hoạt động bảng và truy cập khônggian dữ liệu (PSV = 1) Tại đây P (từ bit 23 tới bit 0) chỉ thị từ không gianchương trình, còn D (từ bit 15 tới bit 0) chỉ thị từ không gian dữ liệu
1.3.3.3.Truy xuất dữ liệu từ bộ nhớ chương trình sử dụng không gian chương
trình
32 Kbytes cao của không gian dữ liệu có thể được bản đồ hoá trong bất
kỳ trang 16K từ bộ nhớ chương trình nào Nó cho phép truy cập vào hằng số
dữ liệu được lưu trữ từ không gian dữ liệu X mà không cần các lệnh đặc biệt
Trang 22(như TBLRDL/H, TBLWTL/H).Truy xuất không gian chương trình thôngqua không gian dữ liệu được thực hiện nếu bít ý nghĩa thấp nhất của khônggian dữ liệu EA được đặt và chế độ hiển thị không gian chương trình đượcbật bằng cách đặt bit PSV trong thanh ghi điều khiển nhân của vi xử lýCORCON.
Hình 1.5 Truy cập dữ liệu từ không gian chương trình
Truy xuất dữ liệu ở vùng này sẽ thêm vào một chu kỳ lệnh để lệnhđược thực hiện, do đó nạp dữ liệu vào hai bộ nhớ chương trình là cần thiết.Chú ý rằng chỉ phần cao của không gian dữ liệu có khả năng định địa chỉ thiluôn là một phần của không gian dữ liệu X Do đó, khi một thao tác DSP sử
Trang 23gian dữ liệu Y thông thường sẽ lưu trữ trạng thái dữ liệu cho thao tác DSP,còn không gian dữ liệu X thường sẽ lưu giữ hệ số của dữ liệu.
Tuy nhiên mỗi địachỉ không gian dữ liệu , từ 0x8000 trở lên, bản đồ hoá trực tiếp vào địa chỉ của bộ nhớ chương trình đáp ứng (Hình 2.6) chỉ có 16 bit
thấp của từ chương trình 24 bit được sử dụng để lưu dữ liệu 8 bit cao được
lập trình để loại bỏ các lệnh không hợp lệ nhằm giữ nguyên sức mạnh của bộ
vi xử lý
Hình 1.6 Ánh xạ không gian dữ liệu vào không gian chương trình
1.3.4. Các cổng vào ra I/O Port
Các cổng vào ra của dspic40f4011 đều có thiết kế có đầu vào là mạchTrigger Schmitt nhằm cải tiến khả năng chống nhiễu.Tất cả các cổng vào rađều có ba thanh ghi kết hợp với nhau điều khiển trực tiếp hoạt động của cáccổng
Trang 24- Thanh ghi dữ liệu trực tiếp (TRISx) xác định cổng đó là Input hay Output.Nếu bit dữ liệu trực tiếp là ‘1’, thì cổng đó là Input và ngược lại Các cổngđược định nghĩa là Input sau khi Reset.
- Thanh ghi cổng (PORT registers): dữ liệu ở một cổng I/O được truy xuấtthông qua thanh ghi PORTx Đọc giá trị của thanh ghi PORT cổng nào sẽ cóđược giá trị của cổng đó Ghi vào thanh ghi PORT của cổng tương đương việcxuất dữ liệu ra cổng đó
- Thanh ghi LAT, kết hợp với một cổng I/O sẽ loại bỏ được các vấn đề có thểxuất hiện khi đọc-thay đổi-ghi vào cổng đó Đọc giá trị thanh ghi LAT sẽ trả
về giá trị được giữ ở đầu ra của bộ chốt cổng đó, thay cho giá trị ở cổng I/O.Việc ghi vào thanh ghi LATx cũng tạo ra hiệu quả như ghi vào thanh ghiPORTx
Cấu hình tương tự cho cổng: khi sử dụng bộ ADC thì cổng được cấu hình làlối vào tương tự Điều này sẽ được nói kĩ hơn ở phần miêu tả ADC
Hình 1.7 Các cổng I/O của dsPic30F4011
Trang 25Hình 1.8 Sơ đồ khối của một cổng I/O dùng chung với ngoại vi khác
1.3.5. Ngắt và cơ chế ngắt
Vi điều khiển dsPic30F4011 cótới 30 nguồn ngắt và 4 bộ xử lý loạitrừ(bẫy lỗi), bộ xử lýnày sẽ cho phép cácngắt theo mức ưu tiên được sắpđặttrước
CPU có thể đọc bảng vector ngắtvà truyền địa chỉ được chứa trongvectorngắt tới bộ đếm chương trình.Vector ngắt được truyền từ bus dữ liệuchươngtrình vào trong bộ đếm chươngtrình thông qua bộ hợp kênh 24-bit, lốivàocủa bộ đếm chương trình
Bảng vector ngắt (InterruptVector Table - IVT) và bảng vectorngắt thaythế (AlternateInterruptVector Table - AIVT) được đặt gầnđiểm bắt đầu bộ
Trang 26nhớ chương trình(0x000004) IVT và AIVT Các thanh ghi điềukhiểnngắtvà ưu tiên ngắt:
- Các thanh ghi 16-bit IFS0<15:0>,IFS1<15:0>, IFS2<15:0>Tất cả các cờngắt được lưu trong 3 thanh ghi này Các cờ được đặt tươngứng bởi củangoại vi hoặc tín hiệu bên ngoài và có thể xoá bằng phần mềm
- Các thanh ghi 16-bit: IEC0<15:0>, IEC1<15:0>, IEC2<15:0>: Tất cả cácbit điều khiển cho phép ngắt đều nằm trong 3 thanh ghi này Các bit nàyđược sử dụng để cho phép ngắt độc lập ngoại vi và tín hiệu ngoài
- Các thanh ghi ưu tiên ngắt: IPC0<15:0> IPC10<7:0>: Người sử dụng cóthể chuyển đổi mức ưu tiên ngắt kết hợp với mỗi ngắt được giữ trong cácthanh ghi này
- Nhóm bit IPL<3:0>: Mức độ ưu tiên của CPU hiện hành được lưu rõ ràngtrong các bit này Bit IPL<3> nằm trong thanh ghi CORCON, trong khi đócác bit IPL<2:0> nằm trong thanh ghi trạng thái (SR)
- Hai thanh ghi 16-bit INTCON1<15:0>, INTCON2<15:0>: Chức năng điềukhiển ngắt toàn cục được xuất phát từ hai thanh ghi này INTCON1 chứa các
cờ điều khiển và trạng thái của bộ xử lý loại trừ INTCON2 điều khiển tínhiệu yêu cầu ngắt và việc bảng vector ngắt thay thế
Các nguồn ngắt có thể được người sử dụng sắp xếp mức ưu tiên từ 1 đến 7thông qua thanh ghi IPCx Mỗi nguồn ngắt được kết hợp với một vectorngắt
Trang 27Hình 1.9 Các vector bẫy lỗi
1.3.6. Các bộ định thời
Trong vi xử lý dsPIC40F4011 có tới năm bộ định thời (Timer) 16-bit.Trong đó các Timer có thể hoạt động riêng biệt, riêng hai Timer 2, 3 và haiTimer 4, 5 có thể kết hợp với nhau để trở thành một Timer 32 bit
Về cấu trúc các Timer này khác nhau vì hai Timer 2 và 3 và hai Timer 4 và 5
có thể kết hợp còn Timer 1 thì không Timer 1 có cấu trúc kiểu A (Hình2.10), Timer 2,4 kiểu B và Timer 3,5 kiểu C Về hoạt động các Timer có hoạt
Trang 28động gần giống nhau do đó ta sẽ tìm hiểu về Timer 1, các Timer còn lại làtương tự.
Timer 1 có thể hoạt động với nguồn tạo dao động tần số thấp 32KHz, và chế
độ không đồng bộ với nguồn tạo dao động ngoài Đặc điểm riêng biệt củaTimer 1 đó là có thể dùng trong các ứng dụng thời gian thực
Phần tiếp theo sẽ mô tả chi tiết cách thiết lập và sử dụng Timer 1 với ba chếđộ:
- Timer 16-bit: trong chế độ này, timer sẽ tăng sau mỗi chu kỳ lệnh đến khigiá trị củatimer bằng giá trị của thanh ghi chu kỳ PR1 (Period Register) thì sẽreset về ‘0’ và tiếp tụcđếm
- Counter đồng bộ 16-bit: trong chế độ này, timer sẽ tăng ở mỗi sườn lên củacủa xungnhịp ngoài mà được đồng bộ với pha của các xung nhịp trong.Timer tăng đến giá trị nằm trong thanh ghi PR1 thì dừng và reset timer về ‘0’rồi tiếp tục đếm lên
- Counter không đồng bộ 16-bit: khi hoạt động trong chế độ này, timer sẽtăng dần sau mỗi sườn lên của xung nhịp bên ngoài tác động vào Timer sẽtăng dần đến khi giá trị của nó bằng thanh ghi PR1 thì bị reset về ‘0’ rồi lạitiếp tục đếm lên
Hệ số chia tần của bộ định thời
Xung nhịp đầu vào (Fosc/4 hoặc xung nhịp ngoài) đưa vào Timer 16-bit và
có thể được chia tần số theo các tỉ lệ sau: 1:1, 1:8, 1:64, 1:256 được xác địnhbởi các bit TCKPS<1:0> của thanh ghi TxCON Hệ số chia tần này(prescaler) có thể bị xoá khi xảy ra một trong các điều kiện sau:
- Ghi vào TMR
- Ghi vào thanh ghi TxCON (trừ việc ghi vào bit TxCON) Reset thiết bị, nhưPOR và BOR DsPic30F4011 có 5 thanh ghi điều khiển Timer
Trang 29T1CON T5CON Các thanh ghi này được chia ra làm 2 kiều T1CON thuộckiểu A, T2CON và T4CON thuộc kiểu B, T3CON và T5CON thuộc kiểu C.
Hình 1.10 Sơ đồ khối của Timer 1
Hình 1.11 Sơ đồ khối Timer 2
Trang 30Hình 1.12 Sơ đồ khối Timer 3
Trang 31Hình 1.13.Sơ đồ khối Timer 2/3 - 32bit
Trang 32CHƯƠNG 2 : MODULE SIM 548C
2.1. Module SIM548C và các thiết bị đi kèm.
Đây là module GSM/GPRS và GPS của hãng SIMCOM
Chúng ta có thể giao tiếp với module thông qua chuẩn đế 60 chân dành riêng chomodule SIM548 Thông qua đế chuẩn 60 chân này,chúng ta có thể sử dụng modulevới các mục đích :
Trang 33· Bàn phím,bảng nút nhấn hay SPI LCD.
· Một port giao tiếp nối tiếp dành cho GSM và hai port nối tiếp dành cho GPSgiúp cho việc thiết kế và phát triển ứng dụng một cách dễ dàng hơn thông qua việcgiao tiếp bằng tập lệnh AT
Bộ sạc cho pin
· Các ngõ vào ra dành cho chức năng nghe,gọi và xử lý âm thanh
· Các ngõ vào của bộ chuyển đổi AD
Để sử dụng được module SIM548C,cần phải có các thiết bị đi kèm:
A: Nguồn cung cấp
Pin Li-Ion : 3.7V – 800mAh
B: Anten GSM
C: Anten GPS
Trang 34D: Cáp kết nối anten với module.
- Nguồn cung cấp và nguồn sạc pin
- Hai ngõ vào giao tiếp theo chuẩn nối tiếp
- Hai ngõ vào analog
- Ngõ vào ra dành cho Simcard
Trang 352.2.2 Mô tả các chân của module
dùng để cung cấp
Vmax= 4.5VVmin=3.4V
Trang 36nguồn hoạt động chomodule
Vnorm=4.0V
bộ thời gian thực củamodule khi không cónguồn chính Và cung cấp một dòng
ra dành cho nguồn
dự trữ khi có nguồn chính,để tiết kiểm năng lượng của nguồn dự trữ
Vmax=2.0VVmin=1.2VVnorm=1.8VInorm= 20uA
bộ sạc pin của module Đồng thời giúp cho module nhận ra bộ sạc
Vmax=5.25VVmin=1.1 *VBATVnorm=5.1V
cho các ứng dụng số
và tắt nguồn chính của module Chân này được nối với một nút nhấn Để mở
và tắt nguồn của module,phải nhấn nút nhấn để giữ chânnày ở mức thấp
VILmax=0.3*VBATVIHmin=0.7*VBATVImax=VBAT
Trang 37DISP_D0 I/O Ngõ vào ra để kiểm
tra đường truyền dữ liệu
VILmin=0VVILmax=0.9VIHmin=2.0VIHmax= 3.2VOLmin=GNDVOLmax=0.2VVOHmin=2.7VOHmax=2.9
DISP_CLK O Ngõ ra kiểm tra
xung Clock
DISP_A0 O Ngõ ra kiểm tra dữ
liệu và địa chỉ (có thể được lựa chọn bằng phần mềm)
VILmin=0VVILmax=0.9VIHmin=2.0VIHmax= 3.2VOLmin=GNDVOLmax=0.2V
Trang 38VOHmin=2.7VOHmax=2.9Các ngõ vào ra với mục đích chung.
NETLIGHT O Ngõ ra cho biết trạng
thái hoạt động của module GSM
VILmin=0VVILmax=0.9VIHmin=2.0VIHmax= 3.2VOLmin=GNDVOLmax=0.2VVOHmin=2.7VOHmax=2.9
STATUS O Ngõ ra cho biết các
trạng thái hoạt động của các ứng dụng khác có trong module
GPIO5
GPIO32
I/O Ngõ vào ra dùng
chung cho các mục đích khác
Port nối tiếp 1
giao tiếp đã sẵn sàng
VILmin=0VVILmax=0.9VIHmin=2.0VIHmax= 3.2VOLmin=GNDVOLmax=0.2VVOHmin=2.7VOHmax=2.9
liệu đã được gửi đi
Port nối tiếp 2
Trang 39DEBUG_TX O Port dùng để sửa lỗi
và giao tiếp bằng tậplệnh AT
Các chân dành cho Sim card
Sim card
Có 2 loại nguồn cung cấp 1.8V và 2.85V.Được lựa chọn bởi phần mềm
SIM_DATA I/O Chân truyền nhận dữ
liệu với SIM
VILmin=0VVILmax=0.3* VSIMVIHmin=0.7* VSIMVIHmax= VSIM +0.3VOLmin=GNDVOLmax=0.2VVOHmin= VSIM -0.2VOHmax= VSIM
SIM_CLOCK O Xung nhịp cho SIM
SIM_PRESENCE I Chân để nhận biết có
Điện áp ngõ vào từ 0-24V
TEMP_BAT I Ngõ vào cho biết
nhiệt độ của pin
Bảng 2.1 Chi tiết các chân của module SIM548C
2.2.3. Bật ứng GSM của module SIM548C
Có ba cách để cho phép ứng dụng GSM hoạt động
Trang 40- Sử dụng chân PWMRKEY.
- Sử dụng chân CHG_IN
- Sử dụng ngắt của một thời gian thực
- Sử dụng chân PWMRKEY để bật ứng dụng GSM:
Để cho phép ứng GSM hoạt động,yêu cầu phải giữ chân PWMRKEY ở
mức thấp trong một khoảng thời gian ngắn
Hình 2.3 Dùng chân PWMRKEY để bật ứng dụng GSM
Khi việc bật ứng dụng GSM hoàn tất Module sẽ gửi trả lại thông báo ứngdụng đã sẵn sàng hoạt động “RDY” Và chân STATUS sẽ được kéo lên mứccao và giữ ở mức này khi ứng dụng GSM hoạt động
RDY GHOST MODE
+CFUN: 0