⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 measure.lst

📁 此程序为twell8806驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 522   1      //#ifdef SUPPORT_DTV
 523   1      
 524   1              //====================== DTV 720P ==============================
 525   1              else if(vpn>=751-20 && vpn<=751+30) {
 526   2                      if( ivf>=55 ) {
 527   3                              if( GetInputSelection()==PC ) _PcMode = EE_RGB_720P;
 528   3                              else                                          _PcMode = EE_YPbPr_720P;
 529   3                      }
 530   2                      else {
 531   3                              if( GetInputSelection()==PC ) _PcMode = EE_RGB_720P50;
 532   3                              else                                          _PcMode = EE_YPbPr_720P50;
 533   3                      }
 534   2      
 535   2      
 536   2              }
 537   1              //====================== DTV 1080i =============================
 538   1              else if(vpn>=563-10 && vpn<=563+10) {
 539   2                      
 540   2                      if( ivf>=55 ) {
 541   3                              if( GetInputSelection()==PC ) _PcMode = EE_RGB_1080I;
 542   3                              else                                          _PcMode = EE_YPbPr_1080I;
 543   3                      }
 544   2                      else {
 545   3                              if( GetInputSelection()==PC ) _PcMode = EE_RGB_1080I50A;
 546   3                              else                                          _PcMode = EE_YPbPr_1080I50A;
 547   3                      }
 548   2      
 549   2              }
 550   1              //====================== DTV 480i ==============================
 551   1              else if(vpn>=264-40 && vpn<=264+35) {
C51 COMPILER V7.50   MEASURE                                                               08/20/2007 10:23:31 PAGE 10  

 552   2                      if( GetInputSelection()==PC ) _PcMode = EE_RGB_480I;
 553   2                      else                                          _PcMode = EE_YPbPr_480I;
 554   2              }
 555   1              //====================== DTV 576i ==============================
 556   1              else if(vpn>=314-14 && vpn<=314+50) {
 557   2                      if( GetInputSelection()==PC ) _PcMode = EE_RGB_576I;
 558   2                      else                                          _PcMode = EE_YPbPr_576I;
 559   2              }
 560   1      
 561   1      //#endif        // SUPPORT_DTV
 562   1      
 563   1              //====================== PC XGA ================================
 564   1              else if( vpn>=790 && vpn<=820 ) {
 565   2                      //InputSource = PC_XGA; 
 566   2                      switch( ivf ) {
 567   3                      case 59: case 60: case 61:      _PcMode = EE_XGA_60;            break;
 568   3                      case 69: case 70: case 71:      _PcMode = EE_XGA_70;            break;
 569   3                               case 72: case 73:      _PcMode = EE_XGA_72;            break;
 570   3                      case 74: case 75: case 76:      _PcMode = EE_XGA_75;            break;
 571   3                      case 84: case 85: case 86:      _PcMode = EE_XGA_85;            break;
 572   3                      default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 573   3                      }
 574   2              }
 575   1              //====================== PC 1152x864 ===========================
 576   1              else if( vpn>=850 && vpn<=1000 ) {
 577   2                      //InputSource = PC_SXGA;        
 578   2                      switch( ivf ) {
 579   3                      case 59: case 60: case 61:      _PcMode = EE_1152_60;           break;
 580   3                      case 69: case 70: case 71:      _PcMode = EE_1152_70;           break;
 581   3                      case 74: case 75: case 76:      _PcMode = EE_1152_75;           break;
 582   3                      default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 583   3                      }
 584   2              }
 585   1      
 586   1              //====================== PC SXGA ===============================
 587   1              else if( vpn>=1024 && vpn<=1600 ) {
 588   2                      //InputSource = PC_SXGA;        
 589   2                      switch( ivf ) {
 590   3                      case 59: case 60: case 61:      _PcMode = EE_SXGA_60;           break;
 591   3                      case 69: case 70: case 71:      _PcMode = EE_SXGA_70;           break;
 592   3                      case 74: case 75: case 76:      _PcMode = EE_SXGA_75;           break;
 593   3                      default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 594   3                      }
 595   2              }
 596   1      
 597   1              #ifdef DEBUG_PC
                      if( _PcMode == EE_PC_UNKNOWN )
                              ePrintf("\r\nUnknown Input:%d IVF:%d", vpn, ivf);
                      else
                              ePrintf("\r\nInput VPN(%d) IVF(%d) :%d(%s)", vpn, ivf, (WORD)_PcMode, PcModeStr[_PcMode] );
                      #endif
 603   1      
 604   1              if( !PCMDATA[_PcMode].Support ) _PcMode = EE_PC_UNKNOWN;
 605   1      
 606   1              return _PcMode;
 607   1      }
 608          
 609          WORD ConvertBasedOnInput(WORD dat)
 610          {
 611   1              DWORD   dtmp;
 612   1      
 613   1              if( IsBypassmode() ) return dat;                                // HHY 2.01
C51 COMPILER V7.50   MEASURE                                                               08/20/2007 10:23:31 PAGE 11  

 614   1      
 615   1              dtmp = PCMDATA[PcMode].PPF*100000L/dat;                 // from PPF-based to IPF-based
 616   1              dtmp = PCMDATA[PcMode].IPF*100000L/dtmp;                // NewHPN = OldHPN * (IPF/PPF)
 617   1              return (WORD)dtmp;
 618   1      }
 619          
 620          //=============================================================================
 621          //                              Search ADC Clock with measuring Phase
 622          //=============================================================================
 623          WORD AutoTuneClock(void)
 624          {
 625   1              WORD    low, high;      // Test value range of plldiv
 626   1              WORD    i;
 627   1              BYTE    phase, phasepeak, j;
 628   1              WORD    num;
 629   1      
 630   1              #ifdef DEBUG_PC3
                      dPrintf("\r\n---Tune-Coarse Mode=%d", (WORD)PcMode);
                      #endif
 633   1      
 634   1              //------ Set Test Range, Divide Range more detail
 635   1      
 636   1              low  = 10;
 637   1              high = ConvertBasedOnInput( GetHPN() );
 638   1              SetMeasureWindowH(low, high);                   //
 639   1      
 640   1              low  = 1;
 641   1              high = GetVPN() - 1;
 642   1              SetMeasureWindowV(low, high);                   //
 643   1      
 644   1              low  = PCMDATA[PcMode].low;
 645   1              high = PCMDATA[PcMode].high;
 646   1      
 647   1              i = IVF;
 648   1              num = GetHpnVpn(1);                                                             // Get vpn, IVF
 649   1              if( num==0 ) {
 650   2                      #ifdef DEBUG_PC2
                              dPrintf("\r\n  --> Error at GetHpnVpn() line:%d", __LINE__);
                              #endif
 653   2                      return 0;
 654   2              }
 655   1      
 656   1              #ifdef DEBUG_PC3
                      if( i != IVF ) dPrintf("\r\nIVF changed %d -> %d ****", i, IVF);
                      #endif
 659   1      
 660   1              SetVCORange( (DWORD)IVF * num * PCMDATA[PcMode].CLOCK );
 661   1      
 662   1              #ifdef DEBUG_PC2
                      dPrintf("\r\nRange:%04x to %04x\r\n", low, high);
                      #endif
 665   1      
 666   1              //#ifdef SUPPORT_DTV
 667   1              if( IsDTVInput() ) {
 668   2                      num = PCMDATA[PcMode].CLOCK;
 669   2                      SetCoarse( num );
 670   2                      //SetPhase(0);
 671   2                      return num;
 672   2              }
 673   1              //#endif
 674   1      
 675   1              //===== For the PLL div range, seek the Phase Peak =====
C51 COMPILER V7.50   MEASURE                                                               08/20/2007 10:23:31 PAGE 12  

 676   1              // if PLL div value is correct, phase RGB values are peak.
 677   1              
 678   1              RGBPeak=0;
 679   1              WriteADC(0xc1, 0x30);
 680   1      
 681   1              num = low;      // plldiv of new peak
 682   1              for(i=low; i <= high; ) {
 683   2      
 684   2                      SetCoarse(i);
 685   2      
 686   2                      for(j=0; j<8; j++) {
 687   3                              phase = (7-j)*4;                                        // HHY 1.10
 688   3                              SetPhase(phase);                                        // if NO_INPUT stop
 689   3                              if( !GetPhaseRGB() ) return 0;          //
 690   3      
 691   3                              if(RGBPeak < PhaseRGB) {
 692   4                                      RGBPeak = PhaseRGB;
 693   4                                      phasepeak = phase;
 694   4                                      num = i;
 695   4                                      dPuts(" -*"); 
 696   4                              } 
 697   3                              else {
 698   4                                      dPuts("   ");
 699   4                              }
 700   3                      }
 701   2      
 702   2                      if( Range4Coarse ) i++;
 703   2                      else if(PcMode>=EE_SXGA_60 || PcMode==EE_VGA_60)
 704   2                              i += 4;
 705   2                      else    
 706   2                              i += 8;
 707   2              }
 708   1      
 709   1              if( high!=low ) SetCoarse(num);         // set value of peak
 710   1              SetPhase(phasepeak);
 711   1              WriteADC(0xc1, 0x20);
 712   1              return num;
 713   1      
 714   1      }
 715          //-----------------------------------------------------------------------------
 716          //              Final Set ADC [PLL div], [Phase]
 717          //-----------------------------------------------------------------------------
 718          void AutoTunePhase(void)
 719          {
 720   1              BYTE    i, j, peak_j;
 721   1      
 722   1              dPuts("\r\n-------------Tune-Fine");
 723   1      
 724   1              if( IsDTVInput() ) return;
 725   1      
 726   1              j = GetPhaseCurrent() - 8; //- 0x20;
 727   1      
 728   1              RGBPeak=0;
 729   1              for(i=0; i<9; i++, j+=0x02) {
 730   2      
 731   2                      j=j%0x1f;
 732   2                      SetPhase(j);                                            // if NO_INPUT stop
 733   2                      if( !GetPhaseRGB() ) return;            //
 734   2      
 735   2                      if(RGBPeak < PhaseRGB) {
 736   3                              RGBPeak = PhaseRGB;
 737   3                              peak_j = j;
C51 COMPILER V7.50   MEASURE                                                               08/20/2007 10:23:31 PAGE 13  

 738   3                              dPuts("--peak");
 739   3                      } 
 740   2                      else {
 741   3                              dPuts("   ");
 742   3                      }
 743   2              }
 744   1              SetPhase(peak_j);
 745   1      }
 746          
 747          //-----------------------------------------------------------------------------
 748          //                      Measure    VPN, HPN
 749          //                      Calculate  IVF, IHF
 750          //-----------------------------------------------------------------------------
 751          WORD GetHpnVpn(BYTE en)
 752          {
 753   1              WORD    vpn, hpn, sync; //hsync, vsync;
 754   1      
 755   1              if( !en && DebugLevel ) {
 756   2                      en = DebugLevel;
 757   2                      DebugLevel = 0;
 758   2              }
 759   1              else
 760   1                      en = DebugLevel;
 761   1      
 762   1              #ifdef DEBUG_PC
                      dPuts("\r\n------ GetHpnVpn()");
                      dPrintf("\r\n PPF = %ld", GetPPF() );
                      #endif
 766   1              //----- Measurement Command -------------
 767   1      
 768   1              if( !MeasureAndWait(3) ) {
 769   2                      #ifdef DEBUG_PC
                              dPrintf(" Error at GetHpnVpn ");
                              #endif
 772   2                      DebugLevel = en;
 773   2                      return 0;
 774   2              }
 775   1      
 776   1              //----- Get VPN -------------------------
 777   1              vpn = GetVPN();                                         // VPN = V Period Num
 778   1              sync = GetVSYNCPulse();                 // Vsync Pulse Width = VSYNC interval
 779   1      
 780   1              #ifdef DEBUG_PC
                      dPrintf("\r\nVPN:%04x(%d)  VSYNC:%04x(%d)", vpn, vpn, sync, sync);
                      #endif
 783   1      
 784   1              // Polarity check
 785   1              if( sync > (vpn/3) ) {
 786   2                      InvertVSYNCPolarity();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -