Cấu trúc khối ATmega32 Một số chức năng cơ bản:
– 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 EEPROM.
– 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)
Cấu trúc chân ATmega32:
ATmega32 là vi điều khiển thuộc họ AVR của hang Atmel, có 40 chân trong đó 32 chân I/O, có 4 kênh điều xung PWM, sử dụng thạch anh ngoài 8MHz.
Nhân AVR kết hợp tập lệnh đầy đủ với 32 thanh ghi đa năng. Tất cả các thanh ghi liên kết trực tiếp với khối xử lý số học và logic (ALU) cho phép 2 thanh ghi độc lập được truy cập trong một lệnh đơn trong một chu kì đồng hồ. Kết quả là tốc độ nhanh gấp 10 lần các bộ vi điều khiển CÍC thường.
Hình 4.2. Sơ đồ chân ATmega32
• ga32 gồm có 4 port: port A, port B, port C và port D.
• Port A gồm 8 chân từ PA0 đến PA7: là cổng vào tương tự cho chuyển đổi từ tương tự sanATmeg số. Nó cũng là cổng vào/ ra hai hướng 8 bit trong trường hợp không sử dụng làm cổng chuyển đổi tương tự, có điện trở nối lên nguồn dương bên trong. Port A cung cấp đường địa chỉ vào/ ra theo kiểu hợp kênh khi dùng bộ nhớ bên ngoài. dữ liệu
• Port B gồm 8 chân từ PB0 đến PB7: là cổng vào/ ra hai hướng 8 bit, có điện trở nối lên nguồn dương bên trong. Port B cung cấp các chức năng đặc biệt của ATmega32.
• Port C gồm các chân từ PC0 đến PC7: là cổng vào/ ra hai hướng 8 bit, có điện trở nối lên nguồn dương bên trong. Port C cung cấp các địa chỉ lối ra khi sử dụng bộ nhớ bên ngoài và đồng thời cung cấp ứng với các tính năng đặc biệt của ATmega32.
• Port D gồm các chân từ PD0 đến PD7: là cổng vào/ ra hai hướng 8 bit, có điện trở nối lên nguồn dương bên trong. Port D cung cấp các chức năng ứng với các tính năng đặc biệt của ATmega32.
• Chân nguồn Vcc (chân số 10 và chân số 30): điện áp nguồn nuôi của ATmega32 từ 4.5V đến 5.5V.
Chân reset (chân số 9): lối vào đặt lại.
Chân GND (chân số 11 và chân số 31): chân nối mass.
Chân XTAL1, XTAL2 là 2 chân nối thạch anh ngoài (chân số 12 và chân số 13). ATmega32 sử dụng thạch anh ngoài là 8MHz.
Chân ICP (chân số 20): là chân vào cho chức năng bắt tín hiệu cho bộ định thời/ đếm 1.
Chân OC1B (chân số 18): là chân ra cho chức năng so sánh lối ra bộ định thời/ đếm 1.
Chân INT1 (chân số 17): chân ngõ vào ngắt. Sơ đồ cấu trúc bên trong của ATmega32:
Hình 4.3. Cấu trúc bên trong ATmega32
ATmega32 có các đặc tính sau:
•32 Kbytes bộ nhớ ISP Flash với Read-While-Write capacities.
•2 Kbytes RAM.
•1024 Kbytes EEPROM.
•32 đường I/O đa năng.
•32 thanh ghi đa năng.
•JTAG interface.
•On-chip Debug and Program.
•3 bộ định thời phưc hợp với chế độ so sánh.
•Ngắt ngoài và trong.
•Bộ truyền nhận nối tiếp USART lập trình được.
•Bộ giao tiếp nối tiếp định hướng 2 dây.
• 8 kênh, 10 bit ADC với ngưỡng vào lựa chọn khác nhau độ lợi lập trình được.
•Bộ WatchDog Timer khả trình với dao động nội.
•Port SPI nối tiếp.
•Hệ thống ngắt để tiếp tục hàm.
ATmega32 có các chế độ tiết kiệm năng lượng như sau:
Chế độ nghỉ (Idle) CPU trong khi cho phép bộ truyền tin nối tiếp đồng bộ USART, giao tiếp 2 dây, chuyên đổi A/D. SRAM, bộ đếm bộ định thời, cổng SPI và hệ thống các ngắt vẫn hoạt động.
Chế độ Power-down lưu giữ nội dung của các thanh ghi nhưng làm đông lạnh bộ tạo dao động, thoát khỏi các chức năng của chip cho đến khi có ngắt ngoài hoặc là reset phần cứng.
Chế độ Power-down đồng hồ đồng bô tiếp tục chạy cho phép chương trình sử dụng giữ được đồng hồ thời gian nhưng các thiết bị còn lại là ngủ.
• Chế độ ADC Noise Redution dừng CPU và tất cả các thiết bị còn lại ngoại trừ đồng hồ đồng bộ và ADC, tối thiểu hóa switching noise trong khi ADC đang hoạt động.
• Chế độ stanby, bộ tạo dao động (thủy tinh thể/ bộ cộng hưởng) chạy trong khi các thiết bị còn lại ngủ. Các điều này cho phép bộ vi điều khiển khởi động rất nhanh trong chế độ tiêu thụ công suất thấp.
Thiết bị được sản xuất sử dụng công nghệ bộ nhớ cố định mật độ cao của Atmel. Bộ nhớ On-chip ISP Flash cho phép lập trình lại vào hệ thống qua giao diện SPI bởi bộ lập trình bộ nhớ cố định truyền thống hoặc bởi chương trình On- chip Boot chạy trên nhân AVR. Chương trình boot có thể sử dụng bất cứ giao diện nào để download chương trình ứng dụng trong bộ nhớ Flash ứng dụng. Phần mềm trong vùng boot Flash sẽ tiếp tục chạy trong khi vùng Application Flash được cập nhật, cung cấp thao tác Read-While-Write thực sự. Bằng việc kết hợp 1 bộ 8 bit RISC CPU với In-System Self –Programmable Flash trong chỉ nguyên vẹn 1 chip ATmega32 là một bộ vi điều khiển mạnh có thể cung cấp giải pháp có tính linh động cao, giá thành rẻ cho nhiều ứng dụng điều khiển nhúng.
Cấu trúc bộ nhớ
Cũng như mọi vi điều khiển khác AVR có cấu trúc Harvard tức là có bộ nhớ và đường bus riêng cho bộ nhớ chương trình và bộ nhớ dữ liệu.
•Bộ Nhớ Chương Trình : Bộ nhớ chương trình của AVR là bộ nhớ Flash có dung lượng 32 Kbytes. Bộ nhớ chương trình có độ rộng bus là 16 bit. Ở vi điều khiển ATmega32 bộ nhớ chương trình còn có thể được chia làm 2 phần: phần boot loader (Boot loader program section) và phần ứng dụng (Application program section ).
- Phần boot loader : chứa chương trình boot loader.
- Phần ứng dụng (Application program section ): là vùng nhớ chứa chương trình ứng dụng của người dùng. Kích thước của phần boot loader và phần ứng dụng có thể tùy chọn.
Hình dưới thể hiện cấu trúc bộ nhớ chương trình có sử dụng và không sử dụng boot loader, khi sử dụng phần boot loader ta thấy 4 word đầu tiên thay vì chỉ thị cho CPU chuyển tới chương trình ứng dụng của người dùng (là chương trình có nhãn start ) thì chỉ thị CPU
nhảy tới phần chương trình boot loader để thực hiện trước, rồi mới quay trở lại thực hiện chương trình ứng dụng.
Hình 4.4. Cấu trúc bộ nhớ
•Bộ nhớ dữ Liệu: Bộ nhớ dữ liệu của AVR chia làm 2 phần chính là bộ nhớ SRAM và bộ nhớ EEPROM. Tuy cùng là bộ nhớ dữ liệu nhưng hai bộ nhớ này lại tách biệt nhau và được đánh địa chỉ riêng
•Bộ nhớ EEPROM : bộ nhớ EEPROM có kích thước là 1024 bytes. EEPROM được xem như là một bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có nghĩa là ta cần sử dụng các lệnh in, out … khi muốn truy xuất tới EEPROM.
Để ghi vào EEPROM ta cần thực hiện các bước sau: - Chờ cho bit EEWE về 0.
- Cấm tất cả các ngắt.
- Ghi địa chỉ vào thanh ghi EEAR.
- Ghi dữ liệu mà ta cần ghi vào EEPROM vào thanh ghi EEDR. - Set bit EEMWE thành 1.
- Set bit EEWE thành 1 . - Cho phép các ngắt trở lại.
Đọc dữ liệu từ EEPROM: Việc đọc dữ liệu từ EEPROM đơn giản hơn ghi dữ liệu vào EEPROM, để đọc dữ liệu từ EEPROM ta thực hiện các bước sau: - Chờ cho bit EEWE về 0.
- Ghi địa chỉ vào thanh ghi EEAR. - Set bit EERE lên 1
4.2.2:Khối module Sim548c: 4.2.2.1. Cấu tạo module SIM548c
Hình 4.5. Hình dạng SIM548c
Module SIM548 có thể hoạt động với các tần số sau GSM 850MHz, 900 MHz, DCS 1800MHz và PCS 1900MHz và cũng hỗ trợ kỹ thuật GPS định vị vị trí bằng vệ tinh.
Với kích thước nhỏ 55mm x 34mm x 3.0 mm,module này có thể sử dụng cho các ứng dụng như Smart phone,PDA phone,thiết bị định vị GPS cầm tay hay điện thoại.
Chúng ta có thể giao tiếp với module thông qua chuẩn đế 60 chân dành riêng cho module SIM548. Thông qua đế chuẩn 60 chân này,chúng ta có thể sử dụng module với các mục đích:
• Bàn phím, bảng nút bấm hay SPI LCD.
• Một Port giao tiếp nối tiếp dùng cho GSM và hai port nối tiếp dành cho GPS giú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ệc giao tiếp bang tập lệnh AT.
• Các ngõ vào ra dành cho chức năng nghe gọi và sử lý âm thanh.
• Các ngõ vào của bộ chuyển đổi AD.
Hình 4.6.Các thiết bị đi kèm module sim 548c
A: Nguồn cung cấp. B: Anten GSM. C: Anten GPS.
D: Cáp kết nối anten với module. E: Tai nghe.
F: Cáp giao tiếp nối tiếp.
4.2.2.2. Phần cứng module SIM548 a, Phần cứng ứng dụng GSM của SIM548:
Để sử dụng và giao tiếp với module SIM548 phải thông qua một chuẩn đế cắm 60 chân. Bao gồm các ứng dụng dành cho GSM :
-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
b, Bảng mô tả các chân của module:
PIN TÊN PIN TÊN
1 GND 2 VBAT 3 GND 4 VBAT 5 GND 6 VBAT 7 GND 8 VBAT 9 ADC0 10 VCHG 11 VRTC 12 VCHG 13 PWRKEY 14 TBMP_BAT 15 SIM-PRESENCE 16 NETLIGHT 17 SIM-VĐ 18 BUZZER 19 SIM-RST 20 STATUS 21 SIM-DATA 22 GPI01 23 SIM-CLK 24 DISP_CS 25 DCD 26 DISP_CLK 27 DTR 28 DISP_DATA 29 RXD 30 DISP_D/C 31 TXD 32 DISP_RST 33 RTS 34 GPI00 35 CTS 36 DBG_RXD 37 RI 38 DBG_TXD 39 AGND 40 AGND 41 SPK1P 42 MIC1P 43 SPK1N 44 MIC1N 45 SPK2P 46 MIC2P 57 SPK2N 48 MIC2N 49 GPS_M-RST 50 GPS_BOOTSEL 51 GPS_TXA 52 GPS_TIMBMARK 53 GPS_RXA 54 GPS_WAKEUP 55 GPS_TXB 56 GPS_VCC_RF 57 GPS_RXB 58 GPS_VANT 59 GPS_VRTC 60 GPS_VCC
Tên I/O Mô tả Đặc tính điện
VBAT Có năm chân
VBAT dùng để cung cấp nguồn hoạt động cho module Vmax= 4.5V Vmin=3.4V Vnorm=4.0V BACKUP I/O Ngõ vào nguồn
cho bộ thời gian thực của
module 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ữ.
Vmin=1.2V Vnorm=1.8V Inorm= 20uA
CHG_IN I Nguồn cung cấp cho bộ sạc pin của module. Đồng thời giúp cho module nhận ra bộ sạc. Vmax=5.25V Vmin=1.1 *VBAT Vnorm=5.1V GND Chân nối đất dành cho các ứng dụng số. PWRKEY I Ngõ vào dùng để mở 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ân này ở mức thấp trong một khoảng thời gian ngắn. VILmax=0.3*VBAT VIHmin=0.7*VBAT VImax=VBAT MIC1P MIC1N I Ngõ vào của microphone 1. MIC2P MIC2N I Ngõ vào của microphone 2. SPK1P SPK1N O Ngõ ra của loa 1. SPK2P O Ngõ ra của loa
SPK2N 2.
BUZZER O Ngõ ra dành cho còi báo.
AGND Chân nối đất
dành cho các ứng dụng tương tự.
DISP_D0 I/O Ngõ vào ra để kiểm tra đường truyền dữ liệu. VILmin=0V VILmax=0.9 VIHmin=2.0 VIHmax= 3.2 VOLmin=GND VOLmax=0.2V VOHmin=2.7 VOHmax=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). DISP_EN O Ngõ ra cho phép hiện thị. KCOL0~KCOL4 KROW0~KROW4 I/O Các ngõ vào ra dành cho phím bấm,bảng nút nhấn. VILmin=0V VILmax=0.9 VIHmin=2.0 VIHmax= 3.2 VOLmin=GND VOLmax=0.2V VOHmin=2.7 VOHmax=2.9 Cá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=0V VILmax=0.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 VIHmax= 3.2 VOLmin=GND
module. VIHmin=2.0 VOLmax=0.2V VOHmin=2.7 VOHmax=2.9 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
DTR I Ngõ vào cho
biết giao tiếp đã sẵn sàng. VILmin=0V VILmax=0.9 VIHmin=2.0 VIHmax= 3.2 VOLmin=GND VOLmax=0.2V VOHmin=2.7 VOHmax=2.9 RXD I Ngõ vào nhận dữ liệu, TXD O Ngõ ra truyền dữ liệu. RTS I Ngõ vào yêu
cầu gửi dữ liệu. CTS O Sẵn sàng để gửi dữ liệu. RI O Ngõ ra cho biết trạng thái hoạt động. DCD O Ngõ ra cho biết dữ liệu đã được gửi đi.
Port nối tiếp 2
DEBUG_TX O Port dùng để sửa lỗi và giao tiếp bằng tập lệnh AT. DEBUG_RX I
Các chân dành cho Sim card
VSIM O Nguồn cung cấp cho 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
SIM. VILmax=0.3* VSIM SIM_CLOCK O Xung nhịp cho
SIM.
SIM_PRESENCE I Chân để nhận biết có Sim card.
SIM_RESET O Chân để reset SIM. Ứng dụng ADC AUXADC1 I Ngõ và dành cho mục đích chuyển đổi từ dạng tương tự sang dạng số. Điện áp ngõ vào từ 0- 24V.
TEMP_BAT I Ngõ vào cho biết nhiệt độ của pin.
Chi tiết các chân của module SIM548c
Vì mạch ứng dụng chỉ quan tâm đến GSM nên ở đây em xin trình bày về ứng dụng GSM của module SIM548c.
4.2.2.3 Bật ứng GSM của module SIM548: Có ba cách để cho phép ứng dụng GSM hoạt động. -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 4.7.Mức làm việc của chân PWMRKEY 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 ứng dụng đã sẵn sàng hoạt động “RDY”. Và chân STATUS sẽ được kéo lên mức cao và giữ ở mức này khi ứng dụng GSM hoạt động.
-Sử dụng chân CHG_IN để bật ứng dụng GSM.
Đây là chân dành cho bộ sạc pin của module SIM548.Nếu bộ sạc được nối với chân CHG_IN của module khi đang trong chế độ POWER DOWM,thì nó sẽ chuyển sang chế độ GHOST (chỉ sạc pin). Trong chế độ này module không kết nối mạng và chỉ cho phép một vài lệnh AT làm việc. Khi sử dụng chân CHG_IN để bật ứng dụng GSM,module sẽ gửi thông báo:
RDY
GHOST MODE +CFUN: 0
Trong chế độ GHOST, việc kéo chân PWRKEY xuống mức thấp trong một khoảng thời gian ngắn ứng dụng GSM sẽ được mở và chuyển sang chế độ sạc điện,tất cả chức năng của ứng dụng GSM được mở và cho phép thực hiện được tất cả các lệnh AT. Lúc này module sẽ gửi trả thông báo:
From GHOST MODE to NORMAL MODE
Ở chế độ báo động, cho phép ứng dụng GSM hoạt động bằng việc sử dụng bộ thời gian thực RTC. Bộ thời gian thực sẽ đánh thức GSM của module SIM548 khi ứng dụng này ngừng hoạt động. Trong chế độ này module sẽ không kết nối mạng GSM và các tập lệnh dành cho SIM card sẽ không thực hiện được.
Có thể sử dụng lệnh AT+CALARM để cài đặt thời gian báo động. Bộ thời gian thực sẽ giữ module trong thời gian báo động nếu ứng dụng GSM được tắt bằng lệnh ““AT+CPOWD=1” hay chân PWRKEY. Module sẽ chuyển sang chế độ báo động. Lúc này module sẽ gừi thông báo:
RDY ALARM MODE
Chế độ báo động sẽ hoạt động trong một thời gian tối đa 90s,lúc này module sẽ tự đông ngưng hoạt động. Tuy nhiên,trong suốt thời gian báo động,nếu lệnh AT+CFUN=1 được gửi đến,việc module tự động tắt sẽ không xảy ra. Cũng trong chế độ này,việc kéo chân PWRKEY xuống mức thấp trong một khoảng thời gian ngắn sẽ làm ứng dụng GSM ngưng hoạt động