?? scaler.lst
字號:
279 1 #if PanelInterface == TCON_TO_RSDS || PanelInterface == TCON_TO_TTL
if(PanelInterface == TCON_TO_RSDS || PanelInterface == TCON_TO_TTL)
{
WriteIIC563(0x0FF,0x02); // page2 enable
#if PRINT_MESSAGE
printf("TCON Init\r\n");
#endif
for(i=0; i<0x70; i=i+16)
WritePage563(i,i,TCON_Tab);
for(i=0x70; i<0x7b; i++)
WriteIIC(SCALER_ADDR,i,TCON_Tab[i]);
for(i=0x80; i<0xa0; i=i+16)
WritePage563(i,i,TCON_Tab);
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 6
WriteIIC563(0x0FF,0x00); // page1 disable
WriteIIC563(0x2d0,0xb5); // Deflicker control
}
#endif
298 1
299 1 #if Panel_Spread_Spect_En == 0xff
300 1 i = (PanelSpreadSpectrumCtrl << 1) | BIT_0;
301 1 WriteIIC563(0x0f5,i);
302 1 #endif
303 1 }
304
305 #if PanelInterface == TCON_TO_RSDS || PanelInterface == TCON_TO_TTL
void WritePage563(unsigned char addr1,unsigned char addr2,unsigned char *p)
{
unsigned char i,ch;
IIC_Start();
IIC_Tx(SCALER_ADDR);
IIC_Tx(addr1);
for(i=0; i<16; i++){
ch = p[addr2 + i];
IIC_Tx(ch);
}
IIC_Stop();
}
#endif
319
320 #if PanelInterface == TCON_TO_RSDS || PanelInterface == TCON_TO_TTL
void WritePage563(unsigned char addr1,unsigned char addr2,unsigned char *p)
{
unsigned char i,ch;
IIC_Start();
IIC_Tx(SCALER_ADDR);
IIC_Tx(addr1);
for(i=0; i<16; i++){
ch = p[addr2 + i];
IIC_Tx(ch);
}
IIC_Stop();
}
#endif
334
335 void SetADC_Phase(void)
336 {
337 1 WriteIIC563(0x0d9,FuncBuf[pPHASE]);
338 1 #if PRINT_MESSAGE
printf("Phase = %d\r\n",(unsigned short)FuncBuf[pPHASE]);
#endif
341 1 }
342
343 void CheckFreqRange(Byte Pixel)
344 {
345 1 OutOfRange = 0;
346 1 if((H_SYNC > H_Max)||(H_SYNC < H_Min))
347 1 //OutOfRange = 1;
348 1 OutOfRange = 2; // Jacky 0918
349 1 if((V_SYNC > V_Max)||(V_SYNC < V_Min))
350 1 //OutOfRange = 1;
351 1 OutOfRange = 2; // Jacky 0918
352 1 // if((H_SYNC > H_HI)||(H_SYNC < H_LO))
353 1 // OutOfRange = 2;
354 1 // if((V_SYNC > V_HI)||(V_SYNC < V_LO))
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 7
355 1 // OutOfRange = 2;
356 1 // if(Vresolution == 960)
357 1 // OutOfRange = 2;
358 1 #ifdef X21
if((Pixel > P_Max) || (Hresolution > 1600))
//if((Pixel > P_Max) || (Hresolution > 1280))
#endif
362 1 #ifdef X19
if((Pixel > P_Max) || (Hresolution > 1280))
#endif
365 1 #ifdef X17
366 1 if((Pixel > P_Max) || (Hresolution > 1280))
367 1 //if(Pixel > P_Max)
368 1 #endif
369 1 #ifdef X15
if((Pixel > P_Max) || (Hresolution > 1280))
#endif
372 1 OutOfRange = 2;
373 1 }
374 #if 1
375 void SetADC_PLL(void)
376 {
377 1 Byte code DpllSeqTab[4]={100,50,20,0};
378 1 unsigned long PixelRate, LineCounter;//,H_Counter
379 1 Byte ch,k;
380 1 float temp;
381 1
382 1 PixelRate = ((unsigned long)FuncBuf[pCLOCK] * H_SYNC)/10000;
383 1 ch = (unsigned char)PixelRate;
384 1 WriteIIC563(0x0d0,0x23);
385 1 CheckFreqRange(ch);
386 1 //----------------------------------
387 1 if(ForceToBack == 0){
388 2 k = ReadIIC563(0x0d1);
389 2 k &= 0x03;
390 2 }
391 1 else{
392 2 for(k=0;k<4;k++)
393 2 if(ch > DpllSeqTab[k])
394 2 break;
395 2 WriteIIC563(0x0d1,0x10+k);
396 2 }
397 1 #if PRINT_MESSAGE
printf("Htotal = %d\r\n",FuncBuf[pCLOCK]);
printf("PixelRate = %d MHz\r\n",(unsigned short)PixelRate);
#endif
401 1 //WriteIIC563(0x0d6,0xa0);
402 1 WriteIIC563(0x0d6,0xc0);
403 1 // if(H_SYNC < 240){
404 1 WriteIIC563(0x0db,0x0c);
405 1 LineCounter = 4096; //
406 1 // }
407 1 // else if(H_SYNC < 480){
408 1 // WriteIIC563(0x0db,0x0d);
409 1 // LineCounter = 8192;
410 1 // }
411 1 // else{
412 1 // WriteIIC563(0x0db,0x0e);
413 1 // LineCounter = 16384;
414 1 // }
415 1 if(SyncMode == 3) //DVI
416 1 {
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 8
417 2 ch = ReadIIC563(0x102);
418 2 WriteIIC563(0x102,ch|BIT_5);
419 2 Sleep(5);
420 2 WriteIIC563(0x102,ch);
421 2 //Sleep(20);
422 2 }
423 1
424 1 if(ForceToBack != 0)
425 1 {
426 2 WriteIIC563(0x0d5,0x01);
427 2 H_Counter = 0;
428 2 if(SyncMode == 3 && (ReadIIC563(0x19a) & BIT_3) ==0x00 ){ // Jacky 20050916 for DVI DEmode, and H non-pr
-esent
429 3 PixelRate = ReadWordIIC563(0x19b) & 0x1fff;
430 3 if((PixelRate == 0x1fff)||(PixelRate == 0)){
431 4 H_SYNC_Temp = 0xffff;
432 4 }
433 3 else{
434 4 H_Counter = PixelRate * 512;
435 4 }
436 3 }
437 2 else{
438 3 LocalTimer = 25;
439 3 while(LocalTimer > 0)
440 3 {
441 4 ch = ReadIIC563(0x0df) & 0x3f;
442 4 PixelRate = ch;
443 4 PixelRate <<= 8;
444 4 ch = ReadIIC563(0x0de);
445 4 PixelRate += ch;
446 4 PixelRate <<= 8;
447 4 ch = ReadIIC563(0x0dd);
448 4 PixelRate += ch;
449 4 if(abs(PixelRate - H_Counter) > 2)
450 4 {
451 5 H_Counter = PixelRate;
452 5 LocalTimer = 25;
453 5 }
454 4 if(DetectBacklight()) //waiting for pll stable
455 4 break;
456 4 }
457 3 }
458 2
459 2 //temp = ((float)FuncBuf[pCLOCK] * 536870912) / PixelRate;
460 2 temp = ((float)FuncBuf[pCLOCK] * 131072 * LineCounter) / PixelRate;
461 2 PixelRate = temp;
462 2 #if PRINT_MESSAGE
printf("DSS = %x %x\r\n",(unsigned short)(PixelRate>>16),(unsigned short)PixelRate);
#endif
465 2 for(k; k>0; k--)
466 2 PixelRate <<= 1;
467 2 WriteIIC563(0x0d2,(unsigned char)PixelRate);
468 2 WriteIIC563(0x0d3,(unsigned char)(PixelRate>>8));
469 2 WriteIIC563(0x0d4,(unsigned char)(PixelRate>>16));
470 2 }
471 1
472 1 WriteIIC563(0x0d7,(Byte)FuncBuf[pCLOCK]);
473 1 WriteIIC563(0x0d8,(Byte)(FuncBuf[pCLOCK]>>8));
474 1 if((SyncMode == 1)||(SyncMode == 2)||(SyncMode == 5)||(SyncMode == 6)){ //H+V SOG
475 2 WriteIIC563(0x0d5,0x09);
476 2 }
477 1 else{
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 9
478 2 #if 0
if((HV_Pol & BIT_4) == 0)
WriteIIC563(0x0d5,0x03&(~BIT_3));
else
WriteIIC563(0x0d5,0x03|BIT_3);
#else
484 2 WriteIIC563(0x0d5,0x0b);
485 2 #endif
486 2 }
487 1 }
488 #else
void SetADC_PLL(void)
{
//Byte code PixelTab[]={40,64,106,200};
Byte code DpllSeqTab[4]={100,50,20,0};
unsigned long PixelRate,H_Counter;
//Word addr;
Byte ch,k;
float temp;
/*
if(SyncMode > 0) //composite & SOG mode
{
PixelRate = ((unsigned long)FuncBuf[pCLOCK] * H_SYNC)/10000;
addr = FuncBuf[pCLOCK] - 1;
WriteIIC563(0x00b,(unsigned char)addr); //pll msb
ch = addr >> 8;
WriteIIC563(0x00a,ch); //pll lsb
ch = (unsigned char)PixelRate;
CheckFreqRange(ch);
for(i=0;i<4;i++)
if(PixelTab[i] > ch)
{
k = i<<6;
break;
}
if(ch < 75)
k |= 0x0f; //pll charge pump
else
k |= 0x2f;
#if PRINT_MESSAGE
printf("Htotal = %d\n",FuncBuf[pCLOCK]);
printf("PixelRate = %d MHz\n",(unsigned short)PixelRate);
printf("VCO Range = %x\n",(unsigned short)k);
#endif
WriteIIC563(0x00d,k);
}
*/
/*
else //seperate mode
{
*/
PixelRate = ((unsigned long)FuncBuf[pCLOCK] * H_SYNC)/10000;
ch = (unsigned char)PixelRate;
WriteIIC563(0x0d0,0x23);
CheckFreqRange(ch);
//Jacky 20040910 for DVI pll bandwidth
if(SyncMode == 3)
{
if(ch > 100)
WriteIIC563(0x01d,0x01);
else
WriteIIC563(0x01d,0x1f);
C51 COMPILER V6.12 SCALER 03/05/2008 14:35:00 PAGE 10
}
//----------------------------------
if(ForceToBack == 0){
k = ReadIIC563(0x0d1);
k &= 0x03;
}
else{
for(k=0;k<4;k++)
if(ch > DpllSeqTab[k])
break;
WriteIIC563(0x0d1,0x10+k);
}
#if PRINT_MESSAGE
printf("Htotal = %d\r\n",FuncBuf[pCLOCK]);
printf("PixelRate = %d MHz\r\n",(unsigned short)PixelRate);
#endif
//WriteIIC563(0x0d5,0x07);
WriteIIC563(0x0d6,0xa0);
WriteIIC563(0x0db,0x0c);
if(ForceToBack == 0){
/*
if((SyncMode == 1)||(SyncMode == 2)){ //H+V SOG
WriteIIC563(0x0d5,0x09);
}
else{
if((HV_Pol & BIT_4) == 0){
WriteIIC563(0x0d5,0x03&(~BIT_3));
}
else{
WriteIIC563(0x0d5,0x03|BIT_3);
}
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -