Searching \ for '[PIC]: Pulse Width Modulation on PIC16C84' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/microchip/ios.htm?key=pulse+width
Search entire site for: 'Pulse Width Modulation on PIC16C84'.

Exact match. Not showing close matches.
PICList Thread
'[PIC]: Pulse Width Modulation on PIC16C84'
2001\02\01@200904 by Tony Jurisic

picon face
Hi,
I'm trying to construct a device using a PIC16C84 that will take a 1Khz
pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
keeping the same mark/space ratio. It has to have 10bit accuracy. I've been
working on it for a few eeks now and every idea I've had hasn't worked. I
need a fresh perspective so I am just writing to find out of anybody has
another approach to this problem.
Thanx
Tony Jurisic

Ps: if this email came in html format tell me so i can fix it .. thanx
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\01@201249 by Tony Jurisic

picon face
Hi,
I'm trying to construct a device using a PIC16C84 that will take a 1Khz
pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
keeping the same mark/space ratio. It has to have 10bit accuracy.
I've been working on it for a few weeks now and every idea I've had hasn't
worked. I need a fresh perspective so I am just writing to find out if
anybody has another approach to this problem.
Thanx
Tony Jurisic

Ps: if this email came in html format tell me so i can fix it
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\01@215314 by Bob Ammerman

picon face
> Hi,
> I'm trying to construct a device using a PIC16C84 that will take a 1Khz
> pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
> keeping the same mark/space ratio. It has to have 10bit accuracy. I've
been
> working on it for a few eeks now and every idea I've had hasn't worked. I
> need a fresh perspective so I am just writing to find out of anybody has
> another approach to this problem.
> Thanx
> Tony Jurisic

Tony,

I am not sure you can do this on a 16C84. Here is my reasoning:

A 24kz PWM signal at 10bit accuracy would require a timing resolution of
24,000 * 2^10 per second.

This comes to 2,457,600.

That is higher than the maximum clock rate of a 16C84.

You could get about a 20Khz signal on a chip with hardware PWM (like the
16F87x chips).

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\01@222147 by Bob Ammerman

picon face
{Quote hidden}

Oops: try 24,576,000

[  it is hard to cut and paste from my little casio into my email client
-)  ]

{Quote hidden}

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\01@223013 by Bob Blick

face
flavicon
face
>I'm trying to construct a device using a PIC16C84 that will take a 1Khz
>pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
>keeping the same mark/space ratio. It has to have 10bit accuracy. I've been

Well, if you are stuck on a desert island with nothing but a 16C84 it might
be worth trying to figure it out, but if you have the money in your pocket
to buy a 16C84, why not spend it on a 16F87x instead? It's less expensive.
It has a CCP and a PWM module. Job almost done.

-Bob

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\02@110317 by Olin Lathrop

face picon face
> I'm trying to construct a device using a PIC16C84 that will take a 1Khz
> pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
> keeping the same mark/space ratio. It has to have 10bit accuracy. I've
been
> working on it for a few eeks now and every idea I've had hasn't worked. I
> need a fresh perspective so I am just writing to find out of anybody has
> another approach to this problem.

How fast must the 24KHz signal react to the 1KHz signal?  If not that fast,
then you could analog filter the 1KHz PWM, A/D it, then use that value to
generate the 24KHz PWM.

Is the 1KHz well known and stable, with only the duty cycle changing?  If
so, then you could measure the on or off period with a CCP module and use
that to calculate the average on fraction.


*****************************************************************
Olin Lathrop, embedded systems consultant in Devens Massachusetts
(978) 772-3129, spam_OUTolinTakeThisOuTspamembedinc.com, http://www.embedinc.com

--
http://www.piclist.com hint: The list server can filter out subtopics
(like ads or off topics) for you. See http://www.piclist.com/#topics


2001\02\02@111359 by Bob Ammerman

picon face
> > I'm trying to construct a device using a PIC16C84 that will take a 1Khz
> > pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
> > keeping the same mark/space ratio. It has to have 10bit accuracy. I've
> been
> > working on it for a few eeks now and every idea I've had hasn't worked.
I
> > need a fresh perspective so I am just writing to find out of anybody has
> > another approach to this problem.
>
> How fast must the 24KHz signal react to the 1KHz signal?  If not that
fast,
> then you could analog filter the 1KHz PWM, A/D it, then use that value to
> generate the 24KHz PWM.
>
> Is the 1KHz well known and stable, with only the duty cycle changing?  If
> so, then you could measure the on or off period with a CCP module and use
> that to calculate the average on fraction.

Actually you can use a CCP module to measure both the period and the duty
cycle on each cycle. Scale the result to a 10 bit range and load it into
your output PWM (with or without some digital filtering). But of course your
output PWM is limited to the PICs clock speed which tops out at 20MHz
(unless you use a 17C or 18C series chip). You need a 24+MHz clock to
generate a 10 bit 20KHz PWM.

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: The list server can filter out subtopics
(like ads or off topics) for you. See http://www.piclist.com/#topics


2001\02\02@161823 by uter van ooijen & floortje hanneman

picon face
> > I'm trying to construct a device using a PIC16C84 that will take a 1Khz
> > pulse width modulated (PWM) signal and turn it into a ~24Khz PWM signal
> > keeping the same mark/space ratio. It has to have 10bit accuracy. I've
> been
> > working on it for a few eeks now and every idea I've had hasn't worked.
I
> > need a fresh perspective so I am just writing to find out of anybody has
> > another approach to this problem.

Seems like an easy analog job to me. Convert your PWM to analog (R+C). Make
a sine or triangle oscillator at 24 kHz. Put it into a comparator. The other
input of the comparator is adjusted untill the output of the comparator,
when converted to analog, is the same as the input PWM.

Wouter

--
http://www.piclist.com hint: The list server can filter out subtopics
(like ads or off topics) for you. See http://www.piclist.com/#topics


2001\02\05@174359 by Tony Jurisic

picon face
{Quote hidden}

I am assuming that this method has little or no need for microcontroller
control as the input is consistent and there will be very little variation
in the required output.

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

--
http://www.piclist.com hint: To leave the PICList
EraseMEpiclist-unsubscribe-requestspam_OUTspamTakeThisOuTmitvma.mit.edu


2001\02\05@175021 by Tony Jurisic

picon face
Hi,
I know this a dumb question but how did you work out the 'maximum clock rate
for the pic16c84' (or any other pic for that matter)
Thanx
Tony Jurisic


{Quote hidden}

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

--
http://www.piclist.com hint: To leave the PICList
RemoveMEpiclist-unsubscribe-requestTakeThisOuTspammitvma.mit.edu


2001\02\05@184102 by Olin Lathrop

face picon face
> I know this a dumb question but how did you work out the 'maximum clock
rate
> for the pic16c84' (or any other pic for that matter)

The PWM module can only produce periods that are multiple of the instruction
time.  It can then adjust the duty cycle within the overall period to 1/4
instruction times.  If you need 10 bit resolution, then the period must be
at least 256 instructions.  At 20MHz clock you get 5MHz instruction rate, or
200nS per instruction.  200nS x 256 = 51.2uS, which comes out to a frequency
of 19.5KHz.  This is therefore the maximum frequency a PIC clocked at 20MHz
can produce a PWM output that has 10 bit resolution.


*****************************************************************
Olin Lathrop, embedded systems consultant in Devens Massachusetts
(978) 772-3129, spamBeGoneolinspamBeGonespamembedinc.com, http://www.embedinc.com

--
http://www.piclist.com hint: To leave the PICList
TakeThisOuTpiclist-unsubscribe-requestEraseMEspamspam_OUTmitvma.mit.edu


2001\02\05@185508 by Bob Ammerman

picon face
> Hi,
> I know this a dumb question but how did you work out the 'maximum clock
rate
> for the pic16c84' (or any other pic for that matter)
> Thanx
> Tony Jurisic

No questions are dumb.

This one is answered in the device data sheet, or by reference to the mChip
line card.

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: To leave the PICList
RemoveMEpiclist-unsubscribe-requestspamTakeThisOuTmitvma.mit.edu


2001\02\05@191622 by Tony Jurisic

picon face
{Quote hidden}

If the calculation was changed such that 8bit accuracy was required the
timing resolution is 24000 * 2^8 per second which gives 6,114,000 per
second. Is this also higher than the maximum clock rate of a pic16c84?

Also, can I clock the pic16c84 higher than 20MHz?


_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

--
http://www.piclist.com hint: To leave the PICList
EraseMEpiclist-unsubscribe-requestspamspamspamBeGonemitvma.mit.edu


2001\02\05@203942 by Bob Ammerman

picon face
> If the calculation was changed such that 8bit accuracy was required the
> timing resolution is 24000 * 2^8 per second which gives 6,114,000 per
> second. Is this also higher than the maximum clock rate of a pic16c84?

Yes, to get exactly this frequency you would probably need a custom crystal.

The 16C84 has a max clock of 20MHz. (By the way the 16C84 is considered
rather obsolete, having been replaced by the (flash) 16F84.

> Also, can I clock the pic16c84 higher than 20MHz?

You can, it might work, but I wouldn't want it controlling my nuclear plant
:-)

Basically: overclocking is _not_ a good idea.

Just to save a step in this back-and-forth, here is an analysis of the
maximum frequency available at 8 and 9 bit resolution:

For eight bit resolution: 20MHz clock / 256 clocks per cycle = 78,125 hertz
sample rate.

For nine bit resolution: 20Mhz clock / 512 clocks per cycle = 39,062.5 hertz
sample rate.

For ten bit resolution: 20MHz clock / 1024 clocks per cycle = 19,531.25
hertz sample rate.

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: To leave the PICList
RemoveMEpiclist-unsubscribe-requestKILLspamspammitvma.mit.edu


2001\02\06@013314 by Tony Jurisic

picon face
Thanks to everybody that helped me out on this problem.
I've decided to try this project on a new chip. The 16F87X series looks like
a good candidate. Looking at the microchip website it claims it has an
operating speed of 20Mhz. The website also claims that the 16X84 chips have
a speed of 10MHz however Bob said it can be used to 20MHz withour
overclocking. Am I right in assuming that microchip publishes half the value
of the chip in the datasheets implying I can use the 16F87X chips at up to
40MHz ?

Thanx again
Tony

{Quote hidden}

_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@015224 by David Duffy

flavicon
face
At 01:33 AM 06/02/01 -0500, you wrote:
>Thanks to everybody that helped me out on this problem.
>I've decided to try this project on a new chip. The 16F87X series looks like
>a good candidate. Looking at the microchip website it claims it has an
>operating speed of 20Mhz. The website also claims that the 16X84 chips have
>a speed of 10MHz however Bob said it can be used to 20MHz withour
>overclocking. Am I right in assuming that microchip publishes half the value
>of the chip in the datasheets implying I can use the 16F87X chips at up to
>40MHz ?

The older 16F84 were available in 10MHz max versions. eg. 16F84A-10/P while
the newer 16F84A goes up to 20MHz. eg 16F84A-20/P. Microchip publishes the
max clock frequency it WILL run at. You must have looked at the data sheet for
the older 16F84. No, you can't clock the F87x chips at 40MHz. Well, I guess you
could but I doubt they'd work. ** No need to start an over clocking thread
again! **
Regards...

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@073347 by Bob Ammerman

picon face
----- Original Message -----
From: Tony Jurisic <@spam@tony_jurisic@spam@spamspam_OUTHOTMAIL.COM>
To: <spamBeGonePICLISTspamKILLspamMITVMA.MIT.EDU>
Sent: Tuesday, February 06, 2001 1:33 AM
Subject: Re: [PIC]: Pulse Width Modulation on PIC16C84


> Thanks to everybody that helped me out on this problem.
> I've decided to try this project on a new chip. The 16F87X series looks
like
> a good candidate. Looking at the microchip website it claims it has an
> operating speed of 20Mhz. The website also claims that the 16X84 chips
have
> a speed of 10MHz however Bob said it can be used to 20MHz withour
> overclocking. Am I right in assuming that microchip publishes half the
value
> of the chip in the datasheets implying I can use the 16F87X chips at up to
> 40MHz ?

NO, NO, NO, NO, NO! - stay away from overclocking!

I am not sure about the 16C84, but the 16F84 _is_ specced to 20MHz, I just
double checked the data sheet.

If the 20MHz clock / 1024 samples per cycle = 19,531.25 Hz frequency will
work for you, this will be almost simple on the F87X.

If 19,531.25 Hz doesn't do it for you then I recommend using 9 bit at
39,062.5 Hz.

If you really want the originally specified 24,000 Hz rate, you can
calculate the needed crystal for 9 bit as follows:

24,000Hz * 512 samples/cyle = 12.288MHz clock rate.

Actually, using the scaling technique described below, you should be able to
generate a 9-and-a-fraction bit PWM at about 24,000 Hz. You do this by first
computing the number of instruction times available for each cycle at
24,000Hz PWM frequency and 20MHz crystal:

20,000,000 / 4 / 24,000 = 208.333

Setting the PWM period to 208 instruction  times gives us a PWM frequency
error of:

(208.333-208)/208.333 = 0.16%

Not too shabby.

This will give you an actual PWM frequency of about:

20,000,000 / 4 / 208 = 24,038.5 Hz

Since we have 208 instruction times per sample, this gives us 208*4 == 832
possible PWM values. This is obviously more than 9 bit (512 values) and less
than 10 bit (1024 values). In fact we can compute the number of bits as:

LogBase2(832) == 9.7 bits.

Now we are pretty close to our original spec which was 24,000 Hz (we get
24,038.5) at 10 bits (we get 9.7 bits).

Now, how does one go about implementing this?

It is rather easy:

Sample the incoming 1KHz PWM using the CCP module. You'll have to deal with
the special cases near 0% and and 100% PWM.

For each cycle of the incoming PWM you will obtain 2 numbers, both expressed
in 'clocks' or 1/20000000 second units. The first number will be the period
(should be close to 1/1000 second = 2000 clocks), the other will be the duty
cycle (will range from 0 to the current value for duty cycle).

You now have to scale the duty cycle to the range 0..831. This  can be done
as follows:

duty_cycle(output) = duty_cycle(input)*832 / period(input)

This is, of course, a simple ratiometric computation. You will need 24-bit
math to do this. (In fact, without looking it up, this could be the killer
in his idea: you may not have time to do the math on each cycle!)

Note that the multiply can be optimized to inline code because it is
multiplication by  a constant.

Good luck,

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@074702 by Bob Ammerman

picon face
Another thought to add to my prior response:

Given that the period of the 1KHz PWM is going to be close to 2000 cycles,
it should be possible to optimize the division quite a bit. The dividend
will may out at about 2000*832 = 1664000 which will fit in 21 bits. The
divisor will fit in 12 bits. The quotient will be no more than 10 bits.

Or, you could treat the period of the 1KHz PWM as a constant (say 2000
cycles) and compute your output period as:

period(output) = period(input) * (832/2000)

Using a single, optimized, fixed point multiplication.

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@081636 by Michael Rigby-Jones

flavicon
face
> -----Original Message-----
> From: Bob Ammerman [SMTP:.....RAMMERMANspam_OUTspamPRODIGY.NET]
> Sent: Tuesday, February 06, 2001 12:26 PM
> To:   TakeThisOuTPICLIST.....spamTakeThisOuTMITVMA.MIT.EDU
> Subject:      Re: [PIC]: Pulse Width Modulation on PIC16C84
>
> I am not sure about the 16C84, but the 16F84 _is_ specced to 20MHz, I just
> double checked the data sheet.
>
Actually, the 16F84A (note suffix) is specced to 20MHz, the older 16F84, and
16C84 have a maximum rated clock of 10MHz.

Mike

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@084723 by Simon Nield

flavicon
face
bob:
>24,000Hz PWM frequency and 20MHz crystal:
>20,000,000 / 4 / 24,000 = 208.333
>Setting the PWM period to 208 instruction  times gives us a PWM frequency
>error of:
>(208.333-208)/208.333 = 0.16%
>Not too shabby.


I was once looking into a similar problem to this, i.e. generating a clock frequency that is not an
integer sub-multiple of the system clock.
I realised that by changing the pwm period on the fly I could actually obtain the exact frequency I
was after, with jitter that was in-spec for the design. (I ended up using a PLL anyway to get better
than minimum spec jitter, as that was more suited to the application.)

To get an effective divide by 208.3r with some jitter, simply divide by 208 for two cycles out of 3
and divide by 209 every 3rd cycle.
This gives you a divide by 208.3r with +0.32% -0.16% peak jitter.
The jitter is of course at a fixed frequency, which may or may not be a problem depending on your
application.

You can make the jitter appear as (pseudo-)random noise if you use a (pseudo-)random number
generator and compare the output of that with your fractional part to give a carry-in to the divider
reset point:
i.e. if (RND*255 < 0.3r*255) then count = 209, else count = 208.
Of course you don't get something for nothing and this gives larger peak-to-peak jitter.

If it helps you can think of this as ordered dither for the first case and (pseudo-)random dither
for the second.


Using the same technique with bigger divides obviously gives better jitter performance.


Regards,
Simon

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@090427 by Olin Lathrop

face picon face
> If the calculation was changed such that 8bit accuracy was required the
> timing resolution is 24000 * 2^8 per second which gives 6,114,000 per
> second. Is this also higher than the maximum clock rate of a pic16c84?

My line card doesn't show a 16C84.  Where did you find this part?

> Also, can I clock the pic16c84 higher than 20MHz?

I'm not familiar with this part, but the maximum clock rates are clearly
spelled out in the data sheet.  RT*M!


*****************************************************************
Olin Lathrop, embedded systems consultant in Devens Massachusetts
(978) 772-3129, TakeThisOuTolinKILLspamspamspamembedinc.com, http://www.embedinc.com

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@094408 by Olin Lathrop

face picon face
> Thanks to everybody that helped me out on this problem.
> I've decided to try this project on a new chip. The 16F87X series looks
like
> a good candidate. Looking at the microchip website it claims it has an
> operating speed of 20Mhz. The website also claims that the 16X84 chips
have
> a speed of 10MHz however Bob said it can be used to 20MHz withour
> overclocking. Am I right in assuming that microchip publishes half the
value
> of the chip in the datasheets implying I can use the 16F87X chips at up to
> 40MHz ?

No.  Don't go there.

The line card shows the 16F84A max clock speed at 20MHz.  You may have seen
the spec for some other variant that is only available up to 10MHz.


*****************************************************************
Olin Lathrop, embedded systems consultant in Devens Massachusetts
(978) 772-3129, .....olinspamRemoveMEembedinc.com, http://www.embedinc.com

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@100739 by Michael Rigby-Jones

flavicon
face
> -----Original Message-----
> From: Olin Lathrop [SMTP:RemoveMEolin_piclistspamspamBeGoneEMBEDINC.COM]
> Sent: Tuesday, February 06, 2001 1:43 PM
> To:   spamBeGonePICLIST@spam@spamspam_OUTMITVMA.MIT.EDU
> Subject:      Re: [PIC]: Pulse Width Modulation on PIC16C84
>
> > If the calculation was changed such that 8bit accuracy was required the
> > timing resolution is 24000 * 2^8 per second which gives 6,114,000 per
> > second. Is this also higher than the maximum clock rate of a pic16c84?
>
> My line card doesn't show a 16C84.  Where did you find this part?
>
It's now obsolete, replaced by the 16F84 and then the 16F84A

Mike

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


2001\02\06@101608 by Bob Ammerman

picon face
Olin,

The C84 was a predecessor to the F84. My PICSTART PLUS actually came with 1,
IIRC.

I don't think mChip markets it anymore.

Bob Ammerman
RAm Systems
(contract development of high performance, high function, low-level
software)

--
http://www.piclist.com hint: PICList Posts must start with ONE topic:
[PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads


More... (looser matching)
- Last day of these posts
- In 2001 , 2002 only
- Today
- New search...