RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Giao tiếp AVR với PC

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts

  • RedRose
    replied
    Các bạn mới học nên vào các topic đã được đánh dấu ở phía trên của box tham khảo trước. Có nhiều tài liệu cho các bạn mới bắt đầu mà

    Hoặc có thể mở hẳn một topic mới nhé ^_^

    Leave a comment:


  • vtanh1310
    replied
    các bác à em muốn làm mạch nạp cho AVR nhưng mà co một con VDk nó cần đươc lập trình mà em ko biết lâp trình nó như thế nào cả bác nào biết chỉ dùm em nhé em cám ơn các bác trước

    Leave a comment:


  • vtanh1310
    replied
    các bác à em đang làm về đồng hồ dùng RTC va AVR cả LCD nữa nhưng mà em không biết lâp trình lắm bác nao biết về cái nay chỉ dạy dùm em với,em cũng ko rõ về truyền thông với PC nua. Mong các bác chỉ dùm em,em cam on

    Leave a comment:


  • hackpeace
    replied
    Chào các bác, em đang định làm mạch đo nhiệt độ dùng Atmega16. Bác nào có tài liệu liên quan post lên diễn đàn được không.
    Hoặc bác nào có tài liệu về Atmega16 tiếng việt cũng được. Em đang đọc giáo trình tiếng anh, nhưng vốn tiếng anh hạn chế nên đọc rất chậm.
    Mong sự giúp đỡ của các bác

    Leave a comment:


  • blackmoon
    replied
    Hi bocodai,

    Còn một điều nữa là bạn không thể tự ý đặt cờ lên bằng 1 trong AVR được đâu. Cờ sẽ chỉ = 1 khi sự kiện gây ngắt xảy ra. Nói cách khác, bạn không thể tự tạo ra ngắt giả tạo bằng cách set cờ tương ứng lên bằng 1. Đây là một điểm khác nữa của AVR so với các vi điều khiển khác, các bạn làm với AVR phải lưu ý điều này.

    Thân mến,
    blackmoon.

    Leave a comment:


  • blackmoon
    replied
    Hi bocodai,

    Nếu bạn có được kết quả, hãy post lên thông báo để các bạn khác sau này bớt vấp phải các vấn đề như vậy.

    Thân mến,
    blackmoon.

    Leave a comment:


  • bocodai
    replied
    Xin lỗi bác, em nhầm với toán tử ~

    Thì ra là vậy, phải ghi 1 vào đó. Nếu vậy thì phải luôn ghi vào là 1, bất kể muốn set nó là 0 hay 1, giá trị sau cùng sẽ phụ thuộc vào trạng thái hiện hành của bit trước khi ghi.

    Hôm qua về hí hửng thử, ai ngờ cái mạch nạp tự nhiên ... toi, buồn bực vô cùng.

    Vô cùng cảm ơn bác !

    Leave a comment:


  • blackmoon
    replied
    Khi cờ đang bằng 1, ghi 1 vào sẽ xóa nó. Đó là một trong những điểm khác biệt của AVR. Bạn ghi 0 vào sẽ chẳng có tác dụng gì cả.

    Thân mến,
    blackmoon.

    Leave a comment:


  • blackmoon
    replied
    Hi bocodai,

    Về toán tử "!", bạn có thể cài thêm AVRStudio để có thể mô phỏng với CodeVisionAVR. Lúc đó bạn sẽ rõ CodeVision làm gì với phép toán sử dụng toán tử đó của bạn.

    Thân mến,
    blackmoon.

    Leave a comment:


  • bocodai
    replied
    Ôi, hóa ra xoá cờ là set bit đó lên 1 hả bác ? UCSRA = (1<<TXC) : bit TXC sẽ là 1. Cảm ơn bác, về thử liền.

    Trong C, toán tử ! vẫn cho phép trên kiểu số : !x = 255 - x, nếu x là kiểu unsigned char. Nghĩa là nó sẽ đảo các bit trong x.

    Leave a comment:


  • blackmoon
    replied
    Hi bocodai,

    Mình giả thiết bạn đã chọn đúng vị trí các bit cờ trong thanh ghi UCSRA. Cái sai lớn nhất và cũng là cái sai chủ yếu trong chương trình của bạn là phép toán "!". Phép toán này dùng cho đối tượng bit chứ không phải byte như bạn sử dụng.
    Cách đợi cờ của bạn không sai nhưng tốt hơn hãy viết như sau: while ((UCSRA&0x40)==0);
    Hiểu nhầm toán tử "!" nên bạn cũng sai luôn trong cách xóa cờ. (!0x40) hay (!0x80) đều bằng = 0x00. Vì thế các lệnh xóa cờ của bạn đều là UCSRA = UCSRA & 0x00 = 0x00. Vậy thì không xóa được cờ rồi. Để xóa thì hãy viết là:
    UCSRA = (1<<TxC); với TXC đã define = 6 (vị trí bit TXC trong thanh ghi UCSRA)
    UCSRA = (1<<RXC); với RXC đã define = 7 (vị trí bit RXC trong thanh ghi UCSRA)

    Thân mến,
    blackmoon.

    Leave a comment:


  • bocodai
    replied
    Sao không có ai giúp mình hết nhỉ ?

    Khi generate code bằng CodeVision, nếu chọn mode không đồng bộ thì hai chân RX và TX đều được cấu hình là ngõ vào, còn nếu đồng bộ thì TX là ngõ ra. Như vậy là sao nhỉ ? Bình thường thì dùng mode nào ? Nhờ các cao nhân cho vài điểm chỉ.

    Ông AVR sao mà rắc rối quá, 8951 làm phát chạy liền. Chắc phải quay lại traditional thôi !

    Leave a comment:


  • bocodai
    replied
    Khi truyền nhận với UART thì có phải set chân RX là in còn chân TX là out không ? Hay là cấu hình thế nào mà tớ làm hoài không chịu chạy(dùng ATMega8515, code bằng CodeVision) !

    Cấu hình UART và code như sau:
    <code>
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud rate: 9600 , XTAL 11.0592
    UCSRA=0x00;
    UCSRB=0xD8;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x47;

    void put_char(unsigned char c)
    {
    UDR = c;
    while(!(UCSRA & 0x40));//chờ cho đến khi truyền xong
    UCSRA = UCSRA & (!0x40); // TXC = 0
    }

    interrupt [USART_RXC] void usart_rx_isr(void)
    {
    unsigned char c;
    c = UDR;
    UCSRA = UCSRA & (!0x80); // RXC = 0
    PORTC = c;//out led
    }
    </code>

    Xin chỉ giúp !

    Leave a comment:


  • chi_co_nui
    replied
    Hì hì, cảm ơn bác Sphinx nhé, em toát hết cả mồ hôi, em dùng codevision và pony prog may quá như bác nói nó không set được ISP. Hết toát mồ hôi rồi bác ạ.

    Bạn lhthangktv này. bạn có thể vào trang www.lancos.com để download chương trình cũng như mạch nạp. Cái này bác RedRose post rồi mà.

    Leave a comment:


  • lhthangktv
    replied
    Chào các bạn mình đang muốn làm một mạch nạp cho AT90S8515 , có bạn nào chỉ giúp mình với !?

    Leave a comment:

Về tác giả

Collapse

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

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

Collapse

Đang tải...