Thông báo

Collapse
No announcement yet.

PIC 16f887+module thu phat RF FSI000A,PCR1A

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

  • PIC 16f887+module thu phat RF FSI000A,PCR1A

    bác nào co kinh nghiệm về module thu phát này thì xin giúp em với.em loay hoay 2 ngày rồi mà vẫn không chạy được.
    đây là code được viết trong mikroC , nguồn từ 4room nay:
    http://www.mikroe.com/forum/viewtopi...23831&start=15

    code bên phát:

    // Manchester module connections
    //sbit MANRXPIN at RC0_bit;
    //sbit MANRXPIN_Direction at TRISC0_bit;
    sbit MANTXPIN at RC1_bit;
    sbit MANTXPIN_Direction at TRISC1_bit;
    // End Manchester module connections

    char index, character;
    char s1[] = "This is the test Data from Master Tx unit";
    char noise = 0;

    void main() {

    ANSEL = 0; // Configure AN pins as digital I/O
    ANSELH = 0;
    C1ON_bit = 0; // Disable comparators
    C2ON_bit = 0;
    TRISC.F2 = 0;
    TRISC.F3 = 0;
    PORTC.F2 = 0;
    PORTC.F3 = 0;
    Man_Send_Init(); // Initialize transmitter

    while (1) { // Endless loop

    for (noise = 0; noise <= 4; noise++){
    Man_Send(0x80);
    Delay_ms(100);
    Man_Send(0xCA);
    Delay_ms(100);
    }

    PORTC.F2 = 1; // Start byte sent indicator
    Man_Send(0xC3); // Send "start" byte
    Delay_ms(500); // Wait for a while

    character = s1[0]; // Take first char from string
    index = 0; // Initialize index variable
    while (character) { // String ends with zero
    PORTC.F3 = 1; // LCD data sending indicator
    Man_Send(character); // Send character
    Delay_ms(90); // Wait for a while
    index++; // Increment index variable
    character = s1[index]; // Take next char from string
    }
    Man_Send(0xCF); // Send "end" byte
    PORTC.F2 = 0; // Start byte sent indicator
    PORTC.F3 = 0; // LCD data sending indicator
    Delay_ms(2000);
    }
    }


    Đây là code bên nhận:

    // Manchester module connections Start
    sbit MANRXPIN at RC0_bit;
    sbit MANRXPIN_Direction at TRISC0_bit;
    sbit MANTXPIN at RC1_bit;
    sbit MANTXPIN_Direction at TRISC1_bit;
    // End Manchester module connections End

    unsigned char error = 0, ErrorCount = 0, temp = 0;

    void main() {

    ANSEL = 0; // Configure AN pins as digital I/O
    ANSELH = 0;
    C1ON_bit = 0; // Disable comparators
    C2ON_bit = 0;

    PORTC.F2 = 0; // Clear Start bit found indicator
    PORTC.F3 = 0; // Clear Update UART indicator
    TRISC.F2 = 0; // Set as output used for Start bit found indicator
    TRISC.F3 = 0; // Set as output used for Update UART indicator
    PORTC.F5 = 0;
    TRISC.F5 = 0;

    UART1_Init(19200);

    Man_Receive_Init(); // Initialize Receiver


    do{ // Rx Routine forever loop

    GET_BYTE:
    temp = Man_Receive(&error); // Attempt byte receive

    if (error) goto ERROR_BYTE; // if comm's error goto error handler
    goto START_BYTE; // if good byte Received goto start handler

    ERROR_BYTE:
    PORTC.F2 = 0; // Clear Start bit found indicator
    PORTC.F3 = 0; // Clear Update UART indicator

    UART1_Write_Text("ErrorByte count = "); // Write error and count to UART
    ErrorCount++; // Update error counter
    UART1_Write(ErrorCount+48);
    UART1_Write_Text("\n\r");
    if(ErrorCount > 5) goto RE_SYNC;
    goto GET_BYTE;

    START_BYTE:
    if (temp == 0xC3){ // "Start" byte value expected is 0xC3
    PORTC.F2 = 1; // Set Start bit found indicator
    // a valid Start Byte has been found
    goto DISPLAY_BYTE; // goto the Display routine
    }// Exit if
    goto NOISE_BYTE; // Valid data byte found is not a start byte
    // go to noise reporting loop

    DISPLAY_BYTE:
    if(temp == 0xCF) goto STOP_BYTE; // Valid Stop Byte found Exit

    UART1_Write_Text("Valid Data Found\n\r"); // Send Activity to UART


    while (1){ // loop to collect all valid data
    temp = Man_Receive(&error); // Attempt byte receive
    if (error) goto ERROR_BYTE; // if comm's error goto error handler
    if (temp == 0xCF)break; // Stop condition found Exit while loop
    PORTC.F3 = 1; // Set Update UART indicator
    UART1_Write(temp); // write received byte on UART
    }
    UART1_Write_Text("\n\r"); // new line + Carriage Return

    PORTC.F2 = 0; // Clear Start bit found indicator
    PORTC.F3 = 0; // Clear Update UART indicator
    goto STOP_BYTE; // Exit UART write loop

    NOISE_BYTE:
    UART1_Write_Text("Synchronized But Data Found is Noise = "); // Send Activity to UART
    UART1_Write(temp);
    UART1_Write_Text("\n\r");
    goto GET_BYTE; // Exit noise detect loop

    RE_SYNC:

    UART1_Write_Text("Synchronizing\n\r"); // Display Activity on 2nd Row
    delay_ms(50);
    temp = Man_Synchro(); // Try to synchronize again
    //Man_Receive_Init(); // Alternative, try to Initialize Receiver again
    ErrorCount = 0; // Reset error counter
    if (temp == 0xFF) goto RE_SYNC; // Sync failed try again
    goto GET_BYTE; // Sync complete start over again

    STOP_BYTE:
    if (temp == 0xCF){ // If "End" byte was received
    UART1_Write_Text("Valid Stop Found\n\r"); // Send Activity to UART
    delay_ms(100);
    }
    goto GET_BYTE; // start over again

    }while(1); // Rx Routine

    } // main



    code viết rất dễ hiểu.nhung không hiếu sao em chỉ nhận được dữ liệu đúng trong lần phát đầu tiên.cho dù em phát 1000 kí tự đi nữa tjì trong lần phát đầu tiên em cung nhận đúng 1000 kí tự,nhưng tói lần phát 2 thì không đúng nữa.

    và em không hiểu đoạn code này để làm gì

    for (noise = 0; noise <= 4; noise++){
    Man_Send(0x80);
    Delay_ms(100);
    Man_Send(0xCA);
    Delay_ms(100);
    }

    xin giúp em.thanks

  • #2
    mấy con ic thu va phat này ban mua ở đâu vậy
    Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
    Tel: 0903 702 417. Email: web:

    Comment

    Về tác giả

    Collapse

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

    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 nay, 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 nay, 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 nay, 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...
      Hôm qua, 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 ...
      Hôm qua, 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...
      Hôm qua, 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