Thông báo

Collapse
No announcement yet.

Xin chỉ chỗ sai trong chương trình test giao tiếp máy tính qua r485

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

  • #31
    cái đó mình chưa đo, nhưng mình đã làm,và chạy tốt,dữ liệu truyền nhận đều ổn.
    mà mạch đó có thể không hoạt động được với tốc độ truyền cao cỡ vài M,bởi vì bạn còn phải xem tần số hoạt động tối đa của các linh kiện sử dụng.
    ví dụ max485 có fmax là 2.5M.
    nói chung là truyền nhận với tốc độ <M hoàn toàn ổn.
    hãy quý những j hiện tại mình đang có

    Comment


    • #32
      Nếu có dạng sóng để đo thì giải thích thật thấu đáo nhỉ ? Mình không giám nghi ngờ về phương pháp bởi thực tế mạch chạy tốt và truyền không sai dữ liệu thì chẳng thể nào phủ nhận nó là một phương pháp khả thi thực sự. Vậy là chỉ cần từ với hai cổng Not là có thể giải quyết được vấn đề điều khiển hướng truyền của 485. cả ở phía CP (master) và avr (slave).
      - Không biết bạn làm với bao nhiêu slave vậy ?

      Comment


      • #33
        Trong diễn đàn này thấy bác Hoctro89xxxx cũng có nói về mạch này và đã làm thành sản phẩm và chạy tốt.. mặc dù là dùng cổng not bằng CD4069 có độ trễ tín hiệu vào ra lớn hơn con 74LS004 mà vẫn oke thì ổn wa... Có một điều khó hơi khó hiểu là khi Tx truyền bit 1. thì 485 của mình cho phép nhận trong khi nó đang muốn truyền đi. Mình chưa giải thích được đoạn này có Mấy Mod ở nước ngoài cũng nói trong xuốt quá trình truyền thì pin_23 phải luôn ở mức cao.. nhưng cũng có thể họ chưa làm mạch kiểu này bao giờ . Theo trang web mà mình đọc được nói về chuẩn 485 cũng nói về phương pháp auto.. có một mạch kiểu này nhưng dùng 555 bạn có đánh giá gì về chất lượng 2 kiểu này không ?

        Comment


        • #34
          dúng rùi.đánh giá chất lượng thì mình ko dám,nhưng dùng cổng not hay dùng một transistor để điều khiển thì ko cần bận tâm đến các giá trị tụ,trở như dùng 555
          Mình làm mạng gồm 4 điểm,pc(master) +3 slave thôi,để phục vụ cho học tập mà.
          còn phần slave bạn dang nhận dữ liệu thì theo nguyên tắc nó chỉ họat động bán song công thôi nên ko thể vừa truyền vừa nhận dữ liệu cùng một lúc được.
          hãy quý những j hiện tại mình đang có

          Comment


          • #35
            Nếu bạn đã làm tốt phần này thì rất mong được bạn giúp đỡ ! bạn có thể cho mình đc mail kô ? nếu có gặp bí thì mình xin hỏi vậy !

            Comment


            • #36
              ok.có j bạn cứ hỏi.mình trả lời dc thì mình nói,nếu ko có rất nhiều cao thủ về lĩnh vực này đó.
              bạn có dung chế độ đa xử lý hay ko vậy.bạn nên dùng chế độ này vì khi truyền nhận nhiều thì các slave # sẽ mấy thời gian xử lý dữ liệu ko phải truyền cho nó.
              hãy quý những j hiện tại mình đang có

              Comment


              • #37
                Bạn có thể nói rõ hơn về chế độ này và cách thiết lập : Bởi như mình hình dung định làm thì vd CP truyền frame : địa chỉ slave + địa chỉ thiết bị + lệnh yêu cầu +lỗi ( như vậy chẳng hạn thì tất cả các slave đều mất thời gian thu frame này rồi mới so sánh với địa chỉ có khớp với nó kô thì đúng là mất thời gian vô ích.

                Comment


                • #38
                  khung truyền thì tự do mình định thôi.
                  ví dụ như một khung truyền gồm 4 byte.
                  byte1 là địa chỉ của cần truyền tới.byte2 là mã lệnh,byte3 là nội dung,byte4 là byte kiểm tra lỗi(ví dụ CRC).
                  khi bạn lựa chọn chế độ đa xử lý(9 bit),bits thứ 9 bạn set lên 1(đối với byte address) còn các byte ko fai là địa chỉ thì có bít thứ 9 là 0.
                  khi các điểm mạng nhận được byte address thì nó kiểm tra xem có fai địa chỉ của minh ko?nếu đúng thì nhận tiếp các byte sau(đủ một khung).
                  còn nếu không phải địa chỉ của mình thì nó bỏ qua tất cả các byte sau,chỉ nhận byte địa chỉ của khung truyền tiếp theo và kiểm tra như trên.như vậy các node mạng khong được gọi sẽ không mất thời gian xử lý các byte không fai gửi cho mình (cụ thể ở dây là các byte dữ liệu).
                  hãy quý những j hiện tại mình đang có

                  Comment


                  • #39
                    Uhm đêm wa không ngủ làm cái coverter 232 - 485 và một cái slave dạng auto direction và plug and play liền . Mình cho truyền nhận đúng như bạn nói không sai một kí tự nào rất tốt. mặc dù mình chơi thạch anh 16Mhz. (error 9600 0.2%).

                    giờ mình mới bắt đầu viết test thử để làm thêm các slave khác và ngoại vi hoàn chỉnh ..

                    - Để kiểm tra địa chỉ khi master gửi xuống mình thử làm một cái đơn giản thế này nhé (nếu cp gửi A thì sẽ on một con led ( katot nối với PORTC.5). Nếu gửi B thì sẽ off nó đi.
                    +) Khi mình test với một vài dòng code kiểu này thì nó chạy rất oke :
                    Code:
                    while(rx_counter >0 )          
                        {   
                        
                     //     putchar(getchar());    
                      //    }   
                    //  switch( getchar())
                    //      {
                          if('A'== getchar())
                     //    case 'A' :
                          PORTC.5 = 0;    // sáng led
                         // delay_ms(100);   
                         if('B'== getchar())
                      //    case 'B' :
                          PORTC.5 = 1;  // tắt led
                          //delay_ms(100);    
                    //      default :
                          ;
                          }
                    +) Tiếp đó mình không mún dùng dạng if để kiểm tra mà dùng switch case thì kết quả tệ chắc sai rùi mà mình chưa nhìn ra . Bạn chỉ xem sai chỗ nào nhé... ( Khi mình gửi các kí tự thường (kô phải kí tự viết hoa (thì led luôn sáng vì mặc định ban đầu khởi tạo là ở mức thấp mà nên sẽ cấp đất cho led . Vcc thì lun được cấp cố định vào anot rùi). Tiếp theo khi mình gửi A hoặc B thì led lập tức tắt lun và cho dù mình có gửi kí tự gì xuống nó cũng không sáng lại .
                    đoạn code như thế này :
                    Code:
                    while(rx_counter >0 )          
                        {   
                        
                     //     putchar(getchar());    
                      //    }   
                     switch( getchar())
                    //      {
                    //      if('A'== getchar())
                        case 'A' :
                          PORTC.5 = 0; // on led
                         // delay_ms(100);   
                     //    if('B'== getchar())
                          case 'B' :
                          PORTC.5 = 1; // off led
                          //delay_ms(100);    
                          default :
                          ;
                          }
                    ??

                    Comment


                    • #40
                      what ! binh lun

                      Comment


                      • #41
                        Thiếu cái break òi !

                        Comment


                        • #42
                          U ! với 2 code trên mình thấy code viết với swich cho độ ổn định tốt hơn hẳn.
                          vì code viết với if ở trên nhiều lúc mình phải click 2 lần thì nó mới sáng hoặc tối. ??
                          còn với code viết bằng switch thì click 10 cái đc lun 10 ..

                          Comment


                          • #43
                            Nguyên văn bởi newbie_avr Xem bài viết
                            Uhm đêm wa không ngủ làm cái coverter 232 - 485 và một cái slave dạng auto direction và plug and play liền . Mình cho truyền nhận đúng như bạn nói không sai một kí tự nào rất tốt. mặc dù mình chơi thạch anh 16Mhz. (error 9600 0.2%).

                            giờ mình mới bắt đầu viết test thử để làm thêm các slave khác và ngoại vi hoàn chỉnh ..

                            - Để kiểm tra địa chỉ khi master gửi xuống mình thử làm một cái đơn giản thế này nhé (nếu cp gửi A thì sẽ on một con led ( katot nối với PORTC.5). Nếu gửi B thì sẽ off nó đi.
                            +) Khi mình test với một vài dòng code kiểu này thì nó chạy rất oke :
                            Code:
                            while(rx_counter >0 )          
                                {   
                                
                             //     putchar(getchar());    
                              //    }   
                            //  switch( getchar())
                            //      {
                                  if('A'== getchar())
                             //    case 'A' :
                                  PORTC.5 = 0;    // sáng led
                                 // delay_ms(100);   
                                 if('B'== getchar())
                              //    case 'B' :
                                  PORTC.5 = 1;  // tắt led
                                  //delay_ms(100);    
                            //      default :
                                  ;
                                  }
                            +) Tiếp đó mình không mún dùng dạng if để kiểm tra mà dùng switch case thì kết quả tệ chắc sai rùi mà mình chưa nhìn ra . Bạn chỉ xem sai chỗ nào nhé... ( Khi mình gửi các kí tự thường (kô phải kí tự viết hoa (thì led luôn sáng vì mặc định ban đầu khởi tạo là ở mức thấp mà nên sẽ cấp đất cho led . Vcc thì lun được cấp cố định vào anot rùi). Tiếp theo khi mình gửi A hoặc B thì led lập tức tắt lun và cho dù mình có gửi kí tự gì xuống nó cũng không sáng lại .
                            đoạn code như thế này :
                            Code:
                            while(rx_counter >0 )          
                                {   
                                
                             //     putchar(getchar());    
                              //    }   
                             switch( getchar())
                            //      {
                            //      if('A'== getchar())
                                case 'A' :
                                  PORTC.5 = 0; // on led
                                 // delay_ms(100);   
                             //    if('B'== getchar())
                                  case 'B' :
                                  PORTC.5 = 1; // off led
                                  //delay_ms(100);    
                                  default :
                                  ;
                                  }
                            ??
                            2 đoạn code có lỗi hết.
                            đoạn trên thì bạn bị ở chỗ hàm getchar();
                            hàm này sẽ lấy data ra khỏi bộ đệm, vì vậy , với đoạn code này, mỗi một giá trị mà bạn gửi xuống thì nó chỉ được kiểm tra một lần thôi, cho dù nó đúng hay ko đúng thì cũng bị xóa,bạn nên sửa lại thế này.
                            Code:
                            unsigned char temp;
                            
                            while(rx_counter >0 )          
                                {   
                               temp=getchar(); 
                             
                                  if(temp=='A')
                                  PORTC.5 = 0;    // sáng led
                                   if(temp=='B')
                                  PORTC.5 = 1;  // tắt led
                                    }
                            đoạn code dưới thì thiếu break() nên khi mới khởi động thì nó sẽ sáng, sau đó nếu bạn gửi A thì nó sẽ chạy một mạch từ trễn xuống dưới.. nên sẽ tắt led, nếu gửi B thì nó sẽ nhảy đến dòng tắt led.. và led cũng bị tắt, kết quả là dù bạn gửi A hay B j thì led cũng tắt và ko thể bật lại, trừ khi bạn reset.

                            Comment


                            • #44
                              Nguyên văn bởi newbie_avr Xem bài viết
                              Trong diễn đàn này thấy bác Hoctro89xxxx cũng có nói về mạch này và đã làm thành sản phẩm và chạy tốt.. mặc dù là dùng cổng not bằng CD4069 có độ trễ tín hiệu vào ra lớn hơn con 74LS004 mà vẫn oke thì ổn wa... Có một điều khó hơi khó hiểu là khi Tx truyền bit 1. thì 485 của mình cho phép nhận trong khi nó đang muốn truyền đi. Mình chưa giải thích được đoạn này có Mấy Mod ở nước ngoài cũng nói trong xuốt quá trình truyền thì pin_23 phải luôn ở mức cao.. nhưng cũng có thể họ chưa làm mạch kiểu này bao giờ . Theo trang web mà mình đọc được nói về chuẩn 485 cũng nói về phương pháp auto.. có một mạch kiểu này nhưng dùng 555 bạn có đánh giá gì về chất lượng 2 kiểu này không ?
                              về độ trễ tín hiệu thì với giao tiếp rs này ko có vấn đề j đâu, chắc bạn dùng cao lắm là vài chục k.
                              vấn đề cần giải quyết ở đây là làm sao khi bên truyền có bit 0 thì bên nhận là bit 0, khi truyền là bit 1 thì bên nhận cũng là bit 1, ko cần biết là truyền trực tiếp hay gián tiếp.
                              bạn coi kĩ trong chỗ Function Tables DS75176B Receiving
                              nếu chân RE =0 thì ngõ ra RO sẽ là 1 khi trên đường truyền là mức 1 hay được thả lỏng(ko có tín hiệu) nó chỉ về mức 0 khi mà trên đường truyền có tín hiệu mức 0,
                              do đó cách giải quyết là ta sẽ truyền bit 0 lên đường truyền và bit 1 thì bỏ nó đi, thả lỏng đường truyền thay vì đưa nó lên mức tín hiệu 1. đây được xem như là cách gián tiếp để truyền data 1 từ bên này sang bên kia.
                              dựa vào bảng
                              Function Tables
                              DS75176B Transmitting
                              bạn sẽ chọn được 2 trạng thái ở giữa.. khi nối cổng not vào giữa DE và DI thì khi DI=0 thì đường truyền =0, ngược lại, khi DI=1 thì đường truyền sẽ được thả lỏng,
                              như vậy là đã giải quyết được vấn đề rồi.

                              đây là phương pháp truyền data đi mà ko cần ràng buộc về chân 2,3 khi truyền, còn nếu bạn muốn chắc chắn rằng data luôn được truyền đi khi truyền, nghĩa là chân 2,3 luôn ở mức cao thì dùng con 555, làm mạch trễ, nó sẽ tạo trễ trong thời gian bạn truyền một byte đi, lúc này bạn phải tính tốc độ truyền và suy ra thời gian này để tính toán các linh kiện cho mạch 555.

                              Comment


                              • #45
                                newbie_avr làm đến đâu rồi mình cũng đang làm một mạch tương tự như newbie_avr. Mình dùng PC làm master và atmega8 cho 2 slaver. Mạch chuyển đổi thì mình dùng 555 và 75176 nói chung phần cứng mình làm xong rồi, mình cũng đã test thử nhưng chỉ truyền nhận giữa 1 slaver và PC thôi thì chạy ok còn bây giờ thêm 1 slaver nữa thì mình chwa làm đc .Mình cũng chỉ mới bắt đầu tìm hiểu về Avr thôi nên lập trình còn kém lắm mong newbie_avr và các bạn chỉ giáo

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ hông dám làm thì chắc chắn sẽ mãi ko thể làm được đâu ạ. Nguồn xung dân dụng vài kw giờ rất nhìu ạ, sạc ô tô điện, máy hàn, lò vi sóng, âm ly... tùy chất lượng mà độ phức tạp sẽ khác nhau ạ. Và cái giá phải trả về kinh tế...
                                  Hôm qua, 13:11
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Sửa dạng này thì chuyên còn không dám chắc khộng cháy nổ với linh kiện bán ngoài chợ nói gì khộng chuyên .
                                  Hôm qua, 09:25
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Đúng rồi chọn mua theo tai . ca thì phải toàn dải nhạc thì chỉ cao và thấp thé nên loa ca thì nghe nhạc không hay và ngược lại .
                                  Muốn ca và nhạc đều hay thì phải dúng 2 giàn , còn nếu chỉ có 1 thì phải chỉnh sửa lại sao cho ca và nhạc đều được không quá dở ....
                                  Hôm qua, 09:10
                                • Ng.Phuong.5
                                  Vấn đề in lỗ khoan ra pdf ở Orcad 9.2
                                  bởi Ng.Phuong.5
                                  Vấn đề cũ: khi in mạch ra pdf và bấm chọn Keep Drill Holes Open, in ra thì pdf trắng đen các lỗ chân linh kiện như nhau. Mặc dù có linh kiện phần Drill là 1mm, có linh kiện thì là 3mm. Cho em hỏi cách sửa phần này ở Orcad 9.2 với ạ.
                                  Mấy con...
                                  09-01-2025, 19:44
                                • viettinh
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi viettinh
                                  Bác nói đúng quá. Cơ mà muốn mua hàng chính hãng, hàng thương hiệu mà tai lại hợp hàng tầu mới khổ chứ.
                                  Đang tính mua cái loa tầu nữa cột đằng sau loa này, Loa sony chỉ để hát nhép thôi, có dc k các bác ...
                                  09-01-2025, 18:12
                                • nguyendinhvan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi nguyendinhvan
                                  Theo tôi thì khi hpj sản xuất ra cái loa đó, đã có nhiều chuyên gia kỹ thuật hiệu chỉnh, tính toán các phần tử kỹ lưỡng rồi.
                                  Bây giờ tính toán hiệu chỉnh lại cần có đội ngũ tương đương với nhà sản xuất.
                                  Cách đơn giản...
                                  09-01-2025, 00:04
                                • mèomướp
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi mèomướp
                                  Dạ cháu có ý tốt muốn động viên chú ấy ngâm cứu khoa học thôi ạ. Về phần kiểm tra dao động thì chú ấy chưa biết thì sẽ tìm hiểu được là cần những gì ạ, chắc chắn là khi hướng dẫn phần ấy các cô chú nào đó sẽ lưu ý cần loại sò công suất ra tránh cháy nổ rồi ạ....
                                  08-01-2025, 19:02
                                • tuyennhan
                                  Trả lời cho Sửa bộ nguồn DC 60V 45A
                                  bởi tuyennhan
                                  Chủ thớt hỏi có kiểm tra được dao động mà không cấp nguồn thì rõ trình ở mức nào mà mèo còn xúi ngâm cứu nữa ác vậy ....
                                  08-01-2025, 15:43
                                • tuyennhan
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi tuyennhan
                                  Loa bass đấu trực tiếp không qua phân tần để thành loa toàn dải xem có thoát tiếng khộng , nếu không thoát cần phải sửa lại mạch cs hay âm sắc nếu đủ trình còn nếu thoát ca hay nhưng chưa vừa ý vì bass kém chăc thì đấu lại như cũ và đấu thêm loa mid treble bên ngoài .
                                  08-01-2025, 15:28
                                • mèomướp
                                  Trả lời cho Cần tư vấn cải thiện chất âm thanh loa SoNy.
                                  bởi mèomướp
                                  Dạ loa tép bé xíu như ngón chân cái thôi ạ. Thiếu gì chỗ để đâu. Quan trọng là gắn thêm nó loa nghe ok hay ko thôi ạ...
                                  08-01-2025, 11:44
                                Đang tải...
                                X