View Full Version : AVR cho người mới bắt đầu
grdoor
10-09-2012, 11:25 AM
Các tài liệu hữu ích cho việc học tập với AVR, link đều do các thành viên tâm huyết post lên (cần đăng nhập trước khi tải):
- AVR for Beginner (TuxHero): http://dientuvietnam.net/forums/attachment.php?attachmentid=2367&d=1166240499
- Hướng dẫn sử dụng Code Vision AVR (Zemen): http://dientuvietnam.net/forums/attachment.php?attachmentid=2413&d=1166768426
Một số link hữu ích:
http://www.avrtutor.com/tutorial/thermo/contents.htm
http://www.vagam.dieukhien.net/index.php?tpid=5&catid=5&chapid=59
http://www.avrfreaks.net
___
cuahangso1
10-09-2012, 11:25 AM
Chắc cao thủ AVR đây rồi, tui cũng có dùi mài mấy chú PIC18, nhưng chưa có dịp thử xài mấy thằng AVR xem nó màu mè ra làm sao? Kể cũng lạ, 89C51 thì support lệnh nhân chia, trong khi đó AVR cùng là ATMEL nhà ta cả lại ko. Chắc là ATMEL cải lùi về mặt này rồi. Một lệnh nhân or chia của 89 chỉ mất vài chu kỳ lệnh, trong khi thủ công = lệnh của AVR lại mất khá nhiều thời gian. Ha ha... điểm này thì AVR đâu có sánh được với họ PIC18 nhi? Ko hiểu ATMEL nghĩ gì mà vậy?
ptchien
10-09-2012, 11:25 AM
E hèm, “dấn đề” bác hỏi Tux tôi xin trả lời như sau:
- Thứ nhất, bác phải nói rằng 89C51 có support các lệnh nhân/chia trực tiếp trên các thanh ghi chứ không nên nói chung chung là lệnh nhân/chia. Vì vậy nếu nói AVR không support các lệnh này là trật lất. Tux tôi ví dụ ngay đây:
mul Rd, Rr => R1:R0=Rd*Rr
ldi R30, label/2 => R30 = label/2
- Thứ hai bác nói là mình có dùi mài PIC. Vậy bác thử xem lại tập lệnh của PIC18 có lệnh chia hai thanh ghi hay không. Hay là bác chỉ dùng PIC Basic mà chưa bao giờ đụng tới trình dịch hợp ngữ. Còn nếu tính các lệnh nhân thì AVR thậm chí còn nhiều hơn.
- Thứ 3 là bác nói lệnh = của AVR mất nhiều thời gian. Ha ha ha. Bác phải coi thử các lệnh gán này thực hiện trên thanh ghi mấy bit, dùng trình dịch nào (hợp ngữ hay C) để so sánh chứ?
- Cuối cùng bác phải chú ý đến khoảng thời gian của mỗi chu kỳ lệnh. Cái này khác nhau ở từng loại vi điều khiển à nha. Cho dù AVR có thực hiện một lệnh tốn nhiều chu kỳ đi nữa thì nếu một chu kỳ của AVR chỉ mất có 1/16 micro giây thì cũng nhanh chán so với anh chàng 89 thực hiện 1 lệnh trong 1 chu kỳ.
Không biết như vậy có đáp ứng tính “hiếu học” của bác hay chưa nhỉ?
vietsonpte
10-09-2012, 11:25 AM
Đúng là các hạ ko hổ danh là moderator của AVR. Nắm rất kỹ về chúng nó và ko quên vach ra những lời sơ hở của tại hạ.
Về PIC18: chỉ có lệnh nhân(tất nhiên nói ở ASM), ko có lệnh chia. Tui nói sai 50%. Bác nói đúng hoàn toàn.
Về AVR thì có con có lệnh nhân/chia, nhưng có con ko có. Con thông dụng kiểu như AT90S8535 thì ko có. Đây la 1 sự cải lùi. Có thê nói tông quát: AVR90 thì ko có, còn ATMEGA thì có? mong bác đính chính thêm. Câu này tui sai 50%. Bác cũng sai 50% he he...
Túm lại công lực vê khoản này tui thua bác 1 bậc. Chắc phải tu tâm dưỡng tính để mong được các bác cất nhắc lên làm mod của 1 box nào đó.
vietsonpte
10-09-2012, 11:25 AM
Vi điều AVR có bao nhiêu họ con: AT90S,Atmega90s,Atiny....? và khác nhau cơ bản của các họ này là gì? Mong các bác chỉ rõ cho kẻ hiếu học này với!
danglongco
10-09-2012, 11:25 AM
AVR càng ngày càng có nhiều dòng, hiện nay theo tại hạ biết thì có các dòng sau:
- AVR cổ điển (là mấy con AT90S). Loại này chỉ mới với Vietnam thôi chứ Tây nó hầu như chuyển sang dòng khác hết rồi.
- AVR có tích hợp CAN (AT90CAN128).
- AVR có tích hợp LCD driver (là mấy con có số 9 như là ATmega169, ATmega329, ATmega649...)
- AVR có tích hợp PSC (Power Stage Controller) (là mấy con AT90PWM) hay được dùng trong các ứng dụng điều khiển Motor hay chiếu sáng (nên còn gọi là lighting AVR).
- megaAVR (ví dụ ATmega8, 16, 32, 64, 128...)là loại AVR tốc độ cao, thường đạt 16MIPS, thường có tích hợp ADC 10bit, thường có giao tiếp JTAG.
- mấy chú tí hon dòng ATtiny (ATtiny11, 12, 15, 25, 26...) bé nhưng là "bé hạt tiêu", một số con có thể đạt 20 MISP.
- gần đây mới ra loại AVR thích hợp với các ứng dụng pin, hình như gọi là Smart Battery AVR và chỉ mới có một thành viên là ATmega406 thì phải (cái này tại hạ không nhớ rõ lắm).
dangquang1
10-09-2012, 11:25 AM
AVR đâu có cải lùi, đúng là dòng cổ điển AT90S không có lệnh nhân/chia nhưng đó là đồ cổ rồi. Các dòng AVR mới đều cải tiến hết. Hơn nữa kiến trúc của AVR được thiết kế để tối ưu với high-level language, nên nhân chia không quan trọng lắm.
Còn nếu nói về hợp ngữ thì đúng như đại hiệp TuxHero nói, nhân mềm của AVR cũng thực hiện nhanh gọn lắm. Tuy nhiên về lệnh chia thì tại hạ lại nghĩ khác. Lệnh chia cứng AVR không có, nhưng lại được bù đắp bằng lệnh nhân fractional (FMUL), chứ không phải chia cứng như ví dụ của đại hiệp TuxHero đưa ra là "ldi R30, label/2 => R30 = label/2". Trong ví dụ trên, việc chia "label/2" là phần việc mà compiler làm thay lập trình viên, trong đó nhãn label là một hằng số. Cái này có thể thấy được ở hầu hết các compiler, ví dụ giống như ta viết trong Reads51 cho 8051 là "mov R0,#high(50000)". "/" và "high" chỉ là các hàm mà compiler cung cấp cho người lập trình để bớt phần tính toán. Có lẽ khi post ví dụ đó, đại hiệp TuxHero đang tiêu diêu bên cung đàn chén rượu nên có phần sơ hở. Tại hạ xin được đỡ lời đại hiệp.
benco_group
10-09-2012, 11:25 AM
Khà khà, hảo huynh đệ, hảo huynh đệ :D
longdatautovol
10-09-2012, 11:25 AM
Quả đúng là các cao thủ!
Tôi mới bắt đầu làm quen với VDK thôi, và cũng chọn dòng AVR để bắt đầu (mới chỉ biết con đầu tiên là atmega8515L).
Lý do tôi chọn nó là vì mới làm quen thì dùng CodeVisionAVR viết bằng C (vì cũng đã học qua C) để điều khiển đơn giản thôi (toàn là các câu lệnh của C để nhập ra các port thôi, chưa sử dụng được tài nguyên nào của AVR cả).
Còn phần tìm hiểu cấu trúc phần cứng và các lệnh ASM thì có lẽ là chưa được cụ thể lắm.Xin các cao thủ chỉ bảo một vài kinh nghiệm khi tìm hiểu về VDK nói chung và AVR cho những người mới bắt đầu để làm quen với nó. Nếu có thể thì đưa ra các để bài ứng dụng để những người mới bắt đầu có thể vọc ngay được và trên cơ sở đó để hiểu được về cấu trúc và các sử dụng nó.
Thấy các bác mở chuyên mục về AVR trên diễn đàn này tui mừng lắm. Và rất mong được sự chỉ bảo của mọi người!
vinatex
10-09-2012, 11:25 AM
To anhtt2005,
Hì, khiêm tốn quá. Cũng có một số bài viết trong box này. Tuấn thích thì tải về đọc thử, sợ không có thời gian thôi.
vBulletin v3.6.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.