|
|
View previous topic :: View next topic |
Author |
Message |
Guest
|
Problem with Port C - please help |
Posted: Wed Sep 01, 2004 3:01 am |
|
|
Dear All,
I have a simple program where I'm testing port C. Normally I'm using port C for digital potentiometer, but because of problems described below, I have written this simple program to test it. The problem is that when I'm running this program with delay_us(1...1000) PIN_C1 is not working. Is alwayes high. When I'm changing delay to delay_ms(2...10 and up) PIN_C1 is starting to run properly. However for smaller delays, checking with my osciloscope I saw that it is not exactly squere wave, it is rathe tringle wave, and increasing delay it is going to be square wafe. I know that port C need to be especially used, but I not really understand how. I check all possible messages in this forum. Could you please help me just to generate a squere wave in this selected port C pins. Interesting is that problem is only on PIC_C1, other pins are working fine. I have one of the latest version of CCS compiles 3.06. Many thanks John
while(1){
output_low(PIN_C0);
delay_us(5);
output_low(PIN_C1);
delay_us(5);
output_low(PIN_C2);
delay_us(5);
output_high(PIN_C0);
delay_us(5);
output_high(PIN_C1);
delay_us(5);
output_high(PIN_C2);
delay_us(5);
} |
|
|
Ttelmah Guest
|
Re: Problem with Port C - please help |
Posted: Wed Sep 01, 2004 3:21 am |
|
|
Anonymous wrote: | Dear All,
I have a simple program where I'm testing port C. Normally I'm using port C for digital potentiometer, but because of problems described below, I have written this simple program to test it. The problem is that when I'm running this program with delay_us(1...1000) PIN_C1 is not working. Is alwayes high. When I'm changing delay to delay_ms(2...10 and up) PIN_C1 is starting to run properly. However for smaller delays, checking with my osciloscope I saw that it is not exactly squere wave, it is rathe tringle wave, and increasing delay it is going to be square wafe. I know that port C need to be especially used, but I not really understand how. I check all possible messages in this forum. Could you please help me just to generate a squere wave in this selected port C pins. Interesting is that problem is only on PIC_C1, other pins are working fine. I have one of the latest version of CCS compiles 3.06. Many thanks John
while(1){
output_low(PIN_C0);
delay_us(5);
output_low(PIN_C1);
delay_us(5);
output_low(PIN_C2);
delay_us(5);
output_high(PIN_C0);
delay_us(5);
output_high(PIN_C1);
delay_us(5);
output_high(PIN_C2);
delay_us(5);
} |
This sounds like a hardware problem, not a software one. The suspicion is that there is a significant capacitance attached to pin C1, and hence the output is a slow 'slew', as this charges/discharges. You don't say what chip is involved, but in some cases specific pins have other functions, and this would need to be checked.
Best Wishes |
|
|
Guest
|
Re: Problem with Port C - please help |
Posted: Wed Sep 01, 2004 3:31 am |
|
|
I'm using 18F452, I thought that it was hardware problem, but to isolate it, i desolder those pins, and make my test againg - same result.
John |
|
|
rnielsen
Joined: 23 Sep 2003 Posts: 852 Location: Utah
|
|
Posted: Wed Sep 01, 2004 8:28 am |
|
|
Maybe you could post your entire test program, including #fuses and other statements. It would be helpful to see how you are setting the PIC up.
Ronald |
|
|
Guest Guest
|
Port C |
Posted: Wed Sep 01, 2004 9:52 am |
|
|
Don't know what kind of scope probes you are using, but if they are of low quality (high capacitance), they may distort the actual signal you are trying to look at. You may also check the o'scope coupling settings and see how your signal changes with different settings. Make sure the scope probe gnd is really ground too.
On more than one occasion I was scratching my head looking at the code when I was really facing a hardware problem.
Just my two cents..... |
|
|
Guest
|
|
Posted: Wed Sep 01, 2004 12:33 pm |
|
|
Hi,
I'm using HP Infinium DSO 2 GS/S 500MHZ with original probes. This not a problem with my DSO, connected digital pot is not working. I tryed also another example to send without any delay 0xff to port C, same result.
Find some parts of my software
#include <18F452.h>
#case // Make the compiler case sensitive (as most are)
#device adc=8
#device *=16
//#use delay(clock=8000000)
#use delay(clock=32000000)
#id checksum // The default part ID will be the program memory checksum
#fuses H4,NOWDT, NOPROTECT, PUT, NOLVP
#zero_ram
#opt 11
-----------------
//***********************************************************************************
#separate
void set_pot( unsigned char value)
{
unsigned char i;
unsigned char dpot[2];
// 0b00010001 0x11 Write data to DPOT 1
// 0b00100001 0x21 Shutdown DPOT 1
dpot[0] = value;
dpot[1] = 0x11;
//#use fast_io(C)
//#byte TRISC = 0x94
//byte port_c_temp;
//port_c_temp=TRISC;
//bit_set(port_c_temp,1);
//set_tris_c(0x00);
//set_tris_c(port_c_temp);
#USE fast_io(C)
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
while(1){
set_tris_c(0x00);
output_c(0xFF);
// delay_us(5);
set_tris_c(0x00);
output_c(0x00);
// delay_us(5);
}
while(1){
output_low(SCK);
delay_us(5);
output_low(CSPOT);
delay_us(5);
output_low(SDO);
delay_us(5);
output_high(SCK);
delay_us(5);
output_high(CSPOT);
delay_us(5);
output_high(SDO);
delay_us(5);
}
output_low(SCK);
output_low(CSPOT); // Select DPOT
delay_us(10);
for(i=1;i<=16;++i)
{
output_bit(SDO, shift_left(dpot,2,0));
delay_us(10);
output_high(SCK);
delay_us(10);
output_low(SCK);
delay_us(10);
}
output_high(CSPOT); // de-Select DPOT
}
best regards
John |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Wed Sep 01, 2004 12:57 pm |
|
|
This test program that you've posted is way too complicated.
Your goal is to find out why you can't control Pin C1.
I would do this:
1. Get rid of the H4 fuse and the 4x PLL mode. Just set it to HS and
set the #use delay() to 8 MHz.
2. Get rid of the #separate and the #case.
3. Get rid of the #opt 11. Using high opt levels is practically
begging for bugs. I would never do it in a regular program
and certainly not in a test program. If anything, you should be
reducing the #opt level to 5.
4. Get rid of the #fast_io and tris statements. These may be causing
the problem, so you may want to add them back in later.
5. Get rid of all code that's not needed to test the Pin C0 problem.
6. You said you have vs. 3.06 of the compiler. I assume you mean
vs. 3.206 ? To me, that's still semi-beta or beta after the changes
done to create the 3.2xx series. Having the latest compiler is not
necessarily good. If you haven't done so already, go to the CCS
download page and get vs. 3.191. If your update period has just
run out (I assume you recently bought the compiler), then email
CCS and explain that you didn't realize that you were supposed to
download vs. 3.191 as well, and they will probably extend your
download rights by 1 day to let you get it. Once you have it, then
install it and see if it solves the problem. |
|
|
Guest
|
|
Posted: Wed Sep 01, 2004 1:15 pm |
|
|
thanks for your advices,
i'm following them, soon infor about results
rgds
john |
|
|
Guest
|
|
Posted: Wed Sep 01, 2004 5:43 pm |
|
|
After some hours ...
Seems to pronblem with soldering. On other boards (similar) it is working.
Many thanks for your help
rgsds
John |
|
|
|
|
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
|