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 + -
显示快捷键?