Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Budget DVB-C tuning problems



Robert Schlabbach wrote:
> From: "Ingolf Haberer" <ingy@vorabend-einchecker.de>
> 
> > kernel: ves1820_ioctl FE_READ_STATUS status=0x7   AFC=19 3997400Hz
> > kernel: ves1820_ioctl FE_READ_STATUS status=0x7   AFC=19 0Hz
> 
> Hmm, the AFC output appears to be somewhat buggy:
> 
> if (sync & 2)
>    /* AFC only valid when carrier has been recovered */
> 			   afc = ves1820_readreg(fe, 0x19);
> 		if (verbose)
>    printk ("DVB: VES1820(%d): AFC (%d) %dHz\n",
> 				  	fe->i2c->adapter->num, afc,
> 					       -((s32)(p->u.qam.symbol_rate >> 3) * afc >> 7));
> 
> It doesn't make sense to output AFC if it hasn't been read,

Corrected.

> and AFC is interesting even if there is no sync.

(sync & 2) tests if the carrier has been recovered.
If we don't have a carrier, then AFC is undefined
(AFC := difference between given frequency and recovered carrier frequency).

> Also, the frequency offset
> calculation does not quite match the VES1820 docs. Try this instead:
> 
> if (verbose)
> {
>  afc = ves1820_readreg(fe, 0x19);
>  printk ("DVB: VES1820(%d): AFC (%d) %dHz\n",
>   fe->i2c->adapter->num, afc,
>   ((s32)(p->u.qam.symbol_rate * afc) >> 10));
> };

The calcuation above avoids overflow errors at the expense of some
loss in precision.

> Anyway, back to your output:
> 
> > last message repeated 9 times
> > kernel: ves1820_ioctl FE_READ_STATUS status=0x7   AFC=19 3997400Hz
> 
> If the calculated AFC is right (which doesn't match AFC=19...), this looks
> like the "AFC getting stuck" I had mentioned earlier. You need to reset the
> VES1820 at this point to reset the AFC logic and make it sync.

The calcuation for the AFC is right, but the symbolrate seems wrong...

> I found that the most difficult channel changes to the VES1820 are
> between _adjacent_ channels, especially in downwards direction. Especially
> switching from S41 (466MHz) down to SK40 (458MHz) seems to be a problem to
> this board. Try switching between 442MHz, 450MHz, 458MHz and 446MHz up- and
> downwards a few times - I think you'll get a "no lock" very soon. You
> really need to implement the VAFC check and reset the VES1820 if VAFC runs
> out of a minimum range.

Hm.

Johannes


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index