Thông báo

Collapse
No announcement yet.

Gửi và nhận nhiều tín hiệu giữa PC và AVR

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

  • Gửi và nhận nhiều tín hiệu giữa PC và AVR

    Chào mọi người. Em mới bắt đầu học avr. Hiện em muốn giao tiếp giữa avr và PC. truyền và nhận 1 tín hiệu ( qua rs232) thì em làm được rồi, nhưng vấn đề của em, em muốn truyền và nhận nhiều tín hiệu (cùng lúc), em không biết hướng đi như thế nào, mong mọi người cho em ý kiến. Em thành thật biết ơn.

  • #2
    Trời. Không ai giúp mình hết, huhu...hu....h....u....

    Comment


    • #3
      mục đích cụ thể của bạn là gì, mình nghĩ không thể truyền đồng thời bằng phương thức usart, và cũng không cần thiết vì tốc độ truyền nhận khá lớn mà.
      Phạm Duy Quý

      PN:0973291335


      Dám nghĩ,dám nói,dám làm

      Comment


      • #4
        Cảm ơn bạn đã quan tâm câu hỏi của mình.
        Mục đích là mình truyền tính hiệu từ nhiều cảm biến ( cỡ 7 tín hiệu ), tín hiệu của các cảm biến này ở dạng điện áp và xung. Mình muốn sau khi vi xử lý của mình nhận được các tín hiệu này thì lập tức truyền tức thì lên máy tính. ( mình nghĩ dùng uart sẽ không nhanh bằng truyền song song, nhưng mình không biết truyền song song trên avr thế nào. Mặt khác truyền nối tiếp nhiều tín hiệu thì mình nghĩa là ghép nối nhiều tín hiệu đó lại rồi gửi đi, nhưng nếu mình làm như vậy thì trên máy tính mình không biết phải tách cái tín hiệu "chung" này ra thành các tín hiệu riêng thế nào. Mặt khác nếu truyền như vậy thì cũng không đảm bảo tính thời gian thực của hệ thống. ). Mong bạn cho mình ý kiến. Mình chờ ngưòi cho ý kiến lâu lắm tai đây rồi mà không có ai trả lời. Mình rất cảm ơn bạn.

        Comment


        • #5
          Cái này trước đây mình cũng đã nghĩ rất nhiều, tưởng khó chính xác tín hiệu, nhưng khi thử thì ok. Có nhiều cách, vì tín hiệu là 8 bit nên không thể gửi 1 byte để nhận dạng đó là tín hiệu của kênh vì giá trị của các kênh cũng là 8 bit đúng không? vì thế mình chỉ gửi 4 bit dữ liệu kèm theo 4 bit nhận dạng tạo thành 1 byte rồi gửi đi, máy tính từ đó sẽ nhận ra đó là dữ liệu của kênh nào, sau đó ghép lại thành 1 byte ban đầu. Cách này dữ liệu sẽ không bị sai hay mất .Tuy nhiên bạn chỉ có thể gửi đi tối đa 16 kênh khác nhau, nếu muốn mở rộng thì giảm số bit dữ liệu đi, Còn về tốc độ thì bạn khỏi lo, đủ nhanh để bạn giải quyết các ứng dụng. Bạn khám phá được cách nào hay hơn thì chia sẽ để mình cùng thử nhé. ok
          Phạm Duy Quý

          PN:0973291335


          Dám nghĩ,dám nói,dám làm

          Comment


          • #6
            ai nói cách đó không mất dữ liệu! Bạn đâu có cơ chế kiểm tra lỗi nào đâu mà nói vậy! Về nguyên tắt thì dù bạn gửi đi 1 bít thôi vẫn có thể bị lỗi.Bạn cứ xem giao thức của các chuẩn MODBUS đi bạn sẽ hiểu. Thực ra bạn hoàn toàn có thể truyền "gói" (package) thay cho việc chỉ truyền 1 byte duy nhất, mỗi gói có đầy đủ các phần : địa chỉ slave, lệnh hay data (hoặc tham số) , data, CRC,...

            Comment


            • #7
              Cảm ơn bạn dquy05. Mình sẽ tìm cách thử xem sao, chứ thực sự bây giờ mình chưa nắm được cách làm thế nào nữa.
              Cảm ơn bạn microchip. Bạn có thể nói rõ cách của bạn để cho mình và các bạn khác cùng tham khảo được không?

              Comment


              • #8
                Trong trường hợp này mình nghĩ chắc là bạn muốn truyền nhận kiểu Master-Slaves , trong đó PC đóng vai trò là Master và các con AVR thu thập dữ liệu làm Slave, mỗi slave có một địa chỉ riêng. PC sẽ gửi mỗi lần 1 gói tin với một định dạng nào đó, ví dụ : 1Byte start + 1 byte địa chỉ + 1byte xác định lệnh hay dữ liệu+ n byte data+1byte stop + 1 byte CRC(dùng để xác minh byte có bị lỗi hay không). Theo cách này bạn có thể quản lý hàng chục slaves. Nói chung bạn nên tham khảo các chuẩn truyền thông MODBUS ASCII / RTU sẽ hiểu rõ hơn.(cứ lên google gõ ModBus ASCII protocol là ra hết).

                Comment

                Về tác giả

                Collapse

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

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

                Collapse

                Đang tải...
                X