Thông báo

Collapse
No announcement yet.

cổng COM và thạch anh ngoài

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • cổng COM và thạch anh ngoài

    -Việc Fuse bit có nhiều tác dụng với người mới học AVR thường không để ý:

    +Nếu Fuse bit không cẩn thận sẽ dẫn tới hỏng chip rất nhiều
    +Ví dụ với vi điều khiển AVR ATMEGA16(ATMEGA32,AT8535....) từ chân 24 tới chân 27 (PC2 tới PC5) các bạn sẽ không Input/Output được như các PORT khác thông thường,nhiều người gặp trường hợp dùng PORTC để làm 8 chân cho LCD1602 thì LCD không chạy ,trong khi các PORT khác như PORTB,PORTD,... vẫn bình thường,nguyên nhân là do khi ATMEGA16 mới ra lò,nhà sản xuất mặc định PC2 tới PC5 là các chân TDI,TDO,...đây là các chân để nạp dùng theo chuẩn JTAG,vì vậy bạn không thể Input/Output cho các chân này khi chưa SetFuse Bit
    ->Để Set Fuse Bit các bạn làm như sau
    • Sử dụng phần mềm Pony Prog2000 vào Setup->Interface Setup thiết lập cấu hình như hình vẽ

    • Nhấn Probe nếu hiện Test OK tức là mạch nạp đã kết nối với cáp LPT.Sau đó nhấn OK
    • Chọn Setup->Calibration nhấn Yes
    • Vào Device->AVR micro chọn loại AVR ta cần nạp(VD ATMEGA16)
    • Nhấn Ctrl-S sẽ hiện ra bảng Configuration and Security Bit
    • Nhấn vào Read để đọc Fuse bit hiện thời của ATMEGA16
    • Dễ dàng nhận thấy tại CheckBox JTAGEN có check,tức là PC2-PC5 đang dùng để nạp JTAGEN,bạn chỉ cần click chuột bỏ JTAGEN là bạn đã có thể sử dụng PC2-PC5 input/output như bình thường rồi

    Khi bạn kết nối AVR với RS232,bạn nhận thấy toàn kí tự lạ mặc dù đã nắp đúng sơ đồ MAX232,mặc dù Code của bạn là không sai tí nào?Tại sao vậy?Bởi vì trước khi học AVR bạn thường không để ý đến thạch anh?Vậy cổng COM MAX232 thì liên quan gì đến thạch anh?Nghe có vẻ vô lý nhưng lại rất mật thiết.
    Để tìm hiểu về cổng COM các bạn có thể tra trong Datasheet của ATMEGA16 các thanh ghi UCSRA,B,C.trong đó thanh ghi USART Baud Rate
    Registers – UBRRL and UBRRH quy định Baud Rate với 12 bit
    12 bit này được xác định thông qua bảng Table68,Table69,Table70,Table71
    Ví dụ với Baud Rate là 9600 dùng thạch anh 4 MHZ UBRR=25 (hệ 10)=0x19 (hệ 16)
    như vậy khi ta dùng Code vision AVR tự sinh code có thể thấy ngay
    UBRRH=0x00;
    UBRRL=0x19;
    Khi bạn sinh code bằng codevisionAVR,chọn thạch anh 4MHZ,nạp chương trình,nhưng cổng COM nhận toàn kí tự lạ?Đó là do bản thân ATMEGA16 cũng có dao động nội tại 1MHZ,khi bạn chọn 4MHZ,mạch phần cứng đã nắp thạch anh 4MHZ,nhưng ATMEGA16 vẫn hoạt động theo thạch anh nội tại 1MHZ.điều này gây ra truyền cổng COM bị lỗi?Vậy làm thế nào để ATMEGA16 hiểu rằng ta đang dùng thạch anh ngoài 4MHZ hay thạch anh trong 1MHZ?
    Bạn phải cấu hình Fuse bit cho ATMEGA16.
    Để cấu hình thạch anh cho ATMEGA16 dùng Pony Prog2000 nhấn Ctrl-S ,nhấn Read bạn sẽ thấy CKOPT check;CKSEL3 check,CKSEL2 không check,CKSEL1 không check,CKSEL0 check,tức SEL3..0=0110 tức hiện tại đang dùng thạch anh 1MHZ,cấu hình thạch anh bạn có thể xem trong Datasheet của ATMEGA16.
    Do vậy để cấu hình dùng thạch anh ngoài 4MHZ tra datasheet bạn sẽ thấy ngay SEL3..0=0111 tức bạn chỉ việc click chuột vào CKSEL0 thành không check(CKSEL0=1) rồi nạp lại chương trình cho ATMEGA16,lúc này ATMEGA16 sẽ hoạt động với thạch anh ngoài 4MHZ
    chú ý:Trong datasheet ATMEGA16 cũng lưu ý rằng khi dùng thạch anh f>8MHZ (VD 16MHZ)
    -->CKOPT Programmed(Không check)->bạn cần click chuột bỏ CKOPT để dùng thạch anh >8MHZ
    Contact:
    Email:thaokm@fpt.com.vn
    Yahoo:khongminhthao1986@yahoo.com
    Phone:0436812650
    Mobile: 0902149146

  • #2
    set fuse chip atmega16

    set fuse chip cua a rat hay nhung a bao co "anh thiet lap cau hinh nhu hinh ve " nhung e ko tim thay dau ca?neu co hinh minh hoa cach sua chjp a co the cho e sem dc ko?thank anh nhieu nha!

    Comment

    Về tác giả

    Collapse

    thaokm1986 Tìm hiểu thêm về thaokm1986

    Bài viết mới nhất

    Collapse

    Đang tải...
    X