HOẠT ĐỘNG ĐỊNH THỜI TIMER

Một phần của tài liệu Đồ án Tốt nghiệp: Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMSGSM (Trang 41)

2.7.1 Bộ định thời TIMER0

Bộ định thời/bộ đếm Timer0 có các đặc tính sau : - Bộ định thời / bộ đếm 8 bit .

- Cho phép đọc và ghi .

- Bộ chia 8 bit lập trình được bằng phần mềm . - Chọn xung clock nội hoặc ngoại .

- Chọn cạnh cho xung clock ngoài

Bên dưới là sơ đồ khối của bộ định thời Timer 0 và bộ chia dùng chung với WDT. Chế độ định thời (Timer) được chọn bằng cách xóa bit T0CS ( OPTION_REG<5> ) Trong chế độ định thời , bộ định thời Timer 0 sẽ tăng dần sau mỗi chu kỳ lệnh ( không có bộ chia ) . Nếu thanh ghi TMR0 được ghi thì sự tăng sẽ bị ngăn lại sau hai chu kỳ lệnh .

Chế độ đếm(Counter) được chọn bằng cách set bit T0SC ( OPTION_REG<5> ). Trong chế độ đếm , Timer0 sẽ tăng dần ở mỗi cạnh lên hoặc cạnh xuống của chân RA4/T0CKI . Sự tăng cạnh được xác định bởi bit Timer0 Source Edge Select , T0SE (OPTION_REG<4> ) . Bộ chia chỉ được dùng chung qua lại giữa bộ định thời Timer0 và bộ định thời Watchdog . Bộ chia không cho phép đọc hoặc ghi .

Ngắt TMR0 được phát ra khi thanh ghi TMR0 tràn từ FFh đến 00h đối với 8 bit. Sự tràn này sẽ set bit TMR0IF(INTCON<2>). Ngắt này có thể được giấu đi bằng cách xóa đi bit TMR0IE (INTCON<5>) . Bit TMR0IF cần phải được xóa trong chương trình bởi thủ tục phục vụ ngắt của bộ định thời Timer0 trước khi ngắt này được cho phép lại.

Sơ đồ khối của Timer 0 như sau:

Hình 2.18 sơ đồ khối bộ định thời Timer0

Muốn Tmer 0 hoạt động ở chế độ Timer ta clear bit T0SC (OPTION_REG<5>), khi đó giá trị thanh ghi TMR0 sẽ tăng theo từng chu kỳ xung đồng hồ (tần số vào

Timer 0 bằng 1/4 tần số oscillator). Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắt Timer 0 sẽ xuất hiện.

Thanh ghi TMR0 cho phép ghi va xoa được giúp ta ấn định thời điểm ngắt Timer 0 xuất hiện một cách linh động . Muốn Timer 0 hoạt đọng o chế độ counter ta set bit T0CS (OPTION_REG<5>). Khi đó xung tác động lên bộ đếm được lấy từ chân RA4/T0CKI. Bit T0SE (OPTIN_REG<4>) cho phép lựa chọn cạnh tác động vào bộ đếm. Cạnh tác động sẽ là cạnh lên nếu T0SE = 0 và cạnh tác động sẽ là cạnh xuống nếu T0SE = 1.

Khi thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ được set. Đây chính là cờ ngắt của Timer 0. Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếm bắt đầu thực hiện lại quá trình đếm .NGắt Timer 0 không thể đánh thức vi điều khiển từ chế độ sleep

Bộ chia tần số (prescaler) được chia sẻ giữa Timer 0 và WDT (Watchdog Timer). Điều đó có nghĩa là nếu bộ chia tần số được sử dụng cho timer 0 thì WDT sẽ không có hỗ trợ của bộ chia tần số và ngược lại. Bộ chia tần số được điềi khiển bởi thanh ghi OPTION_REG. Bit PSA (OPTION_REG<3>) xác định đối tượng tác động của bộ chia tần số. Các bit PS2:PS0 (OPTION_REG<2:0>) xác định tỉ số của bộ chia tần số. Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của bộ chia tần số.

Các thanh ghi điều khiển liên quan đến Timer 0 bao gồm : TMR0 (địa chỉ 01h,101h) : chứa giá trị đếm của Timer 0. INTCON (địa chỉ 0Bh,8Bh,10Bh,18Bh)):cho phép ngắt hoạt . OPTION_REG (địa chỉ 81h,181h) : điều khiển bộ chia tần số.

Hình 2.19 Các thanh ghi liên quan đến bộ định thời Timer0

2.7.2 Bộ định thời TIMER1

Bộ định thời Timer1 là một bộ định thời/bộ đếm 16 bit gồm hai thanh ghi TMR1H ( byte cao ) và TMR1L ( byte thấp ) mà có thể đọc hoặc ghi . Cặp thanh ghi

này tăng số đếm từ 0000h đến FFFFh và một tràn sẽ xuất hiện khi có sự chuyển số đếm từ FFFFh xuống 0000h . Ngắt, nếu được phép có thể phát ra khi có số đếm tràn và được đặt ở bit cờ ngắt TMR1IF. Ngắt có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit cho phép ngắt TMR1IE.

Bộ định thời Timer1 có thể được cấu hình để hoạt động một trong hai chế độ sau: - Định thời một khoảng thời gian ( Timer )

- Đếm sự kiện ( Counter )

Việc lựa chọn một trong hai chế độ được xác định bằng cách đặt hoặc xóa bit chọn clock TMR1CS. Trong chế độ định một khoảng thời gian, bộ định thời tăng số đếm lên sau mỗi chu kỳ lệnh. Trong chế độ đếm sự kiện, bộ định thời tăng sau mỗi cạnh lên của clock ngoài đặt vào. Bộ định thời 1 có thể được phép hoặc cấm bằng cách đặt hoặc xóa bit điều khiển TMR1ON.

Hình 2.20 T1CON: Thanh ghi điều khiển Timer1

Hình 2.21 Sơ đồ khối Timer1

Ngoài ra Timer 1 còn có chức năng reset input bên trong được điều khiển bởi một trong hai khối CCP (Capture/Compare/PWM).Khi set bit T1OSCEN thì Timer 1 sẽ lấy xung clock từ hai chân RC/T1OSI/CCP2 và RC0/T1OSO/T1CKI làm xung đếm. Timer 1 sẽ bắt đầu đếm sau cạnh xuống đầu tiên của xung ngõ vào. Khi đó PORTC sẽ bỏ qua sự tác động của hai bit TRISC<1:0> và PORTC<2:1> được gán giá trị 0 . Khi

clear bit T1OSCEN Timer 1 sẽ lấy xung đếm từ oscillator hoặc từ chân RC0/T1OSO/T1CKI.

Timer 1 có hai chế độ đếm là đồng bộ (Synchronous) và bất đồng bộ (Asynchronous). Chế độ đếm được quyết định bởi bit điều khiển T1SYNC (T1CON<2>).

Khi T1SYNC = 1 xung đếm lấy từ bên ngoài sẽ không được đồng bọ hóa với xung clock bên trong, Timer 1 sẽ tiếp tục quá trình đếm vi điều khiển đang ở chế độ sleep và ngắt do Timer tạo ra khi bi tràn có khả năng đánh thức vi điều khiển. Ở chế độ đếm bất đòng bộ, Timer 1 không thể được sử dụng để làm nguồn xung clock cho khói CCP (Capture/Compare/Pulse width modulation).

Khi T1SYNC = 0 xung đếm vào Timer 1 sẽ được đồng bộ hóa với xung clock bên trong. Ở chế độ này Timer 1 sẽ không hoat động khi vi điều khiẻn đang ở chế độ sleep.

Các thanh ghi liên quan đến Timer 1 bao gồm:

INTCON (địa chỉ 0Bh, 8Bh,10Bh, 18Bh) : cho phép ngắt hoạt động. PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer 1 (TMR1IF).

PIE1 (địa chỉ 8Ch): cho phép ngắt Timer 1 (TMR1IE).

TMR1L (địa chỉ 0Eh): chứa giá trị 8 bít thấp của bộ đếm Timer 1. TMR1H (địa chỉ 0Fh): chứa giá trị 8 bít cao của bộ đếm Timer 1. T1CON (địa chỉ 10h): xác lập các thông số cho Timer 1.

Hình 2.22 Các thanh ghi liên quan đến bộ định thời Timer1

2.7.3 Bộ định thời TIMER2

Bộ định thời Timer2 là bộ định thời 8 bit với một bộ chia và một bộ Postscaler. Nó thường được dùng chung với bộ CCP trong chế độ PWM ( sẽ được đề cập ở phần

sau ). Thanh ghi TMR2 có thể đọc hoặc ghi và được xóa khi có bất kỳ tín hiệu reset nào của thiết bị.

Bộ định thời Timer2 có một thanh ghi chu kỳ 8 bit. Bộ định thời tăng số đếm lên từ 00h đến giá trị được ghi trong thanh ghi TR2 và sau đó reset lại giá trị 00h trong chu kỳ kế tiếp. PR2 là thanh ghi có thể đọc hoặc ghi.Giá trị trùng hợp trong thanh ghi TMR2 được đi qua bộ postscaler 4 bit để phát ra một ngắt TMR2(được đặt ở bit cờ ngắt TMR2IF). Bộ định thời 2 có thể được tắt ( không hoạt động ) bằng cách xóa bit điều khiển TMR2ON để giảm thiểu công suất tiêu tán nguồn.

Hình 2.23 T2CON: Thanh ghi điều khiển Timer2

Hình 2.24 Sơ đồ khối của bộ định thời Timer2

Hình 2.25 Các thanh ghi liên quan đến bộ định thời Timer2

2.8 NGẮT (INTERRUPT)

PIC16F877A có nhiều nguồn tạo ra hoạt động ngắt và được điều khiển bởi rất nhiều thanh ghi: RCON; INTCON; INTCON2; INTCON3; PIR1, PIR2; PIE1, PIE2;

IPR1, IPR2. Bên cạnh đó mỗi ngắt còn có một bit điều khiển và cờ ngắt riêng. Các cờ ngắt vẫn được set bình thường khi thỏa mãn điều kiện ngắt xảy ra bất chấp trạng thái của bit GIE, tuy nhiên hoạt động ngắt vẫn phụ thuộc vào bit GIE và các bit điều khiển khác. Bit điều khiển ngắt RB0/INT0 và TMR0 nằm trong thanh ghi INTCON, thanh ghi này còn chứa bit cho phép các ngắt ngoại vi PEIE. Bit điều khiển các ngắt nằm trong thanh ghi PIE1 và PIE2. Các cờ ngắt ngoại vi được chứa trong hai thanh ghi chức năng đặc biệt : thanh ghi PIR1 và PIR2.Các bit cho phép ngắt tương ứng được chứa trong hai thanh ghi PIE 1 và PIE 2.

Trong một thời điểm chỉ có một chương trình ngắt được thực thi, chương trình ngắt được kết thúc bằng lệnh RETFIE. Khi chương trình ngắt được thực thi, bit GIE tự động được xóa, địa chỉ lệnh tiếp theo của chương trình chính được cất vào trong bộ nhớ Stack và bộ đếm chương trình sẽ chỉ đến địa chỉ 0008h. Lệnh RETFIE được dùng để thoát khỏi chương trình ngắt và quay trở về chương trình chính, đồng thời bit GIE cũng sẽ được set để cho phép các ngắt hoạt động trở lại. Các cờ hiệu được dùng để kiểm tra ngắt nào đang xảy ra và phải được xóa bằng chương trình trước khi cho phép ngắt tiếp tục hoạt động trở lại để ta có thể phát hiện được thời điểm tiếp theo mà ngắt xảy ra.

Khi một ngắt được đáp ứng, bit GIE được xóa và cấm tất cả các ngắt khác.Cờ ngắt phải được xóa bởi phần mềm trước khi cho phép lại ngắt.Thông thường, trước khi thực hiện các chương trình phục vụ ngắt, nội dung các thanh ghi w và status nên được lưu lại để bảo đảm an toàn và được phục hồi trước khi trở lại chương trình chính.

Đối với các ngắt ngoại vi như ngắt từ chân INT hay ngắt từ sự thay đổi trạng thái các Pin của PortB (PORTB interrupt-on-change), việc xác định ngắt nào xảy ra cần 3 hoặc 4 chu kì lệnh tùy thuộc vào thời điểm xảy ra ngắt.

Trong quá trình thực thi ngắt, chỉ có giá trị của bộ đếm chương trình được cất vào trong Stack, trong khi một số thanh ghi quan trọng sẽ không được cất và có thể bị thay đổi giá trị trong quá trình thực thi chương trình ngắt. Điều này nên được xử lí bằng chương trình để tránh hiện tượng trên xảy ra.

CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG CẢM BIẾN VÀ PHÁT CẢNH BÁO MỰC NƯỚC, NHIỆT ĐỘ QUA

MẠNG TIN NHẮN SMS

3.1 GIỚI THIỆU MODULE SIM900, TẬP LỆNH AT COMMAND. 3.1.1 Giới thiệu module SIM900 3.1.1 Giới thiệu module SIM900

Các modem được sử dụng từ những ngày đầu của sự ra đời máy tính. Từ Modem là một từ được hình thành từ hai từ modulator và demodulator. Và định nghĩa đặc trưng này cũng giúp ta hình dung được phần nào là thiết bị này sẽ làm cái gì. Dữ liệu số thì đến từ một DTE, thiết bị dữ liệu đầu cuối được điều chế theo cái cách mà nó có thể được truyền dữ liệu qua các đường dây truyền dẫn. Ở một mặt khác của đường dây, một modem khác thứ hai điều chế dữ liệu đến và xúc tiến, duy trì nó.

Các modem ngày xưa chỉ tương thích cho việc gữi nhận dữ liệu. Đễ thiết lập một kết nối thì một thiết bị thứ hai như một dialer thì được cần đến. Đôi khi kết nối cũng được thiết lập bằng tay bằng cách quay số điện thoại tương ứng và một khi modem được bật thì kết nối coi như được thực thi. Các máy tính loại nhỏ ở các năm 70 thâm nhập vào thị trường là các gia đình, cùng với chi phí thì sự thiếu hụt về kiến thức kỹ thuật trở thành một vấn đề nan giải.

Một modem GSM là một modem wireless, nó làm việc cùng với một mạng wireless GSM. Một modem wireless thì cũng hoạt động giông như một modem quay số. Điểm khác nhau chính ở đây là modem quay số thì truyền và nhận dữ liệu thông qua một đường dây điện thoại cố định trong khi đó một modem wireless thì việc gữi nhận dữ liệu thông qua sóng.

Giống như một điện thoại di động GSM , một modem GSM yêu cầu 1 thẻ sim với một mạng wireless để hoạt động.

Module Sim900 là một trong những loại modem GSM. Nhưng Module Sim900 đựơc nâng cao hơn có tốc độ truyền dữ liệu nhanh hơn. Nó sử dụng hệ thống GSM/GPRS hoạt động ở băng tầng EGSM 900Mhz, DCS 1800 Mhz và PCS 1900Mhz, tính năng GPRS của Sim900 có nhiều lớp

8 lớp điện dung

10 lớp điện dung

Và hỗ trợ GPRS theo dang đồ thị mã hóa CS-1, CS-2, CS-3 và CS-4.

3.1.2 Đặc điểm của module SIM900

1.Nguồn cung cấp khoảng 3,4 – 4,5V 2.Nguồn lưu trữ 3.Băng tần EGSM 900Mhz, DCS 1800 Mhz và PCS 1900Mhz, Sim900 có thể tự động tìm kiếm các băng tần Phù hợp với GSM Pha 2/2+ 4.Loại GSM là loại MS nhỏ 5.Kết nối GPRS

GPRS có nhiều rãnh loại 8 ( lựa chọn )

GPRS có nhiều rãnh loại 10 ( tự động ) 6.Giới hạn nhiêt độ: Bình thường -300C tới +700 C Hạn chế : - 350C tới -300 C và +700C tới +800 C

Nhiệt độ bảo quản: -450C tới 850

C 7.Dữ liệu GPRS:

GPRS dữ liệu tải xuống: Max 85.6 kbps

GPRS dữ liệu úp lên: Max 41.8 kbps

Sơ đồ mã hóa: CS-1, CS-2, CS-3 và CS-4

Sim900 hổ trợ giao thức PAP ,kiểu sử dụng kết nối PPP

Sim900 tích hợp giao thức TCP/IP

Chấp nhận thông tin được điều chỉnh rộng rãi 8.CSD:

 Tốc độ truyền dẫn CSD: 2; 4; 8; 9; 6; 14 KPPS

 Hỗ trợ USSD 9.SMS:

 MT, MO, CB, Text and PDU mode

 Nhóm 3 loại 1 11. Sim card:

 Hỗ trợ sim card: 1,8v ; 3v 12. Anten ngoài:

 Kết nối thông qua anten ngoài 500km hoặc đế anten 13. Âm thanh:

 Dạng mã hóa âm thanh.

 Mức chế độ (ETS 06.20)

 Toàn bộ chế độ (ETS 06.10)

 Toàn bộ chế độ tăng cường (ETS 06.50/ 06.06/ 06.80)

 Loại bỏ tiếng dội.

14. Giao tiếp nối tiếp và sự ghép nối:

 Cổng nối tiếp: 7 Cổng nối tiếp( ghép nối)

 Cổng kết nối có thể sử dụng với CSD Fax, GPRS và gửi lệnh ATCommand tới mudule điều khiển

 Cổng nối tiếp có thể Sd chức năng giao tiếp

 Hỗ trợ tốc độ truyền 1200 BPS tới 115200 BPS

 Cổng hiệu chỉnh lỗi: 2 cổng nối tiếp TXD và RXD

 Cổng hiệu chỉnh lỗi chỉ sử dụng sữa lỗi 15. Quản lý danh sách:

 Hỗ trợ mẫu danh sách: SM, FD, LD, RC,ON, MC 16. Sim Application toolkit:

 Hỗ trợ SAT loại GSM 11,14 bản 99 17. Đồng hồ thời gian thực:

 Người cài đặt 18. Times function:

 Lập trình thông qua AT Command 19. Đặc tính vật lý (đặc điểm):

 Kích thước 50±0.15 x 33±0.15 x7.7±0.3mm

Hình 3.1 Module Sim900

3.1.3 Khảo sát sơ đồ chân và chức năng từng chân

Hình 3.2 Sơ đồ chân của Module Sim900

Bảng 3.1 Bảng mô tả các chức năng từng chân của SIM900

Tên chân Thứ tự chân Mô tả chức năng và các đặc tính VBAT 1 3 5 7 9

chân của chip được dành riêng để kết nối tới nguồn cung cấp, nguồn cung cấp của Sim900 là nguồn đơn VDAT là 3,4 V – 4,5 V

GND 2

4 6

8 10

VCHG 11

ADC 12 Chân vào của bộ chuyển đổi tín hiệu tương tự sang số

TEMP-BAT 13

VRTC 14

VCC-EXT 15

NETLIGHT 16 đầu ra dùng để chỉ báo mạng kết nối được hệ thống

PWRKEY 17 chân này dùng để điều khiển hệ thống bật/tắt

KBC 18 20 22 24 26 Kết nối bàn phím

STATUS 19 báo trình trạng công việc

GPIO 21

35

input/output port

BUZZER 23 đầu ra chuông

SIM VCC 25 nguồn cung cấp cho thẻ sim

SIM RST 27 chân reset cho mạch sim

KBR 28

30 32 34 36

chân kết nối với bàn phím

SIM DATA 29 đầu ra dữ liệu chân sim

SIM CLK 32 chân thời gian của sim

SIM

PRESENCE

33 chân dò tìm mạng

DCD 37

DISP CLK 40

DISP DATA 42

DISP D/C 44

DISP RST 46 chân ra giao tiếp với màng hình

DTR 39 chân đầu cuối dữ liệu

RXD 41 chân nhận dữ liệu

TXD 43 chân truyền dữ liệu

RTS 45

CTS 47

RI 49

DBG RXD 48 đầu ra dùng để điều chỉnh trong nhận dữ liệu

DBG TXD 50 đầu ra dùng để điều chỉnh trong truyền dữ liệu

AGND 51 52 Chân GND SPK1P SPK1N SPK2P SPK2N 53 55 57 59 chân output MIC1P MIC1N MIC2P MIC2N 54 56 58 60 chân input

Ghi chú:I = input ; O = output ; I/O = input/output

3.1.4 Khảo sát tập lệnh AT của module SIM900

Các modem được sử dụng từ những ngày đầu của sự ra đời của máy tính. Từ

Một phần của tài liệu Đồ án Tốt nghiệp: Xây dựng hệ thống giám sát mực nước, nhiệt độ và phát cảnh báo qua mạng tin nhắn SMSGSM (Trang 41)

Tải bản đầy đủ (PDF)

(91 trang)