Giám sát và điều khiển thiết bị qua đường PSTN
Trang 1M ỤC L ỤC
Lời nói đầu 2
Lời cảm ơn 3
Nhận xét giáo viên hướng dẫn 4
Nhận xét giáo viên phản biện 5
Giới thiệu đề tài 6
Chương 1-Giới thiệu tổng quan mạng điện thoại 9
1.1 Giới thiệu tổng quát về tổng đài 9
1.2 Giới thiệu tổng quát về máy điện thoại 12
Chương 2 - Giới thiệu linh kiện 18
2.1 Vi điều khiển AVR 18
2.2 IC MT8888 53
2.3 IC LM358 64
2.4 IC MAX232 67
Chương 3-Sơ đồ thiết kế và giải thuật 69
3.1 Sơ đồ thiết kế 69
3.1.1 Sơ đồ khối 69
3.1.2 Sơ đồ nguyên lý 69
3.2 Giải thuật 76
3.2.1 Module PSTN-RS232 76
3.2.2 Module trạm 80
Chương 4-Kết luận và hướng phát triển đề tài 83
4.1 Kết luận 83
4.2 Hướng phát triển đề tài 83
Tài liệu tham khảo 84
1
Trang 2LỜI NÓI ĐẦU
Trong lĩnh vực kỹ thuật ngày nay thì lĩnh vực điện tử đóng vai trò vô cùng quan trọng trong thời đại công nghiệp hoá hiện đại hoá đất nước Nói đến lĩnh vực điện tử thì chúng ta không thể không nhắc đến ngành kỹ thuật điện tử viễn thông
Đó là chiếc chìa khoá vàng mở ra một kỷ nguyên mới, nhờ nó ta có thể thu thập nhiều thông tin từ mọi nơi trên hành tinh để phục vụ cuộc sống
Tuy chỉ mới thâm nhập vào nước ta gần đây nhưng công nghệ điện tử đã phát triển rất nhanh và ngày càng giữ vai trò quan trọng trong nền công nghiệp hoá nước nhà Hệ thống viễn thông, dịch vụ khách hàng, thông tin di động, nhắn tin càng phát triển với tính hiện đại và tự động hóa ngày càng cao
Với sự phát triển nhanh chóng của ngành công nghệ điện tử, thì việc điều khiển các thiết bị điện tự động ngày càng nhiều, chúng ta cần sử dụng các chip điều khiển để lập trình chúng hoạt động theo ý muốn Hiện nay, do nhu cầu trao đổi thông tin của người dân là vô cùng lớn nên mạng điện thoại ngày càng được
mở rộng không chỉ dừng lại ở việc liên lạc thông tin mà còn thêm nhiều tính năng
và dịch vụ khác Một trong những tính năng đó là sử dụng mạng điện thoại để truyền tín hiệu điều khiển, nó đã giúp tiết kiệm được rất nhiều thời gian cho công việc Chính vì vậy mà tôi quyết định chọn đề tài “Giám sát và điều khiển thiết
bị qua đường PSTN”.
Song, do giới hạn về thời gian cũng như kiến thức nên nội dung còn nhiều thiếu sót Rất mong sự đóng góp ý kiến của quý thầy cô và các bạn sinh viên để tập đồ án được hoàn thiện hơn Xin chân thành cảm ơn !
2
Trang 3LỜI CẢM ƠN
Trong thời gian hoàn thành xong đề tài, tôi đã được sự giúp đỡ của quí bậc thầy cô và bạn bè nên đề tài đã được hoàn thành đúng thời gian Tôi xin chân thành cảm ơn đến: Thầy Trần Minh Hồng, đã hết lòng quan tâm, giúp đỡ tận
tình và tạo mọi điều kiện để tôi có thể hoàn thành đồ án này Xin chân thành gửi lời cảm ơn đến quí thầy cô trong Khoa Điện Tử đã cung cấp cho tôi những kiến thức nền, chuyên môn làm cơ sở để tôi có thể hoàn thành đồ án này Tôi cũng xin chân thành cảm ơn đến các bạn sinh viên và các bậc anh chị đã giúp đỡ về nhiều mặt: ý kiến, tài liệu…., để tôi có thể hoàn thành đồ án đúng thời gian
3
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
TP.HCM ngày tháng… năm 2010 Giáo viên hướng dẫn
4
Trang 6NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
TP.HCM ngày tháng… năm 2010 Giáo viên phản biện
6
Trang 7GIỚI THIỆU ĐỀ TÀI
1 LÝ DO CHỌN ĐỀ TÀI.
Trong thời đại phát triển của thế kỷ 21, hệ thống thông tin liên lạc và vũ trụ
là một trong những vấn đề quan trọng Đó là những ứng dụng của thông tin liên lạc vào lĩnh vực kinh tế, khoa học và đời sống Đặc biệt trong những thập niên gần đây, ngành Bưu chính viễn thông đã phát triển mạnh mẽ tạo ra bước ngoặc quan trọng trong lĩnh vực thông tin để đáp ứng những nhu cầu khác của con người như:
tự động trả lời điện thoại khi chủ vắng nhà, hộp thư thoại, …
Điều khiển thiết bị thông qua hệ thống thông tin liên lạc là sự kết hợp giữa các ngành Điện – Điện tử và Viễn thông, sự phối hợp ứng dụng vi điều khiển hiện đại và hệ thống thông tin liên lạc đã hình thành một hướng nghiên cứu và phát triển không nhỏ trong khoa học kỹ thuật Điều khiển thiết bị thông qua mạng điện thoại khắc phục được nhiều giới hạn trong hệ thống điều khiển từ xa và báo động thông thường Hệ thống này không phụ thuộc vào khoảng cách, môi trường ,đối tượng điều khiển và đối tượng báo động Điểm nổi bậc của hệ thống là tính lưu động của tác nhân điều khiển (người điều khiển), và đối tượng được điều khiển là cố định
Trên thế giới, ở các nước phát triển không ít những công trình nghiên cứu khoa học đã thành công khi dùng mạng điều khiển thông qua đường truyền của hệ thống thông tin: Tại Nga có những nhà máy điện, những kho lưu trữ tài liệu quý
đã ứng dụng hệ thống điều khiển từ xa và tự động báo động thông qua đường điện thoại để đóng ngắt những nơi cao áp, tự động quay số báo động khi có sự cố, tự
7
Trang 8động xã bình chữa cháy …và cũng tại Nga đã có hệ thống điều khiển và báo động thông qua mạng Internet để điều khiển nhà máy điện nguyên tử Ngoài ra, ứng dụng của hệ thống điều khiển từ xa bằng điện thoại, giúp ta điều khiển các thiết bị điện ở những môi trường nguy hiểm mà con người không thể làm việc được hoặc những dây chuyền sản xuất để thay thế con người
2 TÓM TẮT NỘI DUNG ĐỀ TÀI.
Đề tài bao gồm:
Module giao tiếp máy tính (PSTN-RS232): có chức năng chuyển đổi tín
hiệu từ chuẩn PSTN sang RS232 và ngược lại để giao tiếp với phần mềm giám sát trên máy tính
Module trạm: đọc các cảm biến ngõ vào và đo nhiệt độ, có các ngõ ra để
điều khiển các thiết bị
Phần mềm giám sát:
8
Trang 9Set port connect: chọn cổng Com để kết nối, tốc độ baudrate.
Device connect: nhập vào số phone của module trạm nhấp vào nút connect để kết nối Khi kết nối thành công chúng ta sẽ thấy chữ disconnect
Temperature: báo nhiệt độ mà module trạm đo được
Control: 3 nút control để điều khiển 3 ngõ ra
Status: theo dõi trạng thái 3 ngõ vào (màu xanh bình thường, đỏ cảnh báo )
Configuration: cấu hình cho module trạm, phone là số điện thoại mà module trạm sẽ kết nối để gửi trạng thái (module PSTN-RS232) , time thời
9
Trang 10gian module trạm sẽ gửi trạng thái.
Nếu ta không kết nối với module trạm thì sau khoảng thời gian time thì module trạm sẽ gửi trạng thái lên, hoặc khi có cảnh báo (ngõ vào tác động hoặc nhiệt độ thay đổi quá phạm vi 2oC)
CHƯƠNG 1:
GIỚI THIỆU TỔNG QUAN VỀ MẠNG ĐIỆN
10
Trang 11THOẠI1.1 GIỚI THIỆU TỔNG QUÁT VỀ TỔNG ĐÀI :
1.1.1 Định nghĩa về tổng đài :
Tổng đài là một hệ thống chuyển mạch có hệ thống kết nối các cuộc liên lạc giữa các thuê bao với nhau, với số lượng thuê bao lớn hay nhỏ tuỳ thuộc vào từng loại tổng đài, từng khu vực
1.1.2 Chức năng của tổng đài :
Tổng đài điện thoại có khả năng :
Nhận biết được khi thuê bao nào có nhu cầu xuất phát cuộc gọi
Thông báo cho thuê bao biết mình sẵn sàng tiếp nhận các yêu cầu của thuê bao
Xử lí thông tin từ thuê bao chủ gọi để điều khiển kết nối theo yêu cầu
Báo cho thuê bao bị gọi biết có người cần muốn liên lạc
Giám sát thời gian và tình trạng thuê bao để ghi cước và giải tỏa
Giao tiếp được với những tổng đài khác để phối hợp điều khiển
1.1.3 Phân loại tổng đài :
Tổng đài công nhân :
Việc kết nối thông thoại, chuyển mạch dựa vào con người
Tổng đài cơ điện :
Bộ phận thao tác chuyển mạch là hệ thống cơ khí, được điều khiển bằng hệ thống mạch từ Gồm hai hệ thống chuyển mạch cơ khí cơ bản : chuyển mạch từng nấc và chuyển mạch ngang dọc
Tổng đài điện tử :
Quá trình điều khiển kết nối hoàn toàn tự động, vì vậy người sử dụng cũng không thể cung cấp cho tổng đài những yêu cầu của mình bằng lời nói được Ngược lại, tổng đài trả lời cho người sử dụng cũng không thể bằng lời nói Do đó, cần qui định một số thiết bị cũng như các tín hiệu để người sử dụng và tổng đài có
11
Trang 12thể làm việc được với nhau.
1.1.4 Các loại âm hiệu :
Tín hiệu mời quay số (Dial tone) : Khi thuê bao nhấc tổ hợp để xuất phát cuộc
gọi sẽ nghe âm hiệu mời quay số do tổng đài cấp cho thuê bao gọi, là tín hiệu hình sin có tần số 425 ± 25 Hz liên tục
Tín hiệu báo bận (Busy tone) : Tín hiệu này báo cho người sử dụng biết thuê bao
bị gọi đang trong tình trạng bận hoặc trong trường hợp thuê bao nhấc máy quá lâu
mà không quay số thì tổng đài gởi âm hiệu báo bận này Tín hiệu báo bận là tín hiệu hình sin có tần số 425 ± 25 Hz, ngắt quãng 0.5 giây có và 0.5 giây không
12
Trang 13Tín hiệu Busy tone Tín hiệu chuông (Ring back tone) : Tín hiệu chuông do tổng đài cung cấp cho
thuê bao bị gọi, là tín hiệu hình sin có tần số 25 Hz và điện áp 90V hiệu dụng ngắt quãng tuỳ thuộc vào tổng đài, thường 2 giây có và 4 giây không
Tín hiệu hồi chuông (Ring tone) : Tín hiệu hồi chuông do tổng đài cấp cho thuê
bao gọi, là tín hiệu hình sin có tần số 425 ± 25 Hz là hai tín hiệu ngắt quãng 2s có 4s không tương ứng với nhịp chuông
13
Trang 14Tín hiệu chuông 1.1.5 Phương thức chuyển mạch của tổng đài điện tử :
Tổng đài điện tử có những phương thức chuyển mạch sau :
Tổng đài điện tử dùng phương thức chuyển mạch không gian (SDM : Space Devision Multiplexer)
Tổng đài điện tử dùng phương thức chuyển mạch thời gian (TDM Timing Devision Multiplexer) : có hai loại Phương thức ghép kênh tương tự theo thời gian (Analog TDM) gồm có :
+ Ghép kênh bằng phương thức truyền đạt cộng hưởng
+ Ghép kênh PAM (PAM : Pulse Amplitude Modulation)
Trong kỹ thuật ghép kênh PCM người ta lại chia 2 loại : điều chế Delta và điều chế PCM
Ngoài ra, đối với tổng đài có dung lượng lớn và rất lớn (dung lượng lên đến
cỡ vài chục ngàn số) người ta phối hợp cả hai phương thức chuyển mạch SDM và TDM thành T – S – T, T – S, S – T – S …
Ưu điểm của phương thức kết hợp này là tận dụng tối đa số link trống và giảm bớt số link trông không cần thiết, làm cho kết cấu của toàn tổng đài trở nên đơn giản hơn bởi vì, phương thức ghép kênh TDM luôn luôn tạo ra khả năng toàn thông, mà thông thường đối với tổng đài có dung lượng lớn, việc dư link là không
14
Trang 15cần thiết Người ta đã tính ra thông thường chỉ có tối đa 10% các thuê bao có yêu cầu cùng 1 lúc, nên số link trống chỉ cần đạt 10% tổng số thuê bao là đủ.
Tổng đài điện tử dùng phương thức ghép kênh theo tần số (FDM : Frequence Devision Multiplexer)
1.2 GIỚI THIỆU TỔNG QUÁT VỀ MÁY ĐIỆN THOẠI :
1.2.1 Các thông số cơ bản của máy điện thoại :
Tổng đài được nối với các thuê bao qua 2 đườc truyền TIP và RING Thông qua 2 đường dây này thông tin từ tổng đài qua các thuê bao được cấp bằng nguồn dòng từ 25 mA đến 40 mA (trung bình chọn 35 mA) đến cho máy điện thoại
Tổng trở DC khi gác máy lớn hơn từ 20 KΩ
Tổng trở AC khi gác máy từ 4KΩ đến 10KΩ
Tổng trở DC khi nhấc máy nhỏ hơn 1KΩ (từ 0,2KΩ ÷ 0,6KΩ)
Các thông số và giới hạn máy điện thoại:
1.2.2 Các hoạt động trên mạng của máy điện thoại:
Tổng đài nhận biết trạng thái nhấc máy của thuê bao hay gác máy bằng cách sử dụng nguồn một chiều 48VDC
Khi gác máy tổng trở DC bằng 20KΩ rất lớn xem như hở mạch
15
Trang 16Khi nhấc máy tổng trở DC giảm xuống nhỏ hơn 1KΩ và hai tổng đài nhận biết trạng thái này thông qua dòng DC xuất hiện trên đường dây Sau đó, tổng đài cấp tín hiệu mời gọi lên đường dây đến thuê bao.
Quay số :
Người gọi thông báo số mình muốn gọi cho tổng đài biết bằng cách gởi số máy điện thoại của mình muốn gọi đến cho tổng đài Có hai cách gởi số đến tổng đài :
Phương thức quay số tone DTMF và PULSE: Khi có một phím được ấn thì trên đường dây sẽ xuất hiện 2 tấn số khác nhau thuộc nhóm fthấp và fcao Phương pháp tần ghép này chống nhiễu tốt hơn, ngoài ra dùng dạng tone DTMF sẽ tăng được tốc độ quay nhanh gấp 10 lần so với việc thực hiện quay số PULSE Mặt khác phương pháp sẽ sử dụng được một số dịch vụ cộng thêm tổng đài
Phương pháp quay số pulse: tín hiệu quay số là chuỗi xung vuông, tần số chuỗi dự án = 10Hz,số điện thoại bằng số xung ra, riêng số 0 sẽ là 10 xung, biên
độ ở mức cao là 48v, ở mức thấp là 10v
Quay số bằng Tone (Tone – Dialing) : Máy điện thoại phát ra cùng lúc hai
16
Trang 17tín hiệu với tần số dao động khác nhau tương ứng với số muốn quay (DTMF : Dual Tone Multi Frequence) theo bảng sau :
BẢNG PHÂN LOẠI TẦN SỐ TÍN HIỆU TONE
Kết nối thuê bao :
Tổng đài nhận được các số liệu sẽ xem xét :
Nếu các đường dây nối thông thoại đều bị bận thì tổng đài sẽ cấp tín hiệu báo bận
Nếu đường dây nối thông thoại không bận thì tổng đài sẽ cấp cho người bị gọi tín hiệu chuông và người gọi tín hiệu hồi chuông Khi người được gọi nhấc máy, tổng đài nhận biết trạng thái này, thì tổng đài ngưng cấp tín hiệu chuông để không làm hư mạch thoại và thực hiện việc thông thoại tín hiệu trên đường dây đến máy điện thoại tương ứng với tín hiệu thoại cộng với giá trị khoảng 300 mV đỉnh – đỉnh Tín hiệu ra khỏi máy điện thoại chịu sự suy hao trên đường dây với
17
Trang 18mất mát công suất trong khoảng 10 dB ÷ 25 dB Giả sử suy hao là 20 dB, suy ra tín hiệu ra khỏi máy điện thoại có giá trị khoảng 3V đỉnh – đỉnh.
Khi truyền đi trong mạng điện thoại là tín hiệu thường bị méo dạng do những lý do : nhiễu, suy hao tín hiệu trên đường dây do bức xạ sóng trên đường dây với các tần số khác nhau Để đảm bảo tín hiệu điện thoại nghe rõ và trung thực, ngày nay trên mạng điện thoại người ta sử dụng tín hiệu thoại có tần số từ
số Người gọi bắt đầu tiến hành gửi các xung quay số thông qua việc quay số hoặc nhấn phím chọn số Tổng đài nhận biết được các số được quay nhờ vào các chuỗi xung quay số phát ra từ thuê bao gọi Thực chất các xung quay số là các trạng thái
18
Trang 19nhấc máy hoặc gác máy của thuê bao Nếu các đường kết nối thông thoại bị bận hoặc thuê bao được gọi bị bận thì tổng đài sẽ phát tín hiệu báo bận cho thuê bao Aâm hiệu này có tần số f = 425 ± 25 Hz ngắt nhịp 0,5s có 0,5 s không Tổng đài nhận biết các số thuê bao gọi đến và nhận xét :
Nếu số đầu nằm trong tập thuê bao thì tổng đài sẽ phục vụ như cuộc gọi nội đài Nếu số đầu là số qui ước gọi ra thì tổng đài phục vụ như một cuộc gọi liên đài qua trung kế và gửi toàn bộ phần định vị số quay sang tổng đài đối phương để giải mã
Nếu số đầu là mã gọi các chức năng đặc biệt, tổng đài sẽ thực hiện các chức năng đó thuê yêu cầu của thuê bao Thông thường, đối với loại tổng đài nội bộ có dung lượng nhỏ từ vài chục đến vài trăm số, có thêm nhiều chức năng đặc biệt làm cho chương trình phục vụ thuê bao thêm phong phú, tiện lợi, đa dạng, hiệu quả cho người sử dụng làm tăng khả năng khai thác và hiệu suất sử dụng tổng đài
Nếu thuê bao được gọi rảnh, tổng đài sẽ cấp tín hiệu chuông cho thuê bao với điện áp 90Vrms (AC), f = 25 Hz, chu kì 2s có 4s không Đồng thời, cấp âm hiệu hồi chuông (Ring Back Tone) cho thuê bao gọi, âm hiệu này là tín hiệu sin f
= 425 ÷ 25 Hz cùng chu kì nhịp với tín hiệu chuông gởi cho thuê bao được gọi
Khi thuê bao được gọi nhấc máy, tổng đài nhận biết trạng thái máy này tiến hành cắt dòng chuông cho thuê bao bị gọi kịp thời tránh hư hỏng đáng tiếc cho thuê bao Đồng thời, tiến hành cắt âm hiệu Ring Back Tone cho thuê bao gọi và tiến hành kết nối thông thoại cho 2 thuê bao
Tổng đài giải tỏa một số thiết bị không cần thiết để tiếp tục phục vụ cho các cuộc đàm thoại khác
Khi hai thuê bao đang đàm thoại mà 1 thuê bao gác máy, tổng đài nhận biết trạng thái gác máy này, cắt thông thoại cho cả hai bên, cấp tín hiệu bận (Busy Tone) cho thuê bao còn lại, giải tỏa link để phục vụ cho các đàm thoạ khác Khi thuê bao còn lại gác máy, tổng đài xác nhận trạng thái gác máy, cắt âm hiệu báo
19
Trang 20bận, kết thúc chương trình phục vụ thuê bao.
Tất cả hoạt động nói trên của tổng đài điện tử đều được thực hiện một cách hoàn toàn tự động Nhờ vào các mạch điều khiển bằng điện tử, điện thoại viên có thể theo dõi trực tiếp toàn bộ hoạt động của tổng đài ở mọi thời điểm nhờ vào các
bộ hiển thị, cảnh báo
Điện thoại viên có thể trực tiếp điều khiển các hoạt động của tổng đài qua các thao tác trên bàn phím, hệ thống công tắc….các hoạt động đó có thể bao gồm : nghe xen vào các cuộc đàm thoại, cắt cưỡng bức các cuộc đàm thoại có ý đồ xấu,
tổ chức điện thoại hội nghị… Tổng đài điện tử cũng có thể được liên kết với máy điện toán để điều khiển hoạt động hệ thống Điều này làm tăng khả năng khai thác, làm tăng dung lượng, cũng như khả năng hoạt động của tổng đài lên rất nhiều
CHƯƠNG 2: GIỚI THIỆU LINH KIỆN
20
Trang 212.1 VI ĐIỀU KHIỂN AVR.
AVR là một họ vi điều khiển do hãng Atmel sản xuất (Atmel cũng là nhà sản xuất dòng vi điều khiển 89C51 mà có thể bạn đã từng nghe đến) AVR là chip vi điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa-RISC (Reduced Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí
Tại sao AVR: so với các chip vi điều khiển 8 bits khác, AVR có nhiều đặc tính hơn hẳn, hơn cả trong tính ứng dụng (dễ sử dụng) và đặc biệt là về chức năng:
• Gần như chúng ta không cần mắc thêm bất kỳ linh kiện phụ nào khi sử dụng AVR, thậm chí không cần nguồn tạo xung clock cho chip (thường là các khối thạch anh)
• Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ cần vài điện trở là có thể làm được Một số AVR còn hỗ trợ lập trình on – chip bằng bootloader không cần mạch nạp…
• Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiết kế tương thích C
• Nguồn tài nguyên về source code, tài liệu, application note…rất lớn trên internet
• Hầu hết các chip AVR có những tính năng (features) sau:
• Có thể sử dụng xung clock lên đến 16MHz, hoặc sử dụng xung clock nội lên đến 8 MHz (sai số 3%)
• Bộ nhớ chương trình Flash có thể lập trình lại rất nhiều lần và dung lượng lớn, có SRAM (Ram tĩnh) lớn, và đặc biệt có bộ nhớ lưu trữ lập trình được
21
Trang 22EEPROM
• Nhiều ngõ vào ra (I/O PORT) 2 hướng (bi-directional)
• 8 bits, 16 bits timer/counter tích hợp PWM
• Các bộ chuyển đối Analog – Digital phân giải 10 bits, nhiều kênh
• Chức năng Analog comparator
• Giao diện nối tiếp USART (tương thích chuẩn nối tiếp RS-232)
• Giao diện nối tiếp Two –Wire –Serial (tương thích chuẩn I2C) Master và Slaver
• Giao diện nối tiếp Serial Peripheral Interface (SPI)
Một số chip AVR thông dụng:
Cơ bản họ AVR có thể chia làm 4 nhóm sau:
• tinyAVR — the ATtiny series
o 1–8 kB program memory
o 6–32-pin package
o Limited peripheral set
• megaAVR — the ATmega series
o 4–256 kB program memory
o 28–100-pin package
o Extended instruction set (Multiply instructions and instructions for handling
22
Trang 23larger program memories).
o Extensive peripheral
• XMEGA — the ATxmega series
o 16–384 kB program memory
o 44–64–100-pin package (A4, A3, A1)
o Extended performance features, such as DMA, "Event System", and
cryptography support
o Extensive peripheral set with DACs
• Atmel At94k FPSLIC (Field Programmable System Level Integrated Circuit), an AVR core on-die with an FPGA The FPSLIC uses SRAM for the AVR program code, unlike all other AVRs Partly due to the relative speed difference between SRAM and flash, the AVR core in the FPSLIC can run at up to 50MHz
AVR32 AP7000 Sram 32KB 1.8 - 3.3V
ATUC3A0xxxx (giá trị xxxx thể hiện dung lượng flash của VĐK)
ATUC3A0512 Flash 512kB sram64B 3.0-3.6V
Trang 242.1.1 Giới thiệu cấu trúc phần cứng IC ATmega8:
8KB Programmable Flash có thể ghi và xóa 10.000 lần
512 Bytes EEPROM có thể ghi xóa 100.000 lần
1K Byte Internal SRAM
2 Timer/Counters 8 bit
1 Timer/Counters 16 bit
3 kênh điều xung PWM
6 kênh đọc ADC độ phân giải 8/10 bit
2 ngõ vào ngắt, 1 ngõ USART, 1 Watchdog Timer
Giao tiếp ISP, I2C
23 chân I/O
Điện áp hoạt động 2.7-5.5V (ATmega8L) và 4.5-5.5V (ATmega8)
Thạch anh dao động 0-8MHz (ATmega8L) và 0-16MHz (ATmega8)
Sơ đồ chân:
24
Trang 25Sơ đồ khối:
25
Trang 282.1.2 Chức năng các chân của ATmega8:
Chân VCC: nguồn nuôi chip
Chân GND: mass
Chân GND (22): mass bộ chuyển đổi ADC
Chân VREF: điện áp tham chiếu cho bộ chuyển đổi ADC
Chân AVCC: nguồn cấp cho bộ chuyển đổi ADC
a Port B:
Là port xuất nhập 8 bit
PB3 MOSI/OC2 Sử dụng giao tiếp ISP/ngõ ra PWM
Là port xuất nhập 6 bit
28
Trang 29PC2 ADC2 Ngõ vào đọc ADC
PC4 ADC4/SDA Ngõ vào đọc ADC/ giao tiếp I2C
PC5 ADC5/SCL Ngõ vào đọc ADC/ giao tiếp I2C
c Port D:
Là port xuất nhập 8 bit
có thêm phần Boot Flash setion Application section bao gồm 2 phần: phần chứa các instruction (mã lệnh cho hoạt động của chip) và phần chứa các vector ngắt (interrupt vectors) Các vector ngắt nằm ở phần đầu của application section (từ địa chỉ 0x0000) và dài đến bao nhiêu tùy thuộc vào loại chip Phần chứa instruction nằm liền sau đó, chương trình viết cho chip phải được load vào phần này
Vector ngắt của chip ATMEGA8 chỉ kéo dài đến địa chỉ 0x012, vì vậy chương trình chính có thể được bắt đầu từ bất cứ vị trí nào sau đó Bảng vector ngắt:
29
Trang 30Vì chức năng chính của bộ nhớ chương trình là chứa instruction, chúng ta không có nhiều cơ hội tác động lên bộ nhớ này khi lập trình cho chip, vì thế đối
30
Trang 31với người lập trình AVR, bộ nhớ này “không quá quan trọng” Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu của chip.
Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan trọng nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip, tuy nhiên về cơ bản phần bộ nhớ này được chia thành 5 phần:
Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu, như mô tả trong hình 1, phần này bao gồm 32 thanh ghi có tên gọi là register file (RF), hay General Purpose Rgegister – GPR, hoặc đơn giản là các Thanh ghi Tất cả các thanh ghi này đều là các thanh ghi 8 bits
Tất cả các chip trong họ AVR đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệt đối từ 0x0000 đến 0x001F Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến
255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tự nào đó…Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31 Chúng được chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 và phần 2 là các thanh ghi R16 đến R31 Các thanh ghi này có các đặc điểm sau:
• Được truy cập trực tiếp trong các instruction
• Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳ xung clock
• Register File được kết nối trực tiếp với bộ xử lí trung tâm – CPU của chip
• Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đích chứa kết quả trả lại của phép toán
Để minh họa, hãy xét ví dụ thực hiện phép cộng 2 thanh ghi bằng instruction ADD như sau:
31
Trang 32ADD R1,R2
Bạn thấy trong dòng lệnh trên, 2 thanh ghi R1 và R2 được sử dụng trực tiếp với tên của chúng, dòng lệnh trên khi được dịch sang opcode để download vào chip sẽ có dạng: 0000110000010010 trong đó 00001=1 tức thanh ghi R1 và 00010
= 2 chỉ thanh ghi R2 Sau phép cộng, kết quả sẽ được lưu vào thanh ghi R1
Tất cả các instruction sử dụng RF làm toán hạng đều có thể truy nhập tất cả các RF một cách trực tiếp trong 1 chu kỳ xung clock, ngoại trừ SBCI, SUBI, CPI, ANDI và LDI, các instruction này chỉ có thể truy nhập các thanh ghi từ R16 đến R31
Thanh ghi R0 là thanh ghi duy nhất được sử dụng trong instruction LPM (Load Program Memory) Các thanh ghi R26, R27, R28, R29, R30 và R31 ngoài chức năng thông thường còn được sử dụng như các con trỏ (Pointer register) trong một số instruction truy xuất gián tiếp Chúng ta sẽ khảo sát vấn đề con trỏ sau này Hình 3 mô tả các chức năng phụ của các thanh ghi
32
Trang 33Tóm lại 32 RF của AVR được xem là 1 phần của CPU, vì thế chúng được CPU sử dụng trực tiếp và nhanh chóng, để gọi các thanh ghi này, chúng ta không cần gọi địa chỉ mà chỉ cần gọi trực tiếp tên của chúng RF thường được sử dụng như các toán hạng (operand) của các phép toán trong lúc lập trình.
Phần 2: là phần nằm ngay sau register file, phần này bao gồm 64 thanh ghi được gọi là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùng nhớ I/O (I/O Memory) Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết bị ngoại vi Tất cả các thanh ghi điều khiển, trạng thái…của thiết bị ngoại vi đều nằm ở đây Xem lại ví dụ trong bài 1, trong đó tôi có đề cập về việc điều khiển các PORT của AVR, mỗi PORT liên quan đến 3 thanh ghi DDRx, PORTx và PINx, tất cả 3 thanh ghi này đều nằm trong vùng nhớ I/O Xa hơn, nếu muốn truy xuất các thiết
bị ngoại vi khác như Timer, chuyển đổi Analog/Digital, giao tiếp USART…đều thực hiện thông qua việc điều khiển các thanh ghi trong vùng nhớ này
Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/O Nếu
sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thì địa chỉ của chúng được tính từ 0x0020 đến 0x005F Nhưng nếu truy xuất như các thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F.
Xét ví dụ instruction OUT dùng xuất giá trị ra các thanh ghi I/O, lệnh này sử dụng địa chỉ kiểu thanh ghi, cấu trúc của lệnh như sau: OUT A, Rr, trong đó A là địa chỉ của thanh ghi trong vùng nhớ I/O, Rr là thanh ghi RF, lệnh OUT xuất giá trị từ thanh ghi Rr ra thanh ghi I/O có địa chỉ là A Giả sử chúng ta muốn xuất giá trị chứa trong R6 ra thanh ghi điều khiển hướng của PORTD, tức thanh ghi DDRD, địa chỉ tính theo vùng I/O của thanh ghi DDRD là 0x0011, như thế câu lệnh của chúng ta sẽ có dạng: OUT 0x0011, R6 Tuy nhiên trong 1 trường hợp khác, nếu muốn truy xuất DDRD theo dạng SRAM, ví dụ lệnh STS hay LDS, thì phải dùng địa chỉ tuyệt đối của thanh ghi này, tức giá trị 0x0031, khi đó lệnh OUT
33
Trang 34ở trên được viết lại là STS 0x0031, R6.
Để thống nhất cách sử dụng từ ngữ, từ bây giờ chúng ta dùng khái niệm “địa chỉ I/O” cho các thanh ghi trong vùng nhớ I/O để nói đến địa chỉ không tính phần Register File, khái niệm “địa chỉ bộ nhớ” của thanh ghi là chỉ địa chỉ tuyệt đối của chúng trong SRAM Ví dụ thanh ghi DDRD có “địa chỉ I/O” là 0x0011 và
“địa chỉ bộ nhớ” của nó là 0x0031, “địa chỉ bộ nhớ” = “địa chỉ I/O” + 0x0020.
Vì các thanh ghi trong vùng I/O không được hiểu theo tên gọi như các Register file, khi lập trình cho các thanh ghi này, người lập trình cần nhớ địa chỉ của từng thanh ghi, đây là việc tương đối khó khăn Tuy nhiên, trong hầu hết các phần mềm lập trình cho AVR, địa chỉ của tất cả các thanh ghi trong vùng I/O đều được định nghĩa trước trong 1 file Definition, bạn chỉ cần đính kèm file này vào chương trình của bạn là có thể truy xuất các thanh ghi với tên gọi của chúng Giả sử trong ví dụ
ở bài 1, để lập trình cho chip Atmega8 bằng AVRStudio, dòng thứ 2 chúng ta sử dụng INCLUDE "M8DEF.INC" để load file định nghĩa cho chip ATMega8, file M8DEF.INC Vì vậy, trong sau này khi muốn sử dụng thanh ghi DDRD bạn chỉ cần gọi tên của chúng, như: OUT DDRD,R6.
Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa các biến (tạm thời hoặc toàn cục) trong lúc thực thi chương trình, vùng này tương tự các thanh RAM trong máy tính nhưng có dung lượng khá nhỏ (khoảng vài KB, tùy thuộc vào loại chip)
Phần 4: RAM ngoại (external SRAM), các chip AVR cho phép người sử dụng gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chất chỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip
Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một phần quan trọng của các chip AVR mới, vì là ROM nên bộ nhớ này không bị xóa ngay
cả khi không cung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu Như trong hình 1, phần bộ nhớ EEPROM được tách riêng và có địa
34
Trang 35chỉ tính từ 0x0000.
Sơ đồ tổ chức bộ nhớ
2.1.4 Các Thanh Ghi
1 Thanh ghi SREG (STATUS REGISTRY).
Nằm trong vùng nhớ I/O, thanh ghi SREG có địa chỉ I/O là 0x003F và địa chỉ
bộ nhớ là 0x005F (thường đây là vị trí cuối cùng của vùng nhớ I/O) là một trong
số các thanh ghi quan trọng nhất của AVR, vì thế mà tôi dành phần này để giới thiệu về thanh ghi này Thanh ghi SREG chứa 8 bit cờ (flag) chỉ trạng thái của bộ
xử lí, tất cả các bit này đều bị xóa sau khi reset, các bit này cũng có thể được đọc
và ghi bởi chương trình Chức năng của từng bit được mô tả như sau:
35
Trang 36• Bit 0 – C (Carry Flag: Cờ nhớ): là bit nhớ trong các phép đại số hoặc logic,
ví dụ thanh ghi R1 chứa giá trị 200, R2 chứa 70, chúng ta thực hiện phép cộng có nhớ: ADC R1, R2, sau phép cộng, kết quả sẽ được lưu lại trong thanh ghi R1, trong khi kết quả thực là 270 mà thanh ghi R1 lại chỉ có khả năng chứa tối đa giá trị 255 (vì có 8 bit) nên trong trường hợp này, giá trị lưu lại trong R1 thực chất chỉ
là 14, đồng thời cờ C được set lên 1 (vì 270=100001110, trong đó 8 bit sau
00001110 =14 sẽ được lưu lại trong R1)
• Bit 1 – Z (Zero Flag: Cờ 0): cờ này được set nếu kết quả phép toán đại số hay phép Logic bằng 0
• Bit 2 – N (Negative Flag: Cờ âm): cờ này được set nếu kết quả phép toán đại
số hay phép Logic là số âm
• Bit 3 – V (Two’s complement Overflow Flag: Cờ tràn của bù 2): hoạt động của cờ này có vẻ sẽ khó hiểu cho bạn vì nó liên quan đến kiến thức số nhị phân (phần bù), chúng ta sẽ đề cập đến khi nào thấy cần thiết
• Bit 4 – S (Sign Bit: Bit dấu): Bit S là kết quả phép XOR giữa 1 cờ N và V, S=N xor V
• Bit 5 – H (Half Carry Flag: Cờ nhờ nữa): cờ H là cờ nhớ trong 1 vài phép toán đại số và phép Logic, cờ này hiệu quả đối với các phép toán với số BCD
• Bit 6 – T (Bit Copy Storage): được sử dụng trong 2 Instruction BLD (Bit LoaD) và BST (Bit STorage) Tôi sẽ giải thích chức năng Bit T trong phần giới
36
Trang 37thiệu về BLD và BST
• Bit 7 – I (Global Interrupt Enable) : Cho phép ngắt toàn bộ): Bit này phải được set lên 1 nếu trong chương trình có sử dụng ngắt Sau khi set bit này, bạn muốn kích hoạt loại ngắt nào cần set các bit ngắt riêng của ngắt đó Hai instruction dùng riêng để Set và Clear bit I là SEI và CLI
Chú ý: tất cả các bit trong thanh ghi SREG đều có thể được xóa thông qua các instruction không toán hạng CLx và set bởi SEx, trong đó x là tên của Bit.Ví dụ CLT là xóa Bit T và SEI là set bit I
Tôi chỉ giải thích ngắn gọn chức năng của các bit trong thanh ghi SREG, cụ thể chức năng và cách sử dụng của từng bit chúng ta sẽ tìm hiểu trong các trường hợp
cụ thể sau này, người đọc có thể tự tìm hiểu thêm trong các tài liệu về INSTRUCTION cho AVR
Tôi cung cấp thêm 1 bảng tóm tắt sự ảnh hưởng của các phép toán đại số, logic lên các Bit trong thanh ghi SREG
2 Thanh ghi MCUCR:
MCUCR là một thanh ghi 8 bit nhưng đối với hoạt động ngắt ngoài, chúng ta chỉ quan tâm đến 4 bit thấp của thanh ghi này (4 bit cao dùng cho Power manager và Sleep Mode), 4 bit thấp là các bit Interrupt Sense Control (ISC), 2 bit ISC11, ISC10 dùng cho INT1 và ISC01, ISC00 dùng cho INT0 Hãy nhìn vào bảng tóm tắt bên dưới để biết chức năng của các bit trên, đây là bảng “chân trị” của 2 bit ISC11, ISC10 Bảng chân trị cho các bit ISC01, ISC00 hoàn toàn tương tự
37
Trang 38Thật dễ dàng để hiểu chức năng của các bit Sense Control, ví dụ bạn muốn set cho INT1 là ngắt cạnh xuống (Falling Edge) trong khi INT0 là ngắt cạnh lên (Rising Edge), hãy đặt dòng lệnh MCUCR =0x0B (0x0B = 00001011 nhị phân) trong chương trình của bạn.
3 Thanh ghi GICR:
Thanh ghi điều khiển ngắt thông thường – GICR (General Interrupt Control Register) (trên các chip AVR cũ, như các chip AT90Sxxxx, thanh ghi này có tên
là thanh ghi mặt nạ ngắt thông thường GIMSK, bạn tham khảo thêm datasheet của các chip này nếu cần sử dụng đến) GICR cũng là 1 thanh ghi 8 bit nhưng chỉ có 2 bit cao (bit 6 và bit 7) là được sử dụng cho điều khiển ngắt, cấu trúc thanh ghi như bên dưới (trích datasheet)
Bit 7 – INT1 gọi là bit cho phép ngắt 1(Interrupt Enable), set bit này bằng 1 nghĩa bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 điều khiển ngắt
38
Trang 394 Thanh ghi GIFR:
Thanh ghi cờ ngắt thông thường – GIFR (General Interrupt Flag Register) có 2 bit INTF1 và INTF0 là các bit trạng thái (hay bit cờ - Flag) của 2 ngắt INT1 và INT0, nếu có 1 sự kiện ngắt phù hợp xảy ra trên chân INT1, bit INTF1 được tự động set bằng 1 (tương tự cho trường hợp của INTF0), chúng ta có thể sử dụng các bit này
để nhận ra các ngắt, tuy nhiên điều này là không cần thiết nếu chúng ta cho phép ngắt tự động, vì vậy thanh ghi này thường không được quan tâm khi lập trình ngắt ngoài Cấu trúc thanh ghi GIFR được trình bày trong hình ngay bên dưới
5 Thanh ghi TCCR0:
• TCCR0 (Timer/Counter Control Register): là thanh ghi điều khiển hoạt động của T/C0 Tuy là thanh ghi 8 bit nhưng thực chất chỉ có 3 bit có tác dụng đó là CS00, CS01 và CS02
Các bit CS00, CS01 và CS02 gọi là các chip chọn nguồn xung nhịp cho T/C0 (Clock Select) Chức năng các bit này được mô tả trong bảng 1
Bảng 1: chức năng các bit CS0X
39
Trang 406 Thanh ghi TCNT0:
• TCNT0 (Timer/Counter Register): là 1 thanh ghi 8 bit chứa giá trị vận hành của T/C0 Thanh ghi này cho phép bạn đọc và ghi giá trị một cách trực tiếp
7 Thanh ghi TIMSK:
• TIMSK (Timer/Counter Interrupt Mask Register): là thanh ghi mặt nạ cho ngắt của tất cả các T/C trong Atmega8, trong đó chỉ có bit TOIE0 tức bit số 0 (bit đầu tiên) trong thanh ghi này là liên quan đến T/C0, bit này có tên là bit cho phép ngắt khi có tràn ở T/C0 Tràn (Overflow) là hiện tượng xảy ra khi bộ giá trị trong thanh ghi TCNT0 đã đạt đến MAX (255) và lại đếm thêm 1 lần nữa
Bit 1, TOIE0=1, bit quy định ngắt tràn cho thanh T/C0
Bit 2, TOIE1, bit quy định ngắt tràn cho thanh T/C1
40