📄 measure.lst
字号:
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 + -