Professional Documents
Culture Documents
Về AVR
Về AVR
- Họ vi điều khiển AVR là dòng sản phẩm được phát triển bởi hảng Atmel (1996), nó được chế tạo dựa trên cấu trúc
AVR RISC (Reduced Instruction Set Computer) đồng thời AVR là một trong những họ vi điều khiển đầu tiên sử dụng
bộ nhớ Flash để lưu trữ chương trình. Có thể thấy rằng trong những năm gần đây Atmel đã trở thành nhà tiên phong
trên thế giới về phát triển kỹ thuật bộ nhớ Flash (không biến đổi, có thể xóa bằng điện và lập trình lại bộ nhớ, Họ
AVR thường được sử dụng trong các sản phẩm như Camera số, board chủ PC…)
- Vi điều khiển Atmega AVR có công suất cao, tiêu thụ năng lượng thấp, cấu trúc RISC tiến với 130 lệnh với chu kỳ
thực hiện đơn xung lớn nhất, 32 thanh ghi đa mục đích 8 bít, 16 MIPS tại tần số đặt 16 MHz, bộ nhân 2 chu kỳ On-
chip, Power-on Reset và Brown-out Detection có thể lập trình, bộ dao động RC bên trong có thể lập trình các mức, 5
Mode ngủ (Idle, ADC Noise Reduction, Power-save, Power-down và Standby), có khả năng Reset khi bật nguồn, khả
năng dò lỗi Brown out lập trình được, có nguồn ngắt trong và ngắt ngoài.
- Cốt lõi của AVR là sự kết hợp các câu lệnh phong phú với 32 thanh ghi đa mục đích. Tất cả 32 thanh ghi đều trực
tiếp kết nối tới bộ xử lý logíc số học - Arithmetic Logic Unit (ALU), cho phép truy nhập 2 thanh ghi độc lập trong một
câu lệnh đơn được thực hiện trong một chu kỳ xung. Kết quả của cấu trúc trở nên gọn nhẹ, hiệu quả hơn, trong khi
vẫn đạt được thời gian xử lý nhanh hơn gấp 10 lần các vi điều khiển CISC thông thường khác.
- 8K byte Flash trên chíp có thể lập trình với các khả năng đọc trong khi ghi (Read-While-Write), 512 byte EEPROM,
1K byte SRAM, 23 đường vào ra đa mục đích, 32 thanh ghi đa mục đích, 3 Timer/Counter rất linh hoạt với các
compare mode, các ngắt trong và ngắt ngoài, một bộ USART nối tiếp có thể lập trình được, ghép nối nối tiếp 2 dây
định hướng byte, 6 kênh ADC (8 kênh với loại TQFP và MLF packages) trong đó 4 (hoặc 6) kênh có độ chính xác
10-bit và 2 kênh có độ chính xác 8-bit, Watchdog Timer có thể lập trình được với bộ dao động bên trong, một cổng
nối tiếp SPI và 5 mode tiết kiệm năng lượng có thể lựa chọn mềm.
- Idle mode dừng CPU trong khi vẫn cho phép SRAM, Timer/Counters, cổng SPI, và hệ thống ngắt tiếp tục chức
năng của chúng.
- Power-down mode tiết kiệm nội dung thanh ghi, nhưng hạn định bộ dao động, không cho phép tất cả các chức
năng khác của chíp được hoạt động cho đến khi ngắt tiếp theo hoặc Reset phần cứng xuất hiện.
- Trong Power-save mode, timer không đồng bộ tiếp tục chạy, cho phép sử dụng để duy trì thời gian nền, trong khi
các phần còn lại của thiết bị được ngủ.
- ADC Noise Reduction mode dừng CPU và tất các module I/O ngoại trừ timer không đồng bộ và ADC để tối thiểu
hóa nhiễu mạch trong suốt quá trình ADC trong chuyển đổi.
- Trong Standby mode, bộ dao động thạch anh/ resonator được phép chạy trong khi các phần còn lại của thiết bị
được ngủ. Điều này cho phép start-up rất nhanh cùng với hiệu quả tiêu thụ ít năng lượng.
- Thiết bị được sản suất áp dụng công nghệ tích hợp bộ nhớ non-volatile cao của Atmel. Bộ nhớ chương trình Flash
này có thể lập trình thông qua ghép nối tiếp SPI bằng chương trình lập trình bộ nhớ non-volatile riêng, hoặc bằng
một chương trình boot on – chip, chạy trong AVR core. Chương trình boot có thể sử dụng bất kỳ một ghép nối nào
để download chương trình ứng dụng trong bộ nhớ Flash. Phần mềm trong Boot Flash sẽ tiếp tục chạy trong khi các
phần sử dụng Flash vẫn được update, hỗ trợ cho hoạt động đọc trong khi ghi (Read-While-Write).
- Bằng việc kết hợp với một CPU 8-bit RISC với bộ nhớ Flash tự lập trình trong hệ thống trên một chíp, Atmel
ATmega8 là một vi điều khiển cực mạnh, thỏa mãn yêu cầu về một bộ vi điều khiển với độ linh hoạt cao và đem lại
lợi nhuận lớn với rất nhiều các ứng dụng điều khiển tác động nhanh.
- ATmega8 AVR cũng hỗ trợ đầy đủ về lập trình và phát triển các tool hệ thống, bao gồm bộ dịch C, macro
assemblers, bộ mô phỏng/gỡ rối chương trình, In-Circuit Emulators, và evaluation kits.
Nguồn: http://www.tapchicongnghiep.vn/socuo...7/5/21710.ttvn
http://en.wikipedia.org/wiki/Atmel_AVR
http://www.atmel.com/products/AVR/
• 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
AT32UC3A0256
AT32UC3A0128
AT32UC3A1512
AT32UC3A1256
AT32UC3A1128
ATUC3A0xxxx
Các dòng AVR32 hiện tại chưa thấy bán trên thị trường tuy nhiên đây là dòng vđk 32bit khá mạch với nhiều tính
năng mới :
Tích hợp USB , công nghệ xử lý tiếng nói (AC97) , tích hợp bộ RTC -thời gian thực , thêm giao thức ethernet ...
MEGA AVR
TINY AVR
LCD AVR
CAN AVR
Phần trên trích từ luồng AVR trên VAGAM (Tác giả: gioidang1985)
2 - Ứng dụng của AVR bây giờ như thế nào ? (Được dùng chủ yếu ở lĩnh vực nào ?)
- LCD controller, Motor control, USB controller, advanced PWM, CAN etc.
Hồi đó bọn mình học môn Vi xử lý - Vi đều khiển, thầy dạy họ 8051, nhưng thầy bảo họ AVR mạnh hơn và khuyên
lớp tìm hiểu về họ AVR để ứng dụng trước hết vào các project môn học và các đồ án môn học và tương lai là phục
vụ cho nghề nghiệp.
3 - Khi cần học về 1 loại AVR cụ thể, thì nên bắt đầu từ nguồn tài liệu nào ? Các trang help, manual, datasheet như
thế nào thì hiệu quả ?
Atmel nhà của nàng AVR: thường xuyên ghé nhà nàng nhé
http://www.atmel.com/products/AVR/
- Tại trang chủ các bạn sẽ tìm được rất nhiều thứ: từ datasheet, trình biên dịch và trình soạn thảo (có Help đính
kèm), manual, Application Notes …
- Nghe ngóng xem thiên hạ thỏa luận về nàng như thế nào:
Tìm trên các Forum về AVR.
- Từ 2 luồng thông tin trên có thể có thể chọn cho mình 1 con trong họ AVR và các công cụ, tài liệu liên quan để làm
việc rùi.
• Hiện nay có nhiều loại trình biên dịch cho AVR trên các nền tảng Windows cũng như Linux.
http://www.atmel.com/dyn/products/to...ily_id=607#798
AVRStudio4 (http://www.atmel.com/dyn/products/to...p?tool_id=2725)
Ưu điểm: free, update thường xuyên bởi Atmel, viết được code ASM và C (cài thêm WinAVR), tài liệu, thư viện hổ
trợ nhiều, có thể tìm tại trang của Atmel hoặc các forum AVR.
CodeVisionAVR (http://www.hpinfotech.ro/index.html)
Ưu điểm: dễ dùng (tự sinh code khi chọn CodeWizardAVR) và dễ học (nền tảng là ngôn ngữ C), tài liệu cũng nhiều.
Ở Việt Nam số người dùng món này khá nhiều nên khi gặp khó khăn dễ tìm được sự giúp đở.
BascomAVR (http://www.mcselec.com/)
Ưu điểm: món này nền tảng cũng là ngôn ngữ C (chuẩn ANSI) nghe nói hổ trợ mạnh lắm, help, manual đọc rất hay,
tài liệu và thư viện trên trang www.mikroe.com rất đầy đủ và rất hay.
Nhược điểm: có phí, do nó hổ trợ thư viện mạnh nên không cần hiểu sâu phần cứng cũng viết được.
WinAVR (http://winavr.sourceforge.net/)
Trình biên dịch và soạn thảo trên nền tảng Linux: Sẽ cập nhật sau.
Mạch nạp
- AVR ISP Programmer Cable (mạch nạp các chíp AVR của Atmel qua cổng COM).
- STK500 HV-Adapter Mini (hỗ trợ nạp các chíp AVR thông dụng với chế độ Parallel (PP/HVSP mode).
- AVR 910 USB Programmer Cable, AVR STK500 USB Programmer (mạch nạp qua cổng USB).
• Giá cả:
Dùng mạch nạp cổng USB là tiện lợi nhất, tốc độ cao nữa, và máy nào cũng có cổng USB hết, máy Laptop bây giờ
không còn cổng COM và LPT nữa rùi.
Theo tình hình BOW tui thấy các bạn làm quen với avr thường xài chương trình codevision để lập trình. hầu hết ở
việt nam phần mềm codevison rất phổ biến, rất hiếm ai lập trình avr bằng AVRstudio (winavr). Sau đây là một vài ưu
khuyết điểm khi xài 2 chương trình này
Codevision:
- Đây là chương trình do hãng hpinfortech viết, hỗ trợ lập trình vi điều khiển avr bằng ngôn ngữ C. đây là chương
trình rất phổ biến ở việt nam (nhà nhà codevison người người codevision)
- Chương trình này có 2 phiên bản, một phiên bản standard và một phiên bản light, giá của 2 phiên bản này rất khác
nhau. Phiên bản light có giá 60EUR còn phiên bản standard có giá 150UER. đối với những nước phát triển, có bảo
vệ bản quyền và người dùng cuối có ý thức về vấn đề sở hữu trí tuệ cao thì đây là giá khá cao. còn khi tới việt nam
thì .... nó đã trở thành "vô giá"
- BOW tui hồi mới tiếp cận với AVR cũng đã xài chương trình này (và tất nhiên là xài Cr*** ).
- Nó hỗ trợ cho người dùng cuối rất nhiều, giúp chung ta dễ dàng tiếp xúc với avr trong "thời kỳ đồ đá". nhưng bù lại,
chung ta phải phụ thuộc vào nó rất nhiều và nếu sa đà vô chức năng codeWizard của nó thì sẽ khó có thể hiểu cụ
thể được sức mạnh của avr
- Codevision cũng hỗ trợ xuất ra files COF để debug tren avrstudio. cũng cho phép tao chèn những dòng lệnh ASM
trong môi trường C
- Sử dụng chương trình nạp AVRbaster của chính chương trình codevision, tương thíc với mạch nạp AVR910 free
mà anh chị em nhà ta hay sử dụng
- Về tài liệu tiếng việt thì chương trình này chiếm đại đa số
tóm lại, đây là một chương trình khá hay và tiện lợi cho những ai bước đầu làm quen với AVR
AVRStudio (WinAVR)
- Đây là chương trình do chính hãng Atmel viết và phân phối, dành cho riêng dòng sản phẩm AVR của atmel
- Sản phẩm chính hãng luôn được cập nhật bản vá lỗi và các dòng avr mới
- Đây lại là sản phẩm được phân phối Free nên rất được phổ biến trên thế giới (trừ việt nam - có lẽ người việt chúng
ta xài hàng cra** quen rồi nên khi gặp hàng chính hãng vừa rẻ vừa free lại chê )
- Nói cho vui vậy thôi, nhưng bow tui cũng ko biết lý do tại sao ở việt nam ko phổ biến chương trình này cho lắm
(cũng có thể do atmel chê thị trường việt nam nhỏ quá nên ko tấn công vô chăng - điều này thì khác hoàn toàn so
với PIC của microchip hén ).
- Đây cũng chính là chương trình dùng để debug cho avr luôn (nếu bạn sử dụng codevison nếu muốn debug thì vẫn
phải dùng thằng avrstudio này)
- Chạy được trên nền linux (điều này là bow tui khoái nhất đóa)
- Chương trình hỗ trợ 2 ngôn ngữ chính để lập trình cho avr, asm và c. điểm khác biệt cơ bản là thằng codevision sử
dụng C standard làm nền còn thằng avrstudio có sử dụng thêm một vài đặc tính của C++ để mềm dẻo hơn (thực ra
C và C++ cũng gân giống nhau)
- Nếu mua những Kit học avr của chính atmel phân phối (STK500, STK600 ...) nữa thì thằng avrstudio này ko thể
chê vô đâu được. (đôi khi cũng có lỗi, nhưng được fix và update rất nhanh)
- Mới đầu làm quen sẽ hơi khó khăn, nhưng sau này sẽ giúp ta hiểu rất rõ về cấu trúc của AVR cũng như tập lệnh
của nó
- Rất nhiều tài liệu, code cũng như thư viện được liệng đầy trên mạng
- Nạp chương trình bằng Avrprog của chính hãng atmel (mặc định cài đặt avrstudio là có). chương trình nạp này
nhanh gấp mấy trăm lần chương trình nạp của codevison
- Khi viết code xong nhấn ctrl+F7 là debug luôn, khỏi phải lằng nhằng chuyển đôi
- Điều quan trọng nhất là nó FREE và BOW tui rất khoái thằng này
Trên đây là một vài chính kiến của Bow tui về codevision và avrstudio, ngoài 2 phần mềm này ra còn rất nhiều phần
mềm khác sử dụng ngôn ngữ C để lập trình cho vi điều khiển avr, có soft thì free, cũng có soft tính phí.
Thực ra thì thằng avrstudio nó chỉ hỗ trợ asm thôi, nếu ko cài thêm bộ Winavr. Nhưng để cho dễ hiểu đối với các bạn
mới biết avr Bow tui nói đơn giản, (nếu pro nào đọc bài viết này cũng xin mạn phép bỏ qua cho) còn đối với các bạn
newbie thì chỉ cần hiểu là avarstudio là được, chúng ta sẽ đi sâu hơn vào trong phần sau.