Thông báo

Collapse
No announcement yet.

Newbie cùng làm USB2RF!

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

  • Newbie cùng làm USB2RF!

    Mình vừa làm xong layout cho thí nghiệm USB-RF>>Air>>RF-LCD+LEDs: dùng 18F4550 để mã hóa và giải mã. Post lên để các bác cùng tham gia thảo luận và phát triển. Sau đây là phần phát:

    Last edited by bravesoldier; 23-06-2011, 23:05.
    Manchester United FC forever!

  • #2
    Đây là phần thu:



    Last edited by bravesoldier; 23-06-2011, 23:14.
    Manchester United FC forever!

    Comment


    • #3
      3D đẹp quá ! hi hi !
      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


      • #4
        Bác à em còn gà lắm. Module TX11/RX11 của bác em mua lâu rồi mà chưa mần mò gì. Em hỏi tý: em còn 1 cái antenna rút của radio cũ gắn cho mạch có được không?
        Manchester United FC forever!

        Comment


        • #5
          Nguyên văn bởi bravesoldier Xem bài viết
          Bác à em còn gà lắm. Module TX11/RX11 của bác em mua lâu rồi mà chưa mần mò gì. Em hỏi tý: em còn 1 cái antenna rút của radio cũ gắn cho mạch có được không?
          được chứ , tốt quá còn gì .... dây điện cắm vào còn ngon nữa là !!! ( nhưng nhớ là nếu anten 1/4 bước sóng thì khoảng 23 - 24 cm thôi ).

          7500/ 315Mhz = 23,8 cm
          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


          • #6
            Mạch in:
            http://www.dientuvietnam.net/forums/...h-in-!/page35?
            Đây là hình ảnh 2 mạch sau khi hàn xong chờ lập trình:
            Manchester United FC forever!

            Comment


            • #7
              Mạch in này vừa thấy đặt bên X56 thì phải

              Comment


              • #8
                Pcb nha trang nhé. Còn nếu vừa thấy đặt ở X56 thì có "vấn đề" rồi...
                Đoạn code nạp cho PIC ở mạch phát cưỡng bức LED D9 ở mạch thu nhấp nháy sau khi set jumper phù hợp:
                Code:
                #include <18f4550.h>
                #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL2,CPUDIV1,VREGEN
                #device ADC=8
                #use delay(clock=48000000) 
                
                void main()
                {
                 while(true)
                  {   
                   output_high(pin_b0);
                   delay_ms(90);
                   output_low(pin_b0);
                   delay_ms(90);
                  }
                }
                Last edited by bravesoldier; 01-07-2011, 21:50.
                Manchester United FC forever!

                Comment


                • #9
                  Hì hục rồi bắt được 8 em LED D1-D8 chớp tắt theo bộ phát
                  Code:
                  #include <18f4550.h>
                  #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,PLL2,CPUDIV4,VREGEN
                  #use delay(clock=16000000) 
                  
                  #define RX pin_b0
                  #use fast_io(d)
                  #byte LEDx8=0xf8c // latch D
                  
                  void main()
                  {
                   set_tris_d(0x00);
                   while(true)
                    {
                     if (input(RX)==1)
                      LEDx8=0xFF; else LEDx8=0x00;
                    }
                  }
                  Em hì hục chuyển đổi code từ code Manchester mẫu của bác QD sang cho 2 em PIC18F4550 này mãi mà không được. Bác QD giúp em một tay nhé.
                  Manchester United FC forever!

                  Comment


                  • #10
                    Cụ thể là 3 lệnh NOP trong cấu trúc #asm ... có cần phải thay bằng 12 lệnh NOP không nếu delay của em là 16.000.000 thay vì 4.000.000 trong code mẫu ?
                    Manchester United FC forever!

                    Comment


                    • #11
                      Nguyên văn bởi bravesoldier Xem bài viết
                      Cụ thể là 3 lệnh NOP trong cấu trúc #asm ... có cần phải thay bằng 12 lệnh NOP không nếu delay của em là 16.000.000 thay vì 4.000.000 trong code mẫu ?
                      Bạn không cần phải thay đổi những chỗ này ( cái này gọi là có thôi )
                      ---
                      Muốn thu được thì chỉ cần đồng bộ chỗ timer 0 là được . Tuy nhiên bạn đã gặp trục trặc ??? Tôi đoán là đã khởi tạo mấy cái fuse và bạn đã bị nhầm.
                      Nếu tôi nhớ không nhầm thì con này ( PIC18F4550 ) chỉ đạt tối đa ở 12 MIPS ... và khi sử dụng PLL thì có tần số dao động là 48 Mhz , sau khi div 4 sẽ chỉ đạt 12 Mhz clock mà thôi .
                      Còn 96 Mhz là dùng cho USB ???

                      --- Thạch anh ngoài bạn dùng là bao nhiêu Mhz ??? ( 12 Mhz ??? )


                      ( Bạn có thể ngắt chức năng USB , thử thạch anh 4Mhz ... để test thử trước ... khi dùng với PLL của PIC ta set lại hệ số chia của Timer là được )
                      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


                      • #12
                        Thạch anh ngoài em dùng là 8MHz, theo ý bác em sẽ bỏ HSPLL để dùng HS để có 4MHz cấp cho CPU. Nhưng mà có một số lệnh mà code mẫu em lờ mờ không hiểu
                        Code:
                        GPIO=0x00;
                        TRIS=0B00001000;
                        OPTION=0x03;
                        vì em không biết HT-PIC C. Em đoán là set cho timer0 nhưng không biết chuyển tương đương sang CCS C như thế nào ^^!
                        Last edited by bravesoldier; 09-07-2011, 01:14.
                        Manchester United FC forever!

                        Comment


                        • #13
                          Nguyên văn bởi bravesoldier Xem bài viết
                          Thạch anh ngoài em dùng là 8MHz, theo ý bác em sẽ bỏ HSPLL để dùng HS để có 4MHz cấp cho CPU. Nhưng mà có một số lệnh mà code mẫu em lờ mờ không hiểu
                          Code:
                          GPIO=0x00;
                          TRIS=0B00001000;
                          OPTION=0x03;
                          vì em không biết HT-PIC C. Bác xem giúp ^^!
                          Bạn nên đọc datasheet của con PIC .

                          GPIO = Tương tự như PORTA , PORTB ..v.v. vì nó chẳng có port a , cũng chẳng có port b , port C ... mà chỉ có vài chân I/O GPIO

                          TRIS = tương tự như TRISA , TRISB ( trong CCS set_tris_x( value ) ; )

                          OPTION : thanh ghi này chứa các bit có liên quan đến bộ chia của timer 0

                          ( đọc datasheet của con PIC )
                          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


                          • #14
                            Bác xem em đoạn này nhé, cứ cho là em prescale đúng, delay đúng, em muốn hỏi là vị trí của lệnh set_timer0(0) có đúng không ạ?
                            Code:
                            int1 get_data(int8 *buff)
                            {
                             int8 i,j,T0,count;
                             
                             i=16;
                             count=0;
                             setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256|RTCC_8_BIT); // pre scaler = 256 for clock tick = 64us; T_delay=16384us
                             while(--i) // wait preamble
                              {
                               #asm
                                NOP
                                NOP
                                NOP
                               #endasm
                               while(input(RX));
                               set_timer0(0);
                               #asm
                                NOP
                                NOP
                                NOP
                               #endasm
                               while(!input(RX));
                               T0=get_timer0();
                               if (T0==0xFF) return 1; // error
                               if ((T0>=73) && (T0<=83)) // 
                                {
                                 count++;
                                 if ((count>=5) || (i==0)) break;
                                }
                              }
                             if (i==0) return 1; // error
                             setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // prescaler = 4 but mode16BIT  for clock tick = 256us; T_delay=65536us
                             T0=0;
                             while (!((T0>73) && (T0<83))) // 
                              {
                               #asm
                                NOP
                                NOP
                                NOP
                               #endasm
                               while(input(RX)); // wait syn
                               set_timer0(0);
                               #asm
                                NOP
                                NOP
                                NOP
                               #endasm
                               while(!input(RX));
                               T0=get_timer0();
                              }
                             while(input(RX)); //wait start bit go low
                             Delay_Us(7355); // 
                             for (j=0;j<3;j++)
                              {
                               i=8;
                               buff[j]=0;
                               while(i--)
                                {
                                 buff[j]=buff[j]<<1;
                                 rx_bit=input(RX); // sampling
                                 buff[j]=buff[j] | rx_bit;
                                 if (rx_bit==0)
                                  while(!input(RX));
                                 else
                                  while(input(RX));
                                 Delay_Us(7355);
                                }
                              }
                             if (rx_bit==0)
                              {if (!input(RX)) return 1;} // error (no stop bit found)
                             else
                              {if (!input(RX)) return 1;} // error (no stop bit found)
                             return 0;
                            }
                            Manchester United FC forever!

                            Comment


                            • #15
                              Em đoán là do em chuyển tương đương từ HT-PIC sang CCS còn bập bẹ nên sai rồi nhưng ko biết sửa sai ở đâu.
                              Manchester United FC forever!

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X