Thông báo

Collapse
No announcement yet.

PIC16F877A with RF-RS232(Quế Dương)

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

  • PIC16F877A with RF-RS232(Quế Dương)

    Tui vừa mua Modul RF-RS232 của bác quế dương về ,khi test tui sử dụng PIC16F877A để truyền 1 xâu kí tự lên(Baud=2400) sau đó dùng Tool Serial Port Monitor trong CCS 4.0 để xem thì thấy các kí tự bị lỗi font .Tui nghĩ mình không sử dụng được các hàm hỗ trợ RS232 trong CCS mà phải tự xây dựng mới truyền đúng được .Bác nào đã làm với Modul này rồi chỉ giáo giúp với ,làm sao có thể truyền một xâu kí tự chuẩn xác lên được ,cảm ơn nhiều!
    code :
    #INCLUDE<16F877A.H>
    #FUSES NOWDT,PUT,HS,NOPROTECT,NOBROWNOUT,NOLVP
    #USE DELAY(CLOCK=10M)
    #USE RS232(BAUD=2400,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7)
    #USE FAST_IO(A)
    #USE FAST_IO(B)
    #USE FAST_IO(C)
    #USE FAST_IO(D)
    #USE FAST_IO(E)
    #BYTE PORTA=0x05
    #BYTE PORTB=0x06
    #BYTE PORTC=0x07
    #BYTE PORTD=0x08
    #BYTE PORTE=0x09




    //====================****Main****================== ======
    VOID MAIN()
    {
    SET_TRIS_A(255);
    SET_TRIS_B(255);
    SET_TRIS_C(0xA0);
    SET_TRIS_D(0);
    SET_TRIS_E(255);
    PORTC=255;
    WHILE(1)
    {
    PRINTF("hello");
    DELAY_MS(1000);
    }
    }

  • #2
    Nguyên văn bởi trongnghia85 Xem bài viết
    Tui vừa mua Modul RF-RS232 của bác quế dương về ,khi test tui sử dụng PIC16F877A để truyền 1 xâu kí tự lên(Baud=2400) sau đó dùng Tool Serial Port Monitor trong CCS 4.0 để xem thì thấy các kí tự bị lỗi font .Tui nghĩ mình không sử dụng được các hàm hỗ trợ RS232 trong CCS mà phải tự xây dựng mới truyền đúng được .Bác nào đã làm với Modul này rồi chỉ giáo giúp với ,làm sao có thể truyền một xâu kí tự chuẩn xác lên được ,cảm ơn nhiều!
    code :
    #INCLUDE<16F877A.H>
    #FUSES NOWDT,PUT,HS,NOPROTECT,NOBROWNOUT,NOLVP
    #USE DELAY(CLOCK=10M)
    #USE RS232(BAUD=2400,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7)
    #USE FAST_IO(A)
    #USE FAST_IO(B)
    #USE FAST_IO(C)
    #USE FAST_IO(D)
    #USE FAST_IO(E)
    #BYTE PORTA=0x05
    #BYTE PORTB=0x06
    #BYTE PORTC=0x07
    #BYTE PORTD=0x08
    #BYTE PORTE=0x09




    //====================****Main****================== ======
    VOID MAIN()
    {
    SET_TRIS_A(255);
    SET_TRIS_B(255);
    SET_TRIS_C(0xA0);
    SET_TRIS_D(0);
    SET_TRIS_E(255);
    PORTC=255;
    WHILE(1)
    {
    PRINTF("hello");
    DELAY_MS(1000);
    }
    }

    Bạn truyền ký tự lên thì bạn phải biết mã của ký tự !!! VD chữ a =61 hay 0x61 gì đấy ( tra bảng mã ASCII vì lâu không nhớ rõ) .

    Tôi không biết CCS có hỗ trợ đổi từ ký tự sang mã code của ASCII hay không

    --- Chứ bạn truyền chữ hello ... thì máy tính nó cũng chẳng hiểu là bạn truyền cái chữ gì cho nó nên bị lỗi font .

    --- nếu cần hướng dẫn thêm bạn gửi email hoặc nhắn vào nick trên diễn đàn cho tôi . cái này rất đơn giản .
    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

    Comment


    • #3
      Nguyên văn bởi queduong Xem bài viết
      Bạn truyền ký tự lên thì bạn phải biết mã của ký tự !!! VD chữ a =61 hay 0x61 gì đấy ( tra bảng mã ASCII vì lâu không nhớ rõ) .

      Tôi không biết CCS có hỗ trợ đổi từ ký tự sang mã code của ASCII hay không

      --- Chứ bạn truyền chữ hello ... thì máy tính nó cũng chẳng hiểu là bạn truyền cái chữ gì cho nó nên bị lỗi font .

      --- nếu cần hướng dẫn thêm bạn gửi email hoặc nhắn vào nick trên diễn đàn cho tôi . cái này rất đơn giản .
      Hàm printf trong CCS đã hỗ trợ việc chuyển các kí tự sang mã ASCII rồi mà ,nếu giao tiếp trực tiếp giữa PIC16F877A và máy tính bằng cách nối trực tiếp qua cổng COM mà không qua RF-RS232 thì code dưới hoàn toàn ok ,trên máy tính hiển thị dòng chữ hello đều đặn .Nhưng khi qua modul RF thì font bị lỗi ,anh hướng dẫn cụ thể cho em cách gửi kí tự lên được không ,có code minh họa thì tốt quá ,em đọc code anh hỗ trợ trên website không hiểu rõ lắm ,cái em cần nhất là gửi 1 xâu kí tự lên và máy tính hiển thị đúng là ok ,anh giúp em nhé ,cảm ơn!

      Comment


      • #4
        Hàm printf trong CCS đã hỗ trợ việc chuyển các kí tự sang mã ASCII rồi mà ,nếu giao tiếp trực tiếp giữa PIC16F877A và máy tính bằng cách nối trực tiếp qua cổng COM mà không quaRF-RS232 thì code dưới hoàn toàn ok ,trên máy tính hiển thị dòng chữ hello đều đặn .Nhưng khi qua modul RF thì font bị lỗi ,anh hướng dẫn cụ thể cho em cách gửi kí tự lên được không ,có code minh họa thì tốt quá ,em đọc code anh hỗ trợ trên website không hiểu rõ lắm ,cái em cần nhất là gửi 1 xâu kí tự lên và máy tính hiển thị đúng là ok ,anh giúp em nhé ,cảm ơn!
        Cài này nó không phải lỗi font mà do sai tốc độ baudrate nên khi truyền nhận bị sai, do đó không thể hiển thị đúng ký tự. Tôi không có module này để test nên ko rõ thực hư ra sao. Cấu hình phần cứng của bạn có phải là:
        PIC877 <-> RF-232 Module ~Air~ RF-232 Module <-> PC

        Bạn xem lại kỹ phần chọn tốc độ baudrate giữa module RF với PIC và PC xem đã đồng bộ chưa. Chúc thành công.
        ps: mà sao không thấy anh Dương quảng cáo về module này nhỉ?
        Ethernet-RS232, PIC Webserver, RFID Reader
        CallerID, Cảnh báo BTS, ...
        0988006696
        linhnc308@gmail.com
        http://linhnc308.blogspot.com

        Comment


        • #5
          Đây có thể sai tốc độ bit hay bạn truyền xa quá nên thu bị lỗi.
          QD cho giá và thông số kỹ thuật để một số anh em đang cần đỡ phải làm nhé.
          Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

          Biến tần
          Máy giặt
          Lò vi sóng
          Bếp từ.
          Tủ lạnh.
          Điều hòa

          Comment


          • #6
            Nhưng QD xem thử nhé. Bộ RF này config ở 2400 hay có thể tốc độ khác mà không thấy mục này. Thường thì phải đặt tốc độ của RF chứ. các chipset cho RF để truyền PQSK, FSK vv phải thiết lập air baud rate. cái này khác với RS232 baud rate.
            Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

            Biến tần
            Máy giặt
            Lò vi sóng
            Bếp từ.
            Tủ lạnh.
            Điều hòa

            Comment


            • #7
              Quế Dương có 2 loại bộ sản phẩm này . một loại sử dụng chip của hãng RFM có băng tần 433 và (433.92) MHz , nguồn điện 12V có công suất phát xạ 1W
              Truyền bán song công tốc độ max 66kbps (NZR) 33k manchester.
              ( Loại này chưa bao giờ bán ra thì trường , chỉ cung cấp cho 1 đơn vị duy nhất )

              --- Một bộ khác được ứng dụng trên cặp module thu phát OOK đơn giản sử dụng module thu như RX08
              Bộ này là bản demo, vẫn được cung cấp từ rất lâu cho các anh em sinh viên .

              Hoạt động ở tần số 315Mhz , điện áp 9-->12V .

              Module này hỗ trợ điều khiển , truyền data tốc độ thấp 1 chiều từ PC đến PC hoặc từ PC đến MCU

              --- Tốc độ của mạch không phải là tốc độ của RS232 .

              Vì thực tế có thể dùng giao tiếp bắt tay RS232 kết nối 9600 ... đưa vào buffer rồi truyền qua mạch RF ở 2400.

              --- Lúc này tốc độ thực là tốc độ của RF (2400) chứ không phải là của RS232

              --- Ở bản demo này Quế Dương đã cung cấp mã nguồn để các sinh viên có thể ... tự khai thác thêm ( nếu cần thiết )

              +++ Đây là hình ảnh của nó :


              đây là mã nguồn C : viết trên Hitech PIC
              http://qde.sitesled.com/downloads/free_firmware.rar

              mạch sử dụng pic12F683
              --- Với mạch RF ASk kiểu này , tốc độ là tốc độ của mạch RF , tốc độ mạch RF lại phụ thuộc vào cách mã hóa/ giải mã ( chu kỳ xung ) với PWM .
              tốc độ này chẳng phụ thuộc gì vào tốc độ của cổng Com .

              Phụ thuộc vào độ dài ngắn chuỗi dữ liệu , độ rộng xung mã hóa .

              //////////////////////////////////////////////////////////////////////////////////////
              Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

              Comment


              • #8
                Em cũng nghĩ là do tốc độ Baud chưa đúng nên mới xảy ra hiện tượng trên nhưng vì theo tài liệu cung cấp thì tốc độ Air Baud của modul RF là 2400 chính là tốc độ truyền thực còn tốc độ giao tiếp RS232 có thể lên 9600....Để yên tâm em đã truyền tốc độ Baud RS232 = tốc độ Air Baud cho chắc nhưng vẫn lỗi Font .Em sẽ thử nối trực tiếp chân 7 của con 12F683 với chân Tx của con F877A theo hướng dẫn của anh Dương(không qua Max232) xem sao ,cảm ơn !

                Comment


                • #9
                  Truyền bán song công tốc độ max 66kbps (NZR) 33k manchester.
                  NRZ chứ, nhưng k sao.
                  Nhưng. Lại nhưng thường thì NRZ sẽ có tốc độ chậm hơn Man chứ nhỉ ( cùng một môi trường và công suất phát, độ nhạy thu)
                  Chứ k thì sinh ra mã để làm gì?
                  QD xem có nhầm k nhé.
                  Mấy chipset đó tài liệu là vậy nhưng không được vậy. MinhHa nộp học phí cho mấy loại chipset đó rồi.
                  Chỉ có thằng chuyên làm chipset RF như conecxant là nói thế nào thì thực tế là thế.
                  chứ 33 hay 66kbps mà truyền với lưu lượng đó thì nó toi ngay.
                  1. Chiều dài gói tin là bao nhiêu?
                  2. Thời gian chuyển từ thu sang phát và ngược lại là bao nhiêu?
                  ví dụ trong 1h nó truyền qua lại được bao nhiêu bit thì mới tính chứ chỉ tính tốc độ cực đại thì k có ý nghĩa lắm.
                  Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

                  Biến tần
                  Máy giặt
                  Lò vi sóng
                  Bếp từ.
                  Tủ lạnh.
                  Điều hòa

                  Comment


                  • #10
                    Nguyên văn bởi MinhHa Xem bài viết
                    NRZ chứ, nhưng k sao.
                    Nhưng. Lại nhưng thường thì NRZ sẽ có tốc độ chậm hơn Man chứ nhỉ ( cùng một môi trường và công suất phát, độ nhạy thu)
                    Chứ k thì sinh ra mã để làm gì?
                    QD xem có nhầm k nhé.
                    Mấy chipset đó tài liệu là vậy nhưng không được vậy. MinhHa nộp học phí cho mấy loại chipset đó rồi.
                    Chỉ có thằng chuyên làm chipset RF như conecxant là nói thế nào thì thực tế là thế.
                    chứ 33 hay 66kbps mà truyền với lưu lượng đó thì nó toi ngay.
                    1. Chiều dài gói tin là bao nhiêu?
                    2. Thời gian chuyển từ thu sang phát và ngược lại là bao nhiêu?
                    ví dụ trong 1h nó truyền qua lại được bao nhiêu bit thì mới tính chứ chỉ tính tốc độ cực đại thì k có ý nghĩa lắm.
                    Hình như bác nhầm lẫn . Manchester lúc nào cũng chậm 1/2 so với NRZ

                    Còn việc mã thì nó an toàn ( thực chất không an toàn hơn NRZ mà ta streaming packet ) ...

                    Nhưng manchester thì có lợi điểm rất tốt trong các máy thu điều xung , ook , hay logic Vì khi truyền ở khoảng cách xa , độ rộng xung có thể bị co dãn , méo dạng ít nhiều do nhiều yếu tố ... và MAn chỉ bắt ở đoạn giữa xung làm mốc so sánh nên rất ưu việt .

                    --- Còn ở khoảng cách ngắn đòi hỏi độ tin cậy cao ... thì Manchester không phải là sự lựa chọn mà thay vào đó là PWM .

                    PWM thì chậm hơn Man nhưng đã kiểm định tín hiệu là chuẩn xác hơn Man.

                    ---

                    Trên thực tế có nhiều cách để đóng gói cho các module cấp thấp ( những module cấp cao ra thẳng tín hiệu 1, 0 thì không bàn tới ( vì bên trong cũng đã tích hợp phần mã/giải mã )

                    ---
                    Ta có thể dùng trực tiếp đóng gói ( packet ) với UART của các MCU , lúc này tốc độ sẽ nhanh hơn mã hóa Manchester .


                    VD :
                    UART_send(0xAA);
                    UART_send(0xAA);
                    UART_send(0xAA); // Chuẩn bị
                    UART_send(0x18); // ID
                    checksum+=0x18;
                    UART_send(data1);
                    checksum+=data1;
                    -------- v.v
                    UART_send(checksum);


                    --- Bên thu sẽ kiểm tra ID trong RX buffer , kiểm tra checksum ( gói ) ===> các dữ liệu .

                    --------
                    Em chưa thử truyền ở tốc độ cực đại

                    Em sử dụng gói truyền 32 bytes (256 bits/ 1 lần) , mã hóa manchester , độ rộng xung là 50uS , thời gian chuyển mạch (Thu/Phát ) 400uS

                    thời gian mất khoảng 26ms

                    Chưa thử đóng gói lớn hơn .

                    --- Với những module ASK , OOK , FSK chỉ cần biết đầu vào , đầu ra hỗ trợ xung đến bao nhiêu KHz là ta có thể đoán được nó chạy ở tốc độ tối đa có thể là bao nhiêu .
                    Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com

                    Comment


                    • #11
                      Tui đã khắc phục được việc truyền lỗi Font rồi nhưng lại gặp rắc rối khi truyền 1 xâu lên thì thường xuyên bị mất kí tự mặc dù đã delay 200ms cho 1 lần truyền 1 kí tự .Bác nào có giải pháp khắc phục việc truyền bị xót kí tự hoặc giảm xác suất xảy ra việc đo thôi thì chỉ giúp với .
                      Last edited by trongnghia85; 13-08-2008, 12:47.

                      Comment


                      • #12
                        không đủ buffer trong con PIC gì đó của QD nên sinh ra lỗi này.
                        Khắc phục.
                        Truyền xâu có chiều dài bé thôi ( bao nhiêu phải hỏi QD)
                        Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

                        Biến tần
                        Máy giặt
                        Lò vi sóng
                        Bếp từ.
                        Tủ lạnh.
                        Điều hòa

                        Comment


                        • #13
                          QD nói chưa ổn.
                          Tốc độ là phải nói đến air speed chứ không phải là MCU thực hiện nhanh hay chậm.
                          Với NRZ tức là có thế nào truyền thế sẽ xảy ra phân bố năng lượng không đều. Dẫn tới bộ AGC không đáp ứng được với tốc độ cao. Khi data chỉ toán là 1 hay 0.
                          MAN sẽ phân bố năng lượng đều hơn ( chưa phải tốt nhất)
                          Nhưng càng mã hóa phức tạp thì càng truyền xa hơn song thực hiện khó hơn.
                          Nhà sản xuất chuyên nghiệp các sản phẩm OEM cho gia dụng và công nghiệp.

                          Biến tần
                          Máy giặt
                          Lò vi sóng
                          Bếp từ.
                          Tủ lạnh.
                          Điều hòa

                          Comment


                          • #14
                            rf-rs232

                            E đang nghiên cứu truyền thông RS232,viết chương trình bằng ngôn ngữ C trong phần mềm CCS.Nhưng có mấy lệnh mà e chưa hiểu lắm.Bác nào làm ơn giải thích dùm em.Thanks các bác nhiều.Nếu có tài liệu thì post lên cho e nhé.
                            Những lệnh này trong tài liệu chưa giải thích rõ:các hàm truyền thông với PC qua cổng Com như getc(),gets)),putc(),put(),putchar()....

                            Comment


                            • #15
                              Theo mình hiểu nôm na thì thế này:

                              x=getc(); là nhận một kí tự được bắn xuống pic và gán giá trị đó cho x

                              gets(string); là bạn nhận từng kí tự trong chuỗi data bắn xuống pic rồi nhét vào mảng string (đã được khai báo)

                              putc(data); hay putchar(data); trong đó data là dạng charactor 8bit, sẽ gửi một kí tự 8 bit tử pic lên pc

                              put(); ko biết chăc ý bạn là puts(string); là gửi một mảng kí tự hay một xâu lên pc thôi.

                              Bạn đọc tài liệu nào mà lại chưa giải thích rõ vậy
                              Mình chắc chắn là ccs_c_manual đã giải thích rất kĩ và có ví dụ các hàm này

                              http://www.ccsinfo.com/downloads/ccs_c_manual.pdf

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X