CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

ADC port contradictions

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
caddy



Joined: 24 Jun 2007
Posts: 14

View user's profile Send private message

ADC port contradictions
PostPosted: Sun Jun 24, 2007 12:54 am     Reply with quote

Hi

I'm using an 18F2525 with 12 ADC ports. In the datasheet it says:
Code:

"each port pin associated with the A/D converter can be configured as an analog input, or as a digital I/O."

However, in the devices file packaged with CCS, it says:
Code:

// Constants used in SETUP_ADC_PORTS() are:
#define NO_ANALOGS  0x0F  // None
#define AN0_TO_AN6  0x08  // A0 A1 A2 A3 A5 F0 F1
#define AN0_TO_AN5  0x09  // A0 A1 A2 A3 A5 F0
#define AN0_TO_AN4  0x0A  // A0 A1 A2 A3 A5
#define AN0_TO_AN3  0x0B  // A0 A1 A2 A3
#define AN0_TO_AN2  0x0C  // A0 A1 A2
#define AN0_TO_AN1  0x0D  // A0 A1
#define AN0         0x0E  // A0


I'm trying to figure out how I can enable ports AN8 and AN9 while keeping the rest as digital, but there is no option for this with setup_adc_ports. Could someone help me out? Also, what are F0 and F1?

Thanks
dyeatman



Joined: 06 Sep 2003
Posts: 1933
Location: Norman, OK

View user's profile Send private message

PostPosted: Sun Jun 24, 2007 7:51 am     Reply with quote

You might read the data sheet again. The 18F2525 is a 28 pin device and has 10 ADC channels. (AN5-AN7 are not available)

Page 224 of the data sheet shows all the possible Analog port configurations. The datasheet does not show an option to configure just AN8 and AN9. The compiler is limited by what the hardware will do.

Also, which CCS version are you using? The ADC definitions in my header file (ver 4.042) differ greatly from yours. (don't get confused between A5 and AN5, one is a pin and the other is the ADC port)

// Constants used in SETUP_ADC_PORTS() are:
#define NO_ANALOGS 0x0F // None
#define ALL_ANALOG 0x00 // A0 A1 A2 A3 A5 B2 B3 B1 B4 B0
#define AN0_TO_AN11 0x03 // A0 A1 A2 A3 A5 B2 B3 B1 B4
#define AN0_TO_AN10 0x04 // A0 A1 A2 A3 A5 B2 B3 B1
#define AN0_TO_AN9 0x05 // A0 A1 A2 A3 A5 B2 B3
#define AN0_TO_AN8 0x06 // A0 A1 A2 A3 A5 B2
#define AN0_TO_AN4 0x0A // A0 A1 A2 A3 A5
#define AN0_TO_AN3 0x0B // A0 A1 A2 A3
#define AN0_TO_AN2 0x0C // A0 A1 A2
#define AN0_TO_AN1 0x0D // A0 A1
#define AN0 0x0E // A0
Guest








PostPosted: Sun Jun 24, 2007 3:28 pm     Reply with quote

Thanks

What if I se up all ports as analog just before using the adc, and then set them back to digital when using the digital ports. As long as I leave a delay between the setup and conversion to allow it to initialise there shouldnt be a problem right??
dyeatman



Joined: 06 Sep 2003
Posts: 1933
Location: Norman, OK

View user's profile Send private message

PostPosted: Sun Jun 24, 2007 4:27 pm     Reply with quote

Thats a good question someone here might be able to answer. I have never tried that trick. I have always just used the ports I needed starting from AN0 in the normal configurations....

After doing some more investigation it appears some unused Analog pins can be configured as digital OUTPUT only (ex: RA0 and RA1). The D/S says they cannot be configured for digital input when Analog is enabled. Again, I have never tried this. I am getting this from reading the data sheet.
caddy



Joined: 24 Jun 2007
Posts: 14

View user's profile Send private message

PostPosted: Sun Jun 24, 2007 4:50 pm     Reply with quote

Well, they wouldn't need to be analog and digital simultaneously. The code I'm thinking of would be something like:
Code:


setup_adc_ports(ALL_ANALOG);
delay_ms(X); //allow the ADC to settle
do conversions on AN8 and AN9

setup_adc_ports(NO_ANALOGS);
check digital inputs on the other pins

setup_adc_ports(ALL_ANALOG);
delay_ms(X); //allow the ADC to settle
do conversions on AN8 and AN9



Would this work?
jfk1965



Joined: 21 Oct 2003
Posts: 58

View user's profile Send private message

PostPosted: Mon Jun 25, 2007 3:18 am     Reply with quote

why not just use A0 & A1 as Analog as the others as digital and you don't have to switch from analog to digital and back again?
caddy



Joined: 24 Jun 2007
Posts: 14

View user's profile Send private message

PostPosted: Mon Jun 25, 2007 6:19 am     Reply with quote

jfk1965 wrote:
why not just use A0 & A1 as Analog as the others as digital and you don't have to switch from analog to digital and back again?

The problem is I am using a PCB that has already been implemented by someone else so I need to use this odd set of analog ports...

So I'm wondering if the pseudocode I posted just a bit up would work?

Thanks
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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