📄 pa8204.lst
字号:
191 Notes : None
192 ================================================================ */
193
194 void Set_Video_Timing(Byte byMode)
195 {
196 1 // Enable interrupt ALL
197 1 EA = 0;
198 1
199 1 //Select Video Source to Setup FRC,Memory,Clock etc..
200 1 switch (byMode)
201 1 {
202 2 // NTSC Video --> 3230
203 2 case _NTSC:
*** ERROR C202 IN LINE 203 OF PA8204.C: '_NTSC': undefined identifier
204 2 // Switch to Video 3230 Path
205 2 I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[1][0], HX8824_MAIN_INP_FORMAT, 6);
*** ERROR C202 IN LINE 205 OF PA8204.C: 'HX8824_Input_Format': undefined identifier
C51 COMPILER V7.07 PA8204 05/03/2006 14:00:57 PAGE 5
206 2 break;
207 2
208 2 // PAL/SECAM Video --> 3230
209 2 case _PAL:
*** ERROR C202 IN LINE 209 OF PA8204.C: '_PAL': undefined identifier
210 2 // Switch to Video 3230 Path, ODD is different with NTSC
211 2 I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[7][0], HX8824_MAIN_INP_FORMAT, 6);
*** ERROR C202 IN LINE 211 OF PA8204.C: 'HX8824_Input_Format': undefined identifier
212 2 break;
213 2
214 2 // VGA --> AD9883
215 2 case _VGA:
*** ERROR C202 IN LINE 215 OF PA8204.C: '_VGA': undefined identifier
216 2 I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[0][0], HX8824_MAIN_INP_FORMAT, 6);
*** ERROR C202 IN LINE 216 OF PA8204.C: 'HX8824_Input_Format': undefined identifier
217 2 break;
218 2
219 2 // 480i --> AD9883
220 2 case _480i:
*** ERROR C202 IN LINE 220 OF PA8204.C: '_480i': undefined identifier
221 2 // Main Channel + Sub Select
222 2 // Choice HX8824_Input_Format[7] & HX8824_Input_Format[8] Reason:
223 2 // Solving Continued INT-Request from G3
224 2 I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[7][0], HX8824_MAIN_INP_FORMAT, 6);
*** ERROR C202 IN LINE 224 OF PA8204.C: 'HX8824_Input_Format': undefined identifier
225 2 break;
226 2
227 2 // 1080i --> AD9883
228 2 // 480p --> AD9883
229 2 case _1080i:
*** ERROR C202 IN LINE 229 OF PA8204.C: '_1080i': undefined identifier
230 2 case _480p:
*** ERROR C202 IN LINE 230 OF PA8204.C: '_480p': undefined identifier
231 2 // Main Channel + Sub Select
232 2 I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[4][0], HX8824_MAIN_INP_FORMAT, 6);
*** ERROR C202 IN LINE 232 OF PA8204.C: 'HX8824_Input_Format': undefined identifier
233 2 break;
234 2 }
235 1
236 1 // Setup Output/Memory
237 1 // I2CWrtCNByte(HX8824_ADDR, &HX8824_Video_Input[byMode][0], HX8824_DSP_PLL, 3);
238 1 I2CWrite3Byte(HX8824_ADDR,HX8824_DSP_PLL,0x41,0x9B,0x10);
*** ERROR C202 IN LINE 238 OF PA8204.C: 'HX8824_DSP_PLL': undefined identifier
239 1
240 1 // Setup Input Timing: Horizontal Vertical
241 1 I2CWrtCNByte(HX8824_ADDR, &HX8824_Video_Input[byMode][3], HX8824_MAIN_INP_HSTART, 4);
*** ERROR C202 IN LINE 241 OF PA8204.C: 'HX8824_Video_Input': undefined identifier
242 1 I2CWrtCNByte(HX8824_ADDR, &HX8824_Video_Input[byMode][7],HX8824_MAIN_INP_VSTART, 4);
*** ERROR C202 IN LINE 242 OF PA8204.C: 'HX8824_Video_Input': undefined identifier
243 1
244 1 // Horizontal Ratio
245 1 I2CWrtCNByte(HX8824_ADDR, &HX8824_Video_Input[byMode][15],HX8824_SCALE_RATIO, 2); // Set H-Scaling R
-atio // FF , 1F
*** ERROR C202 IN LINE 245 OF PA8204.C: 'HX8824_Video_Input': undefined identifier
246 1 I2CWriteByte(HX8824_ADDR, HX8824_SCALE_RATIO + 2,0xFF);
*** ERROR C202 IN LINE 246 OF PA8204.C: 'HX8824_SCALE_RATIO': undefined identifier
247 1 I2CWriteByte(HX8824_ADDR, HX8824_SCALE_RATIO + 3,0x1F);
*** ERROR C202 IN LINE 247 OF PA8204.C: 'HX8824_SCALE_RATIO': undefined identifier
248 1
249 1 // Vertical Ratio
250 1 I2CWrtCNByte(HX8824_ADDR, &HX8824_Video_Input[byMode][17],HX8824_SCALE_RATIO, 2); // Set V-Scaling Rati
-o
C51 COMPILER V7.07 PA8204 05/03/2006 14:00:57 PAGE 6
*** ERROR C202 IN LINE 250 OF PA8204.C: 'HX8824_Video_Input': undefined identifier
251 1 I2CWriteByte(HX8824_ADDR, HX8824_SCALE_RATIO + 2,0xFF);
*** ERROR C202 IN LINE 251 OF PA8204.C: 'HX8824_SCALE_RATIO': undefined identifier
252 1 I2CWriteByte(HX8824_ADDR, HX8824_SCALE_RATIO + 3,0x0F);
*** ERROR C202 IN LINE 252 OF PA8204.C: 'HX8824_SCALE_RATIO': undefined identifier
253 1
254 1 // Output Reset
255 1 I2CWrtCNByte(HX8824_ADDR, &HX8824_Video_Input[byMode][19],HX8824_DSP_RESET, 3);
*** ERROR C202 IN LINE 255 OF PA8204.C: 'HX8824_Video_Input': undefined identifier
256 1
257 1 // PreScaling Process
258 1 switch (byMode)
259 1 {
260 2 case _NTSC:
*** ERROR C202 IN LINE 260 OF PA8204.C: '_NTSC': undefined identifier
261 2 case _PAL:
*** ERROR C202 IN LINE 261 OF PA8204.C: '_PAL': undefined identifier
262 2 case _VGA:
*** ERROR C202 IN LINE 262 OF PA8204.C: '_VGA': undefined identifier
263 2 case _480i:
*** ERROR C202 IN LINE 263 OF PA8204.C: '_480i': undefined identifier
264 2 case _480p:
*** ERROR C202 IN LINE 264 OF PA8204.C: '_480p': undefined identifier
265 2 // Prescaling Setup
266 2 I2CWriteByte(HX8824_ADDR, HX8824_PreSCALE_HRat, 0x00);
*** ERROR C202 IN LINE 266 OF PA8204.C: 'HX8824_PreSCALE_HRat': undefined identifier
267 2 I2CWriteByte(HX8824_ADDR, HX8824_PreSCALE_HRat+1,0x10);
*** ERROR C202 IN LINE 267 OF PA8204.C: 'HX8824_PreSCALE_HRat': undefined identifier
268 2 break;
269 2
270 2 case _1080i:
*** ERROR C202 IN LINE 270 OF PA8204.C: '_1080i': undefined identifier
271 2 // Prescaling Setup
272 2 I2CWriteByte(HX8824_ADDR, HX8824_PreSCALE_HRat, 0x00);
*** ERROR C202 IN LINE 272 OF PA8204.C: 'HX8824_PreSCALE_HRat': undefined identifier
273 2 I2CWriteByte(HX8824_ADDR, HX8824_PreSCALE_HRat+1,0x18);
*** ERROR C202 IN LINE 273 OF PA8204.C: 'HX8824_PreSCALE_HRat': undefined identifier
274 2 // Horizontal Ratio Reset
275 2 I2CWrite2Byte(HX8824_ADDR, HX8824_SCALE_RATIO, 0xFD,0x0E);
*** ERROR C202 IN LINE 275 OF PA8204.C: 'HX8824_SCALE_RATIO': undefined identifier
276 2 I2CWrite2Byte(HX8824_ADDR, HX8824_SCALE_RATIO+2,0xFF,0x1F);
*** ERROR C202 IN LINE 276 OF PA8204.C: 'HX8824_SCALE_RATIO': undefined identifier
277 2 break;
278 2 }
279 1
280 1 // Enable interrupt ALL
281 1 EA = 1;
282 1 }
283
284
285 /* ================================================================
286 Name : InitAutoFunction
287 Purpose : Setup Default Gain/Offset to AD9883 VGA
288 different input timing
289 Passed : None
290 Notes : None
291 ================================================================ */
292
293 void InitAutoFunction(void)
294 {
295 1 Byte RGB[6] = { DEFAULT_AA_GAIN,DEFAULT_AA_GAIN,DEFAULT_AA_GAIN,
*** ERROR C202 IN LINE 295 OF PA8204.C: 'DEFAULT_AA_GAIN': undefined identifier
C51 COMPILER V7.07 PA8204 05/03/2006 14:00:57 PAGE 7
*** ERROR C202 IN LINE 295 OF PA8204.C: 'DEFAULT_AA_GAIN': undefined identifier
*** ERROR C202 IN LINE 295 OF PA8204.C: 'DEFAULT_AA_GAIN': undefined identifier
296 1 DEFAULT_AA_OFF, DEFAULT_AA_OFF, DEFAULT_AA_OFF };
*** ERROR C202 IN LINE 296 OF PA8204.C: 'DEFAULT_AA_OFF': undefined identifier
*** ERROR C202 IN LINE 296 OF PA8204.C: 'DEFAULT_AA_OFF': undefined identifier
*** ERROR C202 IN LINE 296 OF PA8204.C: 'DEFAULT_AA_OFF': undefined identifier
297 1
298 1 Set_ADC_VGA_GainOff(RGB);
299 1 }
300
301
302 /* ================================================================
303 Name : SetAutoClock
304 Purpose : Tuning AD9883's PLL equal [Input Horizontal total]
305 Passed : None
306 Notes : None
307 ================================================================ */
308
309 void SetAutoClock(Byte byIdx)
310 {
311 1 Word temp0;
312 1 Word wH_Total;
313 1 ENUM_AutoClockState byIncDecState=INITIAL;
314 1
315 1 wH_Total = (Word)((ADC_VGA_Tbl[0][0]<<8) |(ADC_VGA_Tbl[0][1]));
316 1 wInpHSize=HX8824_Video_Input[3][5] + (HX8824_Video_Input[3][6])*256;
317 1
318 1 I2CWriteByte(AD9883_ADR_VGA, 1, HIBYTE(wH_Total));
319 1 I2CWriteByte(AD9883_ADR_VGA, 2, LOBYTE(wH_Total));
320 1 temp0 = (wH_Total / 0x10) + 1;
321 1 Puts_UART("AD9883 temp0="),HexTobyStr((Byte)temp0),Puts_UART(byStr),Puts_UART("\r\n");
322 1
323 1 // Read back H-active area size
324 1 StartAutoBlock(byIdx, AUTO_POS);
325 1 temp0 = GetAutoPos(byIdx, H_SIZE);
326 1
327 1 Puts_UART("Before Auto temp0="),HexTobyStr((Byte)temp0),Puts_UART(byStr),Puts_UART("\r\n");
328 1
329 1 // Check if the deviation is within reasonable range?
330 1 if ( ( temp0 < (wInpHSize+16) ) && ( temp0 > (wInpHSize-16) ) )
331 1 {
332 2 while ( ( temp0 != wInpHSize ) && ( (byIncDecState&BOTH) != BOTH ) )
333 2 {
334 3 if(temp0>wInpHSize)
335 3 {
336 4 wH_Total -= 0x20;
337 4 if (byIncDecState&INC) // Inc before?
338 4 {
339 5 byIncDecState|=BOTH;
340 5 }
341 4 else
342 4 {
343 5 byIncDecState|=DEC;
344 5 }
345 4 }
346 3 if(temp0<wInpHSize)
347 3 {
348 4 wH_Total += 0x20;
349 4 if (byIncDecState&DEC) // Dec before?
350 4 {
351 5 byIncDecState|=BOTH;
352 5 }
C51 COMPILER V7.07 PA8204 05/03/2006 14:00:57 PAGE 8
353 4 else
354 4 {
355 5 byIncDecState|=INC;
356 5 }
357 4 }
358 3
359 3 // Set new PLL_divider
360 3 I2CWriteByte(AD9883_ADR_VGA, 1, HIBYTE(wH_Total));
361 3 I2CWriteByte(AD9883_ADR_VGA, 2, LOBYTE(wH_Total));
362 3 temp0 = (wH_Total / 0x10) + 1;
363 3
364 3 // Read back H-active area size
365 3 StartAutoBlock(byIdx, AUTO_POS);
366 3 temp0 = GetAutoPos(byIdx, H_SIZE);
367 3 }
368 2 }
369 1 else
370 1 {
371 2 Puts_UART("H-Size is out of range. Use default value.\r\n");
372 2 }
373 1 temp0 = (wH_Total / 0x10) + 1;
374 1 Puts_UART("After Auto temp0="),HexTobyStr((Byte)temp0),Puts_UART(byStr),Puts_UART("\r\n");
375 1
376 1 }
377
378 /* ================================================================
379 Name : StartAutoBlock
380 Purpose :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -