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

IO port help, please!

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



Joined: 15 Oct 2003
Posts: 1

View user's profile Send private message

IO port help, please!
PostPosted: Wed Oct 15, 2003 8:14 pm     Reply with quote

G'day all.

This might be a bit of a silly question, but I am quite new at this and really need help urgently.

I am currently programming a PIC16f876 to communicate with an optical mouse sensor. I am using PORTA for this purpose. It has two main communication lines, one for a serial clock and one for serial data communication.
I want to use PIN_A0 for my serial clock output to the sensor and pins A1 and A2 for sending data and receiving respectively.

I have set up PORTA by setting the TRISA register to 0xf4 (set_tris_a(0xf4) ). Now I want to clock data through to the sensor. My problem arises when I change PIN_A0:

For example this code which would be in a while statement:
//this code is only for writing the address to the the sensor which I
//want to read from.

//while begins
1 output_low(PIN_A0); //downclock
2 if (address bit must be high)
3 output_high(PIN_A1); //sets an address bit to be clocked through
4 else
5 output_low(PIN_A1);
6 delay_us(5);
7 output_high(PIN_A0); //clocks the address bit into the sensor
8 delay_us(5);
//while ends

The problem I have is that whenever the code in line 7 is done that PIN_A1 is immediately set low again. Thus not waiting for the next if statement to set the new value of PIN_A1. I have a feeling it is the way I have set up PORTA.
Should I use fast_io? Should I turn ADC off or should it no make a difference? If someone can maybe give me an example of setting up PORTA for this kind of application I would be very gratefull.
ajt



Joined: 07 Sep 2003
Posts: 110

View user's profile Send private message

PostPosted: Wed Oct 15, 2003 8:53 pm     Reply with quote

Try:
setup_adc_ports(NO_ANALOGS);
_________________
Al Testani
Pete Smith



Joined: 17 Sep 2003
Posts: 55
Location: Chester, UK

View user's profile Send private message Visit poster's website MSN Messenger ICQ Number

Re: IO port help, please!
PostPosted: Thu Oct 16, 2003 3:44 am     Reply with quote

Polar wrote:
G'day all.

I want to use PIN_A0 for my serial clock output to the sensor and pins A1 and A2 for sending data and receiving respectively.

I have set up PORTA by setting the TRISA register to 0xf4 (set_tris_a(0xf4) ). Now I want to clock data through to the sensor.
.


In my experience, you have to be careful setting TRIS register. You've got the top 2 bits set. the 876 has only 6 bits, so I'd set it to

0b000100

IME, I've tried setting the top 2 bits on the port_a tris, and it made the whole thing not work very well!

The second problem is that when you use standard IO, you don't need the TRIS, if you use fast_io, you do need the tris.

FWIW, I never use standard IO, because I like control of my own code thank you very much.

HTH

Pete.
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