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

I2C problems (with AD7747)

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



Joined: 27 Nov 2008
Posts: 3

View user's profile Send private message

I2C problems (with AD7747)
PostPosted: Thu Nov 27, 2008 5:19 am     Reply with quote

Hiya, I'm having problems with basic I2C communication using the built in functions. If I put the function "i2c_isr_state();" anywhere then I get an error saying Undefined identifier "i2c_isr_state".

The code below should simply reset the device and print to the serial port as it does so, however what happens is I get to hello world b and then nothing. Can anyone see what I'm doing wrong and do the built in functions work ?

Code:

#include <18F452.H>
#fuses NOWDT, NOPROTECT, NOLVP, NOBROWNOUT , H4
#use delay(clock=10000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS=8)
#use i2c(MASTER,SCL=PIN_C3,SDA=PIN_C4,FORCE_HW)

void main (void)
{

printf("\n\n\n\n\n\n\n\n\n\r------ HELLO WORLD a------");

i2c_start();

printf("\n\n\n\n\n\n\n\n\n\r------ HELLO WORLD b------");

i2c_write(0x90); // AD7747 call
i2c_write(0xBF); //Reset AD7747
i2c_stop();

printf("\n\n\n\n\n\n\n\n\n\r------ HELLO WORLD c------");
}
Ttelmah
Guest







PostPosted: Thu Nov 27, 2008 5:34 am     Reply with quote

I2C_ISR_STATE, is for use inside an ISR. Normally only in a slave device. However your error message, suggests you have an older compiler than the manual you have. There is a equivalent version for older compilers without the function, if you need it (a search here on the forum should find it), but you shouldn't.
The I2C functions on most of the older compilers do work OK.
Obvious question. Have you got the two pullup resistors on the I2C lines? Not having these will cause a hangup.

Best Wishes
Rob_08



Joined: 27 Nov 2008
Posts: 3

View user's profile Send private message

PostPosted: Thu Nov 27, 2008 5:42 am     Reply with quote

Thank you for the quick response, the manual and the compiler both came off the same disc but I have a feeling it might not be the most up to date version.
I've tried pull up resistors of 10k, 4k7 and 2k2 and nothing seems to change regardless of values.
When you say work on most of the old compilers is there any known bugs with earlier versions?
Ttelmah
Guest







PostPosted: Thu Nov 27, 2008 6:04 am     Reply with quote

Only very old versions for this.
Check your version number (top line of the .lst file).

Try something very simple:
Code:

#include <18F452.H>
#fuses NOWDT, NOPROTECT, NOLVP, NOBROWNOUT , H4
#use delay(clock=10000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, PARITY=N, BITS=8)

void main (void) {
    int8 dummy;
    dummy=input(PIN_C3);
    dummy=input(PIN_C4); Make sure both lines are inputs
    delay_us(2); //Wait a moment.
    dummy=input(PIN_C3)*2 + input(PIN_C4);
    printf("\n\n\n\n\n\n\n\n\n\rInput was %d\n", dummy);

    while (TRUE); //Always have this at the end of our program
}

Unless you see 'Input was 3', there is a wiring error to your I2C lines.

Best Wishes
Rob_08



Joined: 27 Nov 2008
Posts: 3

View user's profile Send private message

PostPosted: Thu Nov 27, 2008 7:02 am     Reply with quote

Ttelmah, you are amazing !
Been trying to sort this out for quite a while now, and to me my setup was simple generic pic test board --> AD7747 and some pull ups could follow it through and it was fine so it must be software.

However your comments seemed adament the hardware was a problem so time for real picky perfection in the hardware, the test board very kindly includes an LED on all I/O pins including my I2C bus, ripped them off and i can now see my signals being sent over the bus using a scope. Now I just need to sort out numbers

Thank you very very much. Your a star. Very Happy
Ttelmah
Guest







PostPosted: Thu Nov 27, 2008 9:59 am     Reply with quote

I call this process, "wall, head, impact technology testing"....
Everybody here who is an 'old hand', has been through it thousands of times. Hence the mantra of stepping 'away', simplifying what you are looking at, and testing what the chip really _is_ seeing.
Got the 'T' shirt. Smile
Glad you have stepped 'forwards'.

Best Wishes
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