measure.lst

来自「显示屏驱动源代码」· LST 代码 · 共 1,339 行 · 第 1/5 页

LST
1,339
字号
 507   3                              default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 508   3                      }
 509   2              }
 510   1              //====================== PC SVGA ===============================
 511   1              else if( vpn>=610 && vpn<=680+30 ) {
 512   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n=========== PC SVGA ================: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 515   2                      //InputSource = PC_SVGA;        
 516   2                      switch( ivf ) {
 517   3                              case 49: case 50: case 51: _PcMode = EE_RGB_576P;               break;
 518   3                      
 519   3                              case 55: case 56: case 57:      _PcMode = EE_SVGA_56;           break;
 520   3                              case 59: case 60: case 61: case 62: case 63: case 64:
 521   3                                                                                      _PcMode = EE_SVGA_60;           break;
 522   3                              case 69: case 70: case 71:      _PcMode = EE_SVGA_70;           break;
 523   3                          case 72: case 73:                   _PcMode = EE_SVGA_72;           break;
 524   3                              case 74: case 75: case 76:      _PcMode = EE_SVGA_75;           break;
 525   3      
 526   3                              case 83:
 527   3                              case 84: case 85: case 86:      _PcMode = EE_SVGA_85;           break;
 528   3                      
 529   3                              default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 530   3                      }
 531   2              }
 532   1      
 533   1              //====================== DTV 720P ==============================
 534   1              else if(vpn>=751-20 && vpn<=751+30) {
 535   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n============== DTV 720P ============: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 538   2                      if( ivf>=55 ) {
 539   3                              _PcMode = EE_RGB_720P;
 540   3                      }
 541   2                      else {
 542   3                              _PcMode = EE_RGB_720P50;
 543   3                      }
 544   2              }
 545   1              //====================== DTV 1080i =============================
 546   1              else if(vpn>=563-10 && vpn<=563+10) {
C51 COMPILER V7.06   MEASURE                                                               02/21/2008 14:00:27 PAGE 10  

 547   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n============ DTV 1080i =============: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 550   2                      if( ivf>=55 ) {
 551   3                              _PcMode = EE_RGB_1080I;
 552   3                      }
 553   2                      else {
 554   3                              _PcMode = EE_RGB_1080I50A;
 555   3                      }
 556   2              }
 557   1              //====================== DTV 480i ==============================
 558   1              else if(vpn>=264-40 && vpn<=264+35) {
 559   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n=========== DTV 480i ===============: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 562   2                      _PcMode = EE_RGB_480I;
 563   2              }
 564   1              //====================== DTV 576i ==============================
 565   1              else if(vpn>=314-14 && vpn<=314+50) {
 566   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n============ DTV 576i ==============: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 569   2                      _PcMode = EE_RGB_576I;
 570   2              }
 571   1      
 572   1              //====================== PC XGA ================================
 573   1              else if( vpn>=790 && vpn<=820 ) {
 574   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n============ PC XGA ===============: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 577   2                      //InputSource = PC_XGA; 
 578   2                      switch( ivf ) {
 579   3                      case 59: case 60: case 61:      _PcMode = EE_XGA_60;            break;
 580   3                      case 69: case 70: case 71:      _PcMode = EE_XGA_70;            break;
 581   3                               case 72: case 73:      _PcMode = EE_XGA_72;            break;
 582   3                      case 74: case 75: case 76:      _PcMode = EE_XGA_75;            break;
 583   3                      case 84: case 85: case 86:      _PcMode = EE_XGA_85;            break;
 584   3                      default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 585   3                      }
 586   2              }
 587   1              //====================== PC 1152x864 ===========================
 588   1              else if( vpn>=850 && vpn<=1000 ) {
 589   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n============ PC 1152x864 =========: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 592   2                      //InputSource = PC_SXGA;        
 593   2                      switch( ivf ) {
 594   3                      case 59: case 60: case 61:      _PcMode = EE_1152_60;           break;
 595   3                      case 69: case 70: case 71:      _PcMode = EE_1152_70;           break;
 596   3                      case 74: case 75: case 76:      _PcMode = EE_1152_75;           break;
 597   3                      default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 598   3                      }
 599   2              }
 600   1      
 601   1              //====================== PC SXGA ===============================
 602   1              else if( vpn>=1024 && vpn<=1600 ) {
 603   2                      #ifdef DEBUG_PC
                              dPrintf("\r\n============ PC SXGA =========: vpn:%4d, ivf:%4d", (WORD)vpn, (WORD)ivf);
                              #endif
 606   2                      //InputSource = PC_SXGA;        
 607   2                      switch( ivf ) {
 608   3                      case 59: case 60: case 61:      _PcMode = EE_SXGA_60;           break;
C51 COMPILER V7.06   MEASURE                                                               02/21/2008 14:00:27 PAGE 11  

 609   3                      case 69: case 70: case 71:      _PcMode = EE_SXGA_70;           break;
 610   3                      case 74: case 75: case 76:      _PcMode = EE_SXGA_75;           break;
 611   3                      default:                                        _PcMode = EE_PC_UNKNOWN;        break;
 612   3                      }
 613   2              }
 614   1      
 615   1              #ifdef DEBUG_PC
                      if( _PcMode == EE_PC_UNKNOWN )
                              dPrintf("\r\nUnknown Input-- VPN:%d IVF:%d", vpn, ivf);
                      else
                              dPrintf("\r\nInput VPN(%d) IVF(%d) :%d(%s)", vpn, ivf, (WORD)_PcMode, PcModeStr[_PcMode] );
                      #endif
 621   1      
 622   1              if( !PCMDATA[_PcMode].Support ) _PcMode = EE_PC_UNKNOWN;
 623   1      
 624   1              return _PcMode;
 625   1      }
 626          
 627          WORD ConvertBasedOnInput(WORD dat)
 628          {                                 
 629   1              DWORD   dtmp;
 630   1      
 631   1              if( IsBypassmode() ) return dat;                                // HHY 2.01
 632   1      
 633   1              dtmp = PCMDATA[PcMode].PPF*100000L/dat;                 // from PPF-based to IPF-based
 634   1              dtmp = PCMDATA[PcMode].IPF*100000L/dtmp;                // NewHPN = OldHPN * (IPF/PPF)
 635   1              return (WORD)dtmp;
 636   1      }
 637          
 638          //=============================================================================
 639          //                              Search ADC Clock with measuring Phase
 640          //=============================================================================
 641          #ifdef AUTO_TUNE_CLOCK
              WORD AutoTuneClock(void)
              {
                      WORD    low, high;      // Test value range of plldiv
                      WORD    i;
              //      BYTE    phase, phasepeak, j;
                      WORD    num, width;
              
                      #ifdef DEBUG_PC
                      dPrintf("\r\n---Tune-Coarse Mode=%d", (WORD)PcMode);
                      #endif
              
                      //------ Set Test Range, Divide Range more detail
              
                      low  = 10;
                      high = ConvertBasedOnInput( GetHPN() );
                      SetMeasureWindowH(low, high);                   //
              
                      low  = 1;
                      high = GetVPN() - 1;
                      SetMeasureWindowV(low, high);                   //
              
                      low  = PCMDATA[PcMode].low;
                      high = PCMDATA[PcMode].high;
              
                      #ifdef DEBUG_PC
                      dPrintf("\r\n===>>>>Get Divider Number=0x%4x to 0x%4x", (WORD)low, (WORD)high);
                      #endif
                      MeasureAndWait(3);
                      width = GetHend() - GetHstart() + 1;
C51 COMPILER V7.06   MEASURE                                                               02/21/2008 14:00:27 PAGE 12  

                      SetCoarse( low );
                      MeasureAndWait(3);
                      low = GetHend() - GetHstart() + 1;
                      SetCoarse( high );
                      MeasureAndWait(3);
                      high = GetHend() - GetHstart() + 1;
              
                      if(( low > width ) || ( width > high ) )        return 0;               // cannot adjustable in setting range...
              
                      for(i=PCMDATA[PcMode].low; i <= PCMDATA[PcMode].high; i+=4 ) {  // increment by 4
              
                              SetCoarse(i);
                              MeasureAndWait(3);
                              width = GetHend() - GetHstart() + 1;
                              if ( width >= PCMDATA[PcMode].HAN ) return (i);
                      }
                      return num;
              
              }
              #endif
 691          
 692          #ifdef AUTOTUNEPHASE
 693          //-----------------------------------------------------------------------------
 694          //              Final Set ADC [PLL div], [Phase]
 695          //-----------------------------------------------------------------------------
 696          void AutoTunePhase(void)
 697          {
 698   1              BYTE    i, j, peak_j;
 699   1      
 700   1              dPuts("\r\n-------------Tune-Fine");
 701   1      
 702   1              if( IsDTVInput() ) return;
 703   1      
 704   1              j = GetPhaseCurrent() - 8; //- 0x20;
 705   1      
 706   1              RGBPeak=0;
 707   1              for(i=0; i<9; i++, j+=0x02) {
 708   2      
 709   2                      j=j%0x1f;
 710   2                      SetPhase(j);                                            // if NO_INPUT stop
 711   2                      if( !GetPhaseRGB() ) return;            //
 712   2      
 713   2                      if(RGBPeak < PhaseRGB) {
 714   3                              RGBPeak = PhaseRGB;
 715   3                              peak_j = j;
 716   3                              dPuts("--peak");
 717   3                      } 
 718   2                      else {
 719   3                              dPuts("   ");
 720   3                      }
 721   2              }
 722   1              SetPhase(peak_j);
 723   1      }
 724          #endif
 725          
 726          //-----------------------------------------------------------------------------
 727          //                      Measure    VPN, HPN
 728          //                      Calculate  IVF, IHF
 729          //-----------------------------------------------------------------------------
 730          WORD GetHpnVpn(BYTE en)
 731          {
 732   1              WORD    vpn, hpn, sync; //hsync, vsync;
C51 COMPILER V7.06   MEASURE                                                               02/21/2008 14:00:27 PAGE 13  

 733   1              BYTE    SyncPol;
 734   1      
 735   1              en = DebugLevel;
 736   1              if( !en && DebugLevel )         DebugLevel = 0;
 737   1      
 738   1              #ifdef DEBUG_PC
                      dPuts("\r\n------ GetHpnVpn()");
                      #endif
 741   1              //----- Measurement Command -------------
 742   1      
 743   1              if( !MeasureAndWait(3) ) {                      // field any...
 744   2                      #ifdef DEBUG_PC
                              dPrintf(" Error at GetHpnVpn ");
                              #endif
 747   2                      DebugLevel = en;
 748   2                      return 0;
 749   2              }
 750   1      
 751   1              //----- Get VPN -------------------------
 752   1              vpn = GetVPN();                                 // VPN = V Period Num
 753   1              sync = GetVSYNCPulse();
 754   1      // in case of 8816 sync is same to vpn so I cannot use below....
 755   1              // Polarity check
 756   1              if( sync > (vpn/3) ) {
 757   2                      InvertVSYNCPolarity();
 758   2                      MeasureAndWait(3);
 759   2                      sync = GetVSYNCPulse();
 760   2                      #ifdef DEBUG_PC
                              dPrintf(" --->New VSYNC:%04x(%d)", sync, sync);
                              #endif
 763   2              }
 764   1              #ifdef DEBUG_PC
                      dPrintf("\r\n VPN:%04x(%d)  VSYNC:%04x(%d)", vpn, vpn, sync, sync);
                      dPrintf("\r\n IHF:%08lx(%ld)", IHF, IHF);

⌨️ 快捷键说明

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