Thông báo

Collapse
No announcement yet.

Truyền nhận dữ liệu chân RXD TXD của AVR dùng chuyển mạch

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

  • Truyền nhận dữ liệu chân RXD TXD của AVR dùng chuyển mạch

    AVR có 2 chân truyền nhận dữ liệu RXD và TXD ( ở đây mình truyền nhận theo chuẩn USART ) . nhưng vấn đề là mình đã dùng 2 chân này kết nối với cổng COM để gửi dữ liệu lên máy tính. Dữ liệu vào mạch của mình lấy tín hiệu sau module thu GPS cũng theo chuẩn USART , nghĩa là cũng phải dùng 2 chân này .vậy mình xin hỏi các bạn có kinh nghiệm về vấn đề này là ?

    1.Mình có thể dùng chung cả dữ liệu vào và ra ở 2 chân này ko. Mình nghĩ là nó sẽ ảnh hưởng ?

    2.Mình nghĩ đến khả năng là dùng 1 cái chuyển mạch
    nhưng ko biết ko nên dùng IC nào. lập trình ra sao.?

    Bạn nào biết chỉ mình nên dùng IC nào.? sơ đồ kết nối ra sao ? nếu có thể hướng dẫn mình lập trình cho nó?

    cám ơn mọi người đã đọc bài.mong sớm nhận được trả lời của mọi người
    |

  • #2
    AVR có 2 chân truyền nhận dữ liệu RXD và TXD ( ở đây mình truyền nhận theo chuẩn USART ) . nhưng vấn đề là mình đã dùng 2 chân này kết nối với cổng COM để gửi dữ liệu lên máy tính. Dữ liệu vào mạch của mình lấy tín hiệu sau module thu GPS cũng theo chuẩn USART , nghĩa là cũng phải dùng 2 chân này .vậy mình xin hỏi các bạn có kinh nghiệm về vấn đề này là ?

    1.Mình có thể dùng chung cả dữ liệu vào và ra ở 2 chân này ko. Mình nghĩ là nó sẽ ảnh hưởng ?
    - Chắc chắn là bạn không thể dùng chung 2 chân này rồi, bởi vì trong cả hai tác vụ nhận dữ liệu từ máy tính và module GPS, VDK của bạn đều ở trạng thái bị động, tức là không thể biết trước được khi nào mình phải nhận dữ liệu. Dó đó không thể tránh được các trường hợp xung đột, ví dụ như đang nhận dữ liệu từ máy tính thì dữ liệu từ GPS xen vào và ngược lại. Truyền dữ liệu cho máy tính thì đồng thời GPS cũng nhận được và ngược lại. Đang truyền cho máy tính thì nhận được dữ liệu từ GPS và ngược lại... Do vậy chắc chắn là bạn phải có biện pháp để tách riêng quyền sử dụng cổng COM cho 2 ngoại vi là máy tính và GPS.

    - Có một số giải pháp mà bạn có thể sử dụng như sau:
    + Dùng VDK có 2 cổng COM. Thật đơn giản, bạn chỉ cần dùng một con VDK có 2 COM. mỗi tội giá hơi chát.
    + Dùng dăm chọn bằng tay, hoặc chuyển mạch bằng tay. Mỗi lần bạn muốn đổi đường truyền thì dùng tay cắm lại dăm hoặc bấm công tắc,--> thật là bất tiện.
    + Dùng 2 bộ dồn kênh (Mux) 2 đầu vào 1 đầu ra. VĐK lập trình tín hiệu cho phép chọn kênh của Mux sao cho ứng với tổ hợp tín hiệu điều khiển này thì chọn máy tính, ứng với tổ hợp tín hiệu điều khiển khác thì chọn module GPS.

    Trong mấy giải pháp này chỉ có sử dụng 2 COM là tối ưu thôi vì ở hai giải pháp sau bạn vẫn không giải quyết được tình trạng truyền nhận dữ liệu đồng thời giữa 2 ngoại vi mà chỉ có thể sử dụng 1 trong 2. Vậy khi bạn đang truyền nhận với máy tính, thì rất có thể GPS sẽ gửi dữ liệu về, và chắc chắn bạn sẽ không biết để phục vụ vì phần cứng không kết nối.

    Thân mến,
    For a better world

    Comment


    • #3
      Góp thêm 1 giải pháp là sử dụng 2 con ATMEGA rẻ tiền (ATMEGA8) 1 cho GPS, 1 cho PC interface. giữa 2 MCU thì dùng giao tiếp parallel hoac SPI, I2C...

      Comment


      • #4
        Thank 2 bạn. Nhưng ở đây mình muốn dùng 1 con IC chuyển mạch có lẽ đơn giản hơn chứ. Mọi người có thể cho mình ý kiến góp ý về việc dùng IC nào ko ? Mình chưa có nhiều kinh nghiệm lắm.

        1. Bạn Toan.lv có thể nói rõ hơn về việc dùng 2 COM ko ạ. Con VDK avr nào có 2 COM vậy bạn. giá của nó thế nào. Bạn đã dùng bao giờ chưa.
        2. Zinix. ý tưởng của cậu về dùng 2 VDK cùng có vẻ hay. Bạn có thể nói rõ hơn cho mình giao tiếp parallel hoac SPI, I2C... được ko. Dùng thế nào.

        mình lập trình C ( dùng phần mềm codevisionC) với VDK là AVR

        mong sớm nhận được trả lời, Thanks
        |

        Comment


        • #5
          - Nếu dùng VDK có 2 COM thì hai cổng COM này đều dùng chuẩn RS232 nhưng chúng hoạt động độc lập với nhau, không liên quan về phần cứng, do đó bạn dùng cái này làm gì thì cũng chẳng ảnh hưởng đến cái kia. Nên bạn chẳng phải lo đến chuyện xung đột dữ liệu.
          Con VDK avr nào có 2 COM vậy bạn. giá của nó thế nào. Bạn đã dùng bao giờ chưa.
          - Đối với AVR có nhiều con có 2 COM lắm ví dụ ATmega128, ATmega162, ATmega164,...giá của bọn này hơi chát đấy, con ATmega128 giá là 130K, hai con kia thì không bít rõ bao nhiêu. Nhưng mà dùng con ATmega128 thì khỏi phải nghĩ, với cả bộ nhớ nó rộng mêng mông... tha hồ mà vẽ hưu vẽ vượn.

          Bạn có thể nói rõ hơn cho mình giao tiếp parallel hoac SPI, I2C... được ko
          - Việc kết nối 2 VDK với nhau thì tui chưa làm, nhưng giao tiếp song song, SPI, I2C thì đều là những giao tiếp cơ bản, hầu như AVR nào cũng hỗ trợ. Giao tiếp song song thì bạn cứ nối trực tiếp port của con này vào port của con kia. Con này out dữ liệu thì con kia đọc vào. SPI và I2C thì bạn cứ nối đúng vào giao diện phần cững tương ứng của nó, rồi lập trình. CodevisionAVR nó đã có thư viện hỗ trợ điều khiển tất cả các giao tiếp này rồi.

          Thân mến,
          For a better world

          Comment


          • #6
            Bạn Toàn đã trả lời dủm phần của mình rồi. Nói thêm chút ý tường đó là: bên MCU nhận dữ liệu GPS thi bạn khai báo mảng buffer[] chứa dữ liệu nhận được. Bên MCU phía giao tiếp với PC thì chỉ việc đọc dữ liệu trong buffer này theo giao thức parallel hoac SPI, I2C.. Nếu có điều kiện thì mua luôn con ATMEGA64 hoac ATMEGA128 làm cho nó đơn giản

            Comment


            • #7
              thanks 2 bạn
              Last edited by ericcantona; 02-05-2009, 23:04.
              |

              Comment


              • #8
                Thank 2 bạn rất nhìu. ý kiến của 2 bạn giúp ích cho mình rất nhìu.cho mình hỏi thêm mấy câu hỏi ?

                1. Mình vẽ mạch in dung Orcard 9.2 lite edition ( bản svien , ko can *****) nhưng khi vẽ thấy có 1 số linh kiện ko có, thư viện chân cũng vậy
                các bạn có thư viện đầy đủ của bản Orcard đấy và bản Protelus 7.0 pro thì sent cho mình với nha

                2. Có kinh nghiệm gì để sắp xếp linh kiện khi vẽ mạch in sao cho tiết kiệm diện tích nhất ko.Mà đi dây thì ko bị trùng ,để đở phải câu dây

                ---> mình ko phải chuyên về điện tử, nên ko có nhiều kinh nghiệm lắm

                mong mọi người chỉ dẫn nha.

                thank
                |

                Comment


                • #9
                  Có lẽ mình sẽ thử dùng ATmega64 xem thế nào.
                  Nếu mình truyền và nhận dữ liệu ở 2 cổng riêng biệt ( RXD TXD ) của 2 Port khác nhau thì có cần thiết lập tốc độ truyền nhận như nhau ko.? Khi khởi tạo Project trong CodevisionC thì mình thiết lập 2 cái uarst như thế nào. tần số thạch anh ra sao..có gì cần chú ý các bạn bảo mình với nha. Thời gian của mình cũng ko còn nhìu nữa. nhầm nhọt là ko kịp sửa chữa . thanks
                  |

                  Comment


                  • #10
                    Nguyên văn bởi ericcantona Xem bài viết
                    Có lẽ mình sẽ thử dùng ATmega64 xem thế nào.
                    Nếu mình truyền và nhận dữ liệu ở 2 cổng riêng biệt ( RXD TXD ) của 2 Port khác nhau thì có cần thiết lập tốc độ truyền nhận như nhau ko.? Khi khởi tạo Project trong CodevisionC thì mình thiết lập 2 cái uarst như thế nào. tần số thạch anh ra sao..có gì cần chú ý các bạn bảo mình với nha. Thời gian của mình cũng ko còn nhìu nữa. nhầm nhọt là ko kịp sửa chữa . thanks
                    mỗi uart có thể lập tốc độ truyền nhận riêng tùy theo ngoại vi gắn vào uart đó. truyền thông nên chọn tần số thạch anh lẻ theo datasheet để có sai số truyền nhỏ nhất.vd:7.3728mhz;11.0592mhz...

                    Comment


                    • #11
                      Chào các bác!
                      mình cũng đang làm với chuẩn USART,vấn đề của mình là giao tiếp giữa con mega32 với PC và 2 con mega8,minh không biết phải kết nối phần cứng và làm thế nào để truyền và nhận dữ liệu đúng địa chỉ cả.Bác nào biết giúp mình với.
                      Thanks!

                      Comment


                      • #12
                        Chào các bác!
                        mình cũng đang làm với chuẩn USART,vấn đề của mình là giao tiếp giữa con mega32 với PC và 2 con mega8,minh không biết phải kết nối phần cứng và làm thế nào để truyền và nhận dữ liệu đúng địa chỉ cả.Bác nào biết giúp mình với.
                        Thanks!
                        - Đối với USART AVR hỗ trợ 4 chế độ là:
                        + Normal Asyschronous
                        + Asyschronous double speed
                        + Master Syschronous
                        + Slave Syschronous
                        - Nếu dùng để truyền thông với máy tính thì bạn sử dụng 2 chế độ đầu. Phần cứng giao tiếp này có rất nhiều, dùng con Max232 để chuyển đổi mức điện áp
                        - Để truyền giữa 2 con với nhau, bạn sử dụng chế độ Syschronous, nối chung chân XCK của 2 con với nhau, cấu hình một con ở chế độ master, một con ở chế độ slave.
                        Chi tiết bạn xem thêm trong datasheet
                        For a better world

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        • nhathung1101
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi nhathung1101
                          Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.

                          Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.

                          Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...
                          hôm nay, 22:18
                        • dinhthuong80
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi dinhthuong80
                          Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.

                          Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...
                          hôm nay, 14:51
                        • dinhthuong80
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi dinhthuong80
                          Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.

                          Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...
                          hôm nay, 14:39
                        • dinhthuong80
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi dinhthuong80
                          Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.

                          Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...
                          hôm nay, 14:28
                        • bqviet
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi bqviet
                          Đúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
                          Hôm qua, 20:26
                        • mèomướp
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi mèomướp
                          Dạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
                          Hôm qua, 12:32
                        • vi van pham
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi vi van pham
                          Những lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).

                          Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...
                          20-02-2025, 21:31
                        • bqviet
                          Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                          bởi bqviet
                          Thiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.
                          20-02-2025, 17:22
                        • dinhthuong80
                          Trả lời cho Tiếng Anh cho người Việt
                          bởi dinhthuong80
                          Tiếng Anh, Đình Thường phải nói là rất tệ, khiến việc giao tiếp đời thường thôi cũng khó chứ nói gì về kĩ thuật.

                          Nhân tiện, nhờ các bạn, các bác xem giúp thư ĐT viết thế này liệu có thể gửi tới địa chỉ nhận hay chăng,...
                          20-02-2025, 11:52
                        • vi van pham
                          Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )
                          bởi vi van pham
                          Uống rượu 1 mình, thấy trang này nhớ lại cách đây vài chục năm hàn thiếc với inox cực kỳ khó, phải dùng acid Hcl tác dụng lên kẻm Zn để có Zncl2 làm thuốc trợ hàn, lúc đó làm gì có acid Hcl và thuốc trợ hàn?

                          Cái khó bó cái...
                          19-02-2025, 23:05
                        Đang tải...
                        X