Mục lục Phần 1. Vi điều khiển ATmega16 4 Chương 1. Giới thiệu chung 5 Chương 2. Cấu trúc nhân AVR 7 2.1.Cấu trúc tổng quát 7 2.2. ALU 7 2.3. Thanh ghi trạng thái 8 Chương 3. Cấu trúc bộ nhớ 11 3.1. Bộ nhớ chương trình (Bộ nhớ Flash) 11 3.2. Bộ nhớ dữ liệu SRAM 11 3.3. Bộ nhớ dữ liệu EEPROM 12 Chương 4. Các cổng vào ra (IO) 13 4.1. Thanh ghi DDRx 13 4.2.Thanh ghi PORTx 13 4.3. Thanh ghi PINx 13 Chương 5. Bộ định thời 15 5.1. Các thanh ghi 15 5.2. Đơn vị đếm 16 5.3. Đơn vị so sánh ngõ ra 16 5.4. Mô tả các thanh ghi 17 5.4.1. Thanh ghi điều khiển bộ định thờibộ đếm TCCR0 17 5.4.2. Thanh ghi bộ định thờibộ đếm 17 5.4.3. Thanh ghi so sánh ngõ raOCR0 18 5.4.4. Thanh ghi mặt nạ ngắt 18 5.4.5. Thanh ghi cờ ngắt bộ định thời 18 Chương 6. USART 19 6.1. Tạo xung clock 20 6.2. Định dạng khung truyền 20 6.3. Khởi tạo USART 21 6.4. Truyền thông dữ liệubộ truyền USART 21 6.4.1. Truyền khung 5 đến 8 bit dữ liệu 21 6.4.2. Truyền khung 9 bit dữ liệu 22 6.5. Nhận dữ liệubộ nhận USART 22 6.5.1. Nhận khung với 5 đến 8 bit dữ liệu 22 6.5.2. Nhận khung với 9 bit dữ liệu 23 Chương 7. Bộ biến đổi AD 24 7.1. ADMUX: Multiplexer select register 25 7.2. ADCSRADC control and status register 26 7.2.1. Bit 7ADEN:ADC enable 26 7.2.2. Bit 6ADSC: ADC start conversion 26 7.2.3. Bit 5ADATE :ADC Auto Trigger enable 26 7.2.4. Bit 4ADIF: ADC interrupt Flag 26 7.2.5. Bit 3ADIE:ACD interrupt Enable 26 7.2.6. Bit 2.1.0ADPS2…ADPS0: Bit lựa chọn xung nhịp(Tốc độ) 26 7.3. Thanh ghi dữ liệu ACDH và ADCL 27 7.4. Nguyên tắc hoạt động và lập trình điều khiển 27 Phần 2. Phần mềm mô phỏng mạch điện Proteus 7.0 29 Chương 1. Giới thiệu chung 30 1. Giới thiệu về Proteus 30 2. Các ưu điểm 30 3. Khả năng ứng dụng 31 4. Khả năng phân tích 31 Chương 2. Mô phỏng và phân tích mạch nguyên lý 32 Phần 3. Thiết kế máy phát trải phổ 37 1. Biến đổi AD 37 2. Nhân tín hiệu 39 3. Tạo chuỗi PN và tạo dữ liệu vào 39
Báo cáo thực tập tốt nghiệp Lời giới thiệu Vi điều khiển là 1 lĩnh vực khá lý thú đối với chuyên ngành Điện tử-Viễn thông. Cùng với sự phát triển của ngành điện tử thì nhiều họ vi điều khiển lần lượt được các hãng sản xuất chip cho ra đời như: Z80 của Zilog, AT89 của Atmel, PIC của Microchip, AVR của Atmel Họ vi điều khiểnAVR của Atmel Corp là 1 bước phát triển trên nền của Vi điều khiển AT89 đã khá quen thuộc. Nếu như AT89 là vi điều khiển có CPU CISC thì AVR là RISC, với kiến trúc Harvard do vậy tốc độ sẽ nhanh hơn (tốc độ tối đa là 16 triệu lệnh/giây). Ngoài ra AVR cũng tích hợp sẵn ngay trong chip mạch ADC, PWM, cũng như hỗ trợ các chuẩn giao tiếp thông dụng như UART/USART, I2C, 2-wires, nên việc thiết kế và thực hiện phần cứng cho những ứng dụng rất thuận tiện, nhanh chóng, nhỏ gọn. Về ngôn ngữ lập trình cho AVR thì có rất nhiều: assembly, C, Basic, Pascal Trong đó những phần mềm miễn phí do chính Atmel cung cấp, hay những hãng khác là rất nhiều: avrasm, winasm (hợp ngữ), CodeVisionAVR, Win-GCC(ngôn ngữ C), BASCOM (ngôn ngữ Basic).v.v. Hơn thế việc mô phỏng, debug cũng được hỗ trợ các từ A-Z, nhiều phần mềm simulator, emulator như: AVRStudio (miễn phí của Atmel), Proteus, Trong phạm vi cuốn báo cáo này chỉ nghiên cứu về vi điều khiển ATmega16, phần mềm mô phỏng mạch điện Proteus 7.0 và sử dụng Proteus để thiết kế máy phát trải phổ. Trong quá trình viết báo cáo, người viết có tham khảo datasheet của ATmega16 từ trang web của hãng Atmel (www.atmel.com) và một số tài liệu khác. Lê Hải Đăng CTM5-k50-HUT Báo cáo thực tập tốt nghiệp Mục lục Lê Hải Đăng CTM5-k50-HUT Báo cáo thực tập tốt nghiệp Chương 1. Giới thiệu chung Phần 1. Vi điều khiển ATmega16 Chương 1. Giới thiệu chung ATmega16 là vi điều khiển 8 bit dựa trên kiến trúc RISC. Với khả năng thực hiện mỗi lệnh trong vòng một chu kỳ xung clock, ATmega16 có thể đạt được tốc độ 1MIPS trên mỗi MHz (1 triệu lệnh/s/MHz). Dưới đây là sơ đồ khối của ATmega16 Lê Hải Đăng CTM5-k50-HUT Báo cáo thực tập tốt nghiệp Chương 1. Giới thiệu chung Hình 1.1. Sơ đồ cấu trúc ATmega16 ATmega16 có các đặc điểm sau: 16KB bộ nhớ Flash với khả năng đọc trong khi ghi, 512 byte bộ nhớ EEPROM, 1KB bộ nhớ SRAM, 32 thanh ghi chức năng chung, 32 đường vào ra chung, 3 bộ định thời/bộ đếm, ngắt nội và ngắt ngoại, USART, giao tiếp nối tiếp 2 dây, 8 kênh ADC 10 bit, ATmega 16 hỗ trợ đầy đủ các chương trình và công cụ phát triển hệ thống như: trình dịch C, macro assemblers, chương trình mô phỏng/sửa lỗi, kit thử nghiêm, Lê Hải Đăng CTM5-k50-HUT Chương 2. Cấu trúc nhân AVR Chương 2. Cấu trúc nhân AVR CPU của AVR có chức năng bảo đảm sự hoạt động chính xác của các chương trình. Do đó nó phải có khả năng truy cập bộ nhớ, thực hiện các quá trình tính toán, điều khiển các thiết bị ngoại vi và quản lý ngắt. 2.1.Cấu trúc tổng quát Hình 2.1. Sơ đồ cấu trúc CPU của ATmega16 AVR sử dụng cấu trúc Harvard, tách riêng bộ nhớ và các bus cho chương trình và dữ liệu. Các lệnh được thực hiện chỉ trong một chu kỳ xung clock. Bộ nhớ chương trình được lưu trong bộ nhớ Flash. 2.2. ALU ALU làm việc trực tiếp với các thanh ghi chức năng chung. Các phép toán được thực hiện trong một chu kỳ xung clock. Hoạt động của ALU được chia làm 3 loại: đại số, logic và theo bit. 2.3. Thanh ghi trạng thái Đây là thanh ghi trạng thái có 8 bit lưu trữ trạng thái của ALU sau các phép tính số học và logic. Lê Hải Đăng CTM5-k50-HUT Chương 2. Cấu trúc nhân AVR Hình 2.2. Thanh ghi trạng thái SREG C: Carry Flag ;cờ nhớ (Nếu phép toán có nhớ cờ sẽ được thiết lập) Z: Zero Flag ;Cờ zero (Nếu kết quả phép toán bằng 0) N: Negative Flag (Nếu kết quả của phép toán là âm) V: Two’s complement overflow indicator (Cờ này được thiết lập khi tràn số bù 2) V, For signed tests (S=N XOR V) S: N H: Half Carry Flag (Được sử dụng trong một số toán hạng sẽ được chỉ rõ sau) T: Transfer bit used by BLD and BST instructions(Được sử dụng làm nơi chung gian trong các lệnh BLD,BST). I: Global Interrupt Enable/Disable Flag (Đây là bit cho phép toàn cục ngắt. Nếu bit này ở trạng thái logic 0 thì không có một ngắt nào được phục vụ.) 2.4. Các thanh ghi chức năng chung Hình 2.3. Thanh ghi chức năng chung 2.5. Con trỏ ngăn xếp (SP) Là một thanh ghi 16 bit nhưng cũng có thể được xem như hai thanh ghi chức năng đặc biệt 8 bit. Có địa chỉ trong các thanh ghi chức năng đặc biệt là $3E (Trong bộ nhớ RAM là $5E). Có nhiệm vụ trỏ tới vùng nhớ trong RAM chứa ngăn xếp. Lê Hải Đăng CTM5-k50-HUT Chương 2. Cấu trúc nhân AVR Hình 2.4. Thanh ghi con trỏ ngăn xếp Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí. Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lơn hơn hoặc bằng 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi. 2.6. Quản lý ngắt Ngắt là một cơ chế cho phép thiết bị ngoại vi báo cho CPU biết về tình trạng sẵn xàng cho đổi dữ liệu của mình.Ví dụ:Khi bộ truyền nhận UART nhận được một byte nó sẽ báo cho CPU biết thông qua cờ RXC,hợc khi nó đã truyền được một byte thì cờ TX được thiết lập… Khi có tín hiệu báo ngắt CPU sẽ tạm dừng công việc đạng thực hiện lại và lưu vị trí đang thực hiên chương trình (con trỏ PC) vào ngăn xếp sau đó trỏ tới vector phuc vụ ngắt và thức hiện chương trình phục vụ ngắt đó chơ tới khi gặp lệnh RETI (return from interrup) thì CPU lại lấy PC từ ngăn xếp ra và tiếp tục thực hiện chương trình mà trước khi có ngăt nó đang thực hiện. Trong trường hợp mà có nhiều ngắt yêu cầu cùng một lúc thì CPU sẽ lưu các cờ báo ngắt đó lại và thực hiện lần lượt các ngắt theo mức ưu tiên .Trong khi đang thực hiện ngắt mà xuất hiện ngắt mới thì sẽ xảy ra hai trường hợp. Trường hớp ngắt này có mức ưu tiên cao hơn thì nó sẽ được phục vụ. Còn nó mà có mức ưu tiên thấp hơn thì nó sẽ bị bỏ qua. Bộ nhớ ngăn xếp là vùng bất kì trong SRAM từ địa chỉ 0x60 trở lên. Để truy nhập vào SRAM thông thường thì ta dùng con trỏ X,Y,Z và để truy nhập vào SRAM theo kiểu ngăn xếp thì ta dùng con trỏ SP. Con trỏ này là một thanh ghi 16 bit và được truy nhập như hai thanh ghi 8 bit chung có địa chỉ :SPL :0x3D/0x5D(IO/SRAM) và SPH:0x3E/0x5E. Khi chương trình phục vu ngắt hoặc chương trình con thì con trỏ PC được lưu vào ngăn xếp trong khi con trỏ ngăn xếp giảm hai vị trí.Và con trỏ ngăn xếp sẽ giảm 1 khi thực hiện lệnh push. Ngược lại khi thực hiện lệnh POP thì con trỏ ngăn xếp sẽ tăng 1 và khi thực hiện lệnh RET hoặc RETI thì con trỏ ngăn xếp sẽ tăng 2. Như vậy con trỏ ngăn xếp cần được chương trình đặt trước giá trị khởi tạo ngăn xếp trước khi một chương trình con được gọi hoặc các ngắt được cho phép phục vụ. Và giá trị ngăn xếp ít nhất cũng phải lớn hơn 60H (0x60) vì 5FH trỏ lại là vùng các thanh ghi. Ví dụ: char cSREG; cSREG = SREG; /* store SREG value */ /* disable interrupts during timed sequence */ CLI(); EECR |= (1<<EEMWE); /* start EEPROM write */ Lê Hải Đăng CTM5-k50-HUT Chương 2. Cấu trúc nhân AVR EECR |= (1<<EEWE); SREG = cSREG; /* restore SREG value (I-bit) */ Lê Hải Đăng CTM5-k50-HUT Chương 3. Cấu trúc bộ nhớ Chương 3. Cấu trúc bộ nhớ AVR có 2 không gian bộ nhớ chính là bộ nhớ dữ liệu vào bộ nhớ chương trình. Ngoài ra ATmega16 còn có thêm bộ nhớ EEPROM để lưu trữ dữ liệu. 3.1. Bộ nhớ chương trình (Bộ nhớ Flash) Bộ nhớ Flash 16KB của ATmega16 dùng để lưu trữ chương trình. Do các lệnh của AVR có độ dài 16 hoặc 32 bit nên bộ nhớ Flash được sắp xếp theo kiểu 8KX16. Bộ nhớ Flash được chia làm 2 phần, phần dành cho chương trình boot và phần dành cho chương trình ứng dụng. Hình 3.1. Bản đồ bộ nhớ chương trình 3.2. Bộ nhớ dữ liệu SRAM 1120 ô nhớ của bộ nhớ dữ liệu định địa chỉ cho file thanh ghi, bộ nhớ I/O và bộ nhớ dữ liệu SRAM nội. Trong đó 96 ô nhớ đầu tiên định địa chỉ cho file thanh ghi và bộ nhớ I/O, và 1024 ô nhớ tiếp theo định địa chỉ cho bộ nhớ SRAM nội. Lê Hải Đăng CTM5-k50-HUT Chương 3. Cấu trúc bộ nhớ Hình 3.2. Bản đồ bộ nhớ dữ liệu SRAM 3.3. Bộ nhớ dữ liệu EEPROM ATmega16 chứa bộ nhớ dữ liệu EEPROM dung lượng 512 byte, và được sắp xếp theo từng byte, cho phép các thao tác đọc/ghi từng byte một. Lê Hải Đăng CTM5-k50-HUT [...]... phân tích từ đơn giản nhất đến khả năng phân tích phức tạp mà ngoài thực tế khi cần phân tích nó thì cần rất nhiều chi phí cũng như công cụ sử dụng - Phân tích quá tải, quá áp, đủ tải … Proteus cung cấp cho người sử dụng khả năng phân tích quá tải giúp người sử dụng hình dung được khi quá tải thì ảnh hưởng đến các linh kiện như thế nào mà không phải mất chi phí cũng như an toàn tuyệt đối - Lưu lại các... PC4/TDO PC5/TDI PC6/TOSC1 PC7/TOSC2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/OC1B PD5/OC1A PD6/ICP PD7/OC2 ATMEGA16 AVCC AREF 22 23 24 25 26 27 28 29 14 15 16 17 18 19 20 21 Rb PN +5V R16 100 30 32 C22 100nF Đây là mạch sử dụng vi điều khiển ATmega16 Ta có thể phân tích dạng sóng ngõ ra bằng hai cách: sử dụng Oscillocope hoặc dùng đồ thị (Graph) Nếu dùng Oscillocope thì ta thêm vào mạch như hình dưới đây:... 1 Giới thiệu chung 3 Khả năng ứng dụng - Khả năng ứng dụng chính của Proteus là mô phỏng, phân tích các kết quả từ các mạch nguyên lý Proteus giúp cho người sử dụng có thể thấy trước mạch thiết kế chạy đúng hay sai trước khi thiết kế trên bo mạch - Các công cụ phục vụ cho việc phân tích mạch có độ chính xác khá cao như đo vôn hay ampe, máy đo dao động - Khả năng áp dụng chương trình Proteus vào trong... Proteus Phần mềm Proteus VSM được viết bởi công ty Labcenter Electronics Proteus đã được sử dụng khá rộng rãi trên 35 quốc gia Proteus đã tự khẳng định thế mạnh của nó về mô phỏng các mạch nguyên lý sát với thực tế, trên 12 năm càng ngày nó càng được hoàn thiện và phát triển mạnh Protesu cung cấp cho người sử dụng hầu như toàn bộ các linh kiện điện tử để người dùng có thể tạo ra được các mạch nguyên... tín hiệu từ các mạch giao tiếp với máy tính qua công cụ RS232 Trong đó người sử dung có thể điếu khiển được quá trình truyền phát, tốc độ Baud … giúp cho người lập trình có thể mô phỏng các mặt truyền phát tín hiệu - Một điểm mạnh khác của Proteus là cung cấp cho người sử dụng công cụ biên dịch cho các họ vi xử lý như MSC51, AVR, HC11 … qua đó tạo ra các tập tin HEX dùng để nạp cho vi xử lý và tập tin... TIMSK Bộ định thời có thể sử dụng xung clock nội thông qua bộ chia hoặc xung clock ngoài trên chân T0 Khối chọn xung clock điều khiển việc bộ định thời/bộ đếm sẽ dùng nguồn xung nào để tăng giá trị của nó Ngõ ra của khối chọn xung clock được xem là xung clock của bộ định thời (clkT0) Thanh ghi OCR0 luôn được so sánh với giá trị của bộ định thời/bộ đếm Kết quả so sánh có thể được sử dụng để tạo ra PWM hoặc... của bộ tạo xung clock như sau: Hình 6.2 Đơn vị tạo xung clock txclk: xung đồng hộ bộ truyền rxclk: xung đồng hồ bộ nhận xcki: tín hiệu vào từ chân XCK, sử dụng cho hoạt động truyền đồng bộ master xcko: tín hiệu xung clock ngõ ra tới chân XCK, sử dụng cho hoạt động truyền đồng bộ slave fosc: tần số từ chân XTAL 6.2 Định dạng khung truyền USART chấp nhận tất cả 30 tổ hợp của các định dạng khung truyền... Thiết lập các thông số cho ADC Tốc độ chuyển đổi thông qua xung nhip chuyển đổi Chế độ chuyển đổi : đơn hoặc tự động Sử dụng ngắt hoặc không Bước 4: Bắt đầu chuyển đổi và đọc dữ liệu Ví dụ: (biến đổi ADC, ngõ vào analog PA2, hiển thị dữ liệu trên led ở PORTB) #include #include //ADC interrupt function ISR(ADC_vect) {PORTB=ADCH; } int main(void) { outp(0xFF, DDRB); //PORTB is... thiết kế ta sử dụng vi điều khiển ATmega16 để thực hiện chức năng biến đổi A/D, tạo mã trải phổ và tạo dữ liệu ra Sơ đồ khối của máy phát trải phổ như hình dưới đây: Tạo chuỗi PN Nhân tín hiệu Tạo dữ liệu vào Dữ liệu ra Biến đổi A/D 1 Biến đổi A/D Mạch tiền biến đổi A/D gồm một microphone, một mạch khuếch đại, các bộ lọc (lọc 4kHz) Chức năng biến đổi A/D được thực hiện trong vi điều khiển ATmega16 Lê... 300MHz trở lên 2 Các ưu điểm - Dễ dàng tạo ra một sơ đồ nguyên lý đơn giản từ các mạch điện đơn giản đến các mạch có bộ lập trình vi xử lý - Dễ dàng chỉnh sửa các đặc tính của linh kiện trên sơ đồ nguyên lý : chỉnh sửa số bước của động cơ bước, chỉnh sửa nguồn nuôi cho mạch ,thay đổi tần số hoạt động cơ bản của vi xử lý… - Công cụ hỗ trợ kiểm tra lổi thiết kế trên sơ đồ nguyên lý Xem và lưu lại phần