![](templates/subSilver/images/CCSLogo.jpg) |
![CCS C Software and Maintenance Offers](templates/subSilver/images/forumAd6.jpg) |
View previous topic :: View next topic |
Author |
Message |
nrieper
Joined: 04 Nov 2010 Posts: 3
|
set_adc_channel, undocumented second parameter? |
Posted: Thu Nov 04, 2010 9:52 am |
|
|
Hi,
In general I measured the analog voltages by setting f.e. set_adc_channel(1), set_adc_channel(2) .....
Now I want to measure 5 channels this way and one analog input I want to measure differential voltage across two channels.
In PIC18F67K22.h (thats the actual device I'm using) I found:
// Constants used for second parameter of SET_ADC_CHANNEL() (first parameter is Analog Positive Channel)
Code: | #define VSS 0xFF //Analog Negative Channel connected to Vss |
But in the ccs manual I found nothing about a second parameter. There I only found set_adc_channel (chan)
So here is my question:
Is it possible to call set_adc_channel (1,2) for differential measurement between channel 1 and 2 ?
If I don't misunderstand understand the device.h comment it must at least be possible to call set_adc_channel (1, VSS)
Any experience?
Thanks for any help
Norbert,
Bremerhaven,
Germany
PS: I know that it is also possible to measure each channel for itself and than subtract the result, but thats not I want, because there is a small time difference between the measurement. |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah
Joined: 11 Mar 2010 Posts: 19364
|
|
Posted: Thu Nov 04, 2010 10:53 am |
|
|
The reason that set_adc_channel, is only shown with one parameter, is simply that 99.9% of PICs only have a single input to the ADC selectable. Yours is one of a very few (new) chips that are appearing with the ability to setup differential inputs.
Now, first comment. 'Odds' of a new feature like this actually working for the next few compiler versions are low.....
What you have found, is a 'sign' that CCS are working on it.
New features like this are usually documented in the 'readme' with the compiler, when they first expect people to actually start using them, before they appear in the manual. At present nothing there....
Realistically, I'd simply make a #byte definition for ADCON1, and try setting the negative channel number myself.
I'd also try putting a value into the second parameter, and look at the assembler generated.
The value seems somewhat 'odd', since the Avss selection involves writing zeros to the low bits of the register. 0xFF, doesn't make a lot of sense here...
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
nrieper
Joined: 04 Nov 2010 Posts: 3
|
|
Posted: Fri Nov 05, 2010 8:09 am |
|
|
Thank you Ttelmah,
I just tried to use the second parameter. The compiler didn't complain and when I checked the ADCON1 register, CHSN is set to 110, thats the value for AN5, the channel I was setting. So the function seems to work with the second parameter. Next I have to check the result with a signal to the inputs. |
|
![](templates/subSilver/images/spacer.gif) |
nrieper
Joined: 04 Nov 2010 Posts: 3
|
|
Posted: Wed Nov 10, 2010 2:38 am |
|
|
So I tried to set the adc to differential input by using the second parameter:
set_adc_channel(ANALOG_SHUNT_H, ANALOG_SHUNT_L), where ANALOG_SHUNT_H = 11 and ANALOG_SHUNT_L = 5.
Everything works fine, so the undocumented second parameter works for this pic. |
|
![](templates/subSilver/images/spacer.gif) |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|