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

Trouble with VREF_HIGH

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
Jack// ani
Guest







Trouble with VREF_HIGH
PostPosted: Mon Apr 25, 2005 8:47 am     Reply with quote

Hi all,

When I try to compile this program, I get this error “Undefined Identifier VREF_HIGH”. Can’t understand the problem, even EX_COMP.C which is example program from CCS PIC C gives a similar error! Please tell me what this line means setup_comparator(A0_A3_A1_A2);.


#include <16F628.h>
#fuses XT,WDT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9200, xmit=PIN_A3, rcv=PIN_A4)

short safe_conditions=TRUE;

#INT_COMP
void isr() {

safe_conditions=FALSE;
printf("WARNING!! Voltage level is above 3.6 V. \r\n");
}


main() {

printf("\r\nRunning voltage test...\r\n\n");

setup_comparator(A0_A3_A1_A2);
setup_vref(VREF_HIGH|15);
enable_interrupts(INT_COMP);
enable_interrupts(GLOBAL);


while(TRUE)
{
if(safe_conditions)
printf("Voltage level is below 3.6 V. \r\n");
safe_conditions=TRUE;
delay_ms(500);
}
}

Thanks
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Mon Apr 25, 2005 12:27 pm     Reply with quote

What is your version of the compiler ?

To find the version, compile a file (with errors), and look at the
top of the .LST file. The version will be a number like 3.191, 3.223, etc.
Jack// ani
Guest







PostPosted: Mon Apr 25, 2005 11:27 pm     Reply with quote

CCS PCM C Compiler, Version 3.200
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Tue Apr 26, 2005 12:06 am     Reply with quote

Your 16F628.H file is missing the VREF constant declarations.
Somehow, they were left out of your version.
Add the following code below the #use statements in your program.
Code:

// Constants used in setup_vref() are:
//
#define VREF_LOW  0xa0
#define VREF_HIGH 0x80
// Or (with |) the above with a number 0-15
#define VREF_A2   0x40

I have a few comments on the rest of your program.

In the #fuses statement, you have enabled the Watchdog Timer,
but you don't have any restart_wdt() statements in your code.
I suggest that you disable it with NOWDT in the #fuses statement.

Also, you really should have NOLVP at the end of your #fuses
statement. If you don't you risk having your program lock-up
if PIN_B4 goes high. This is the PGM pin and is used for LVP
programming.

In your #use rs232() statement, you're using a non-standard baud
rate of 9200. Almost certainly, you really want to use 9600.
In addition, you are using pins A3 and A4 for the UART. The compiler
will create a software UART for those pins. But the 16F628 has a
hardware UART. That's part of it's "claim to fame". It's cheap but
it has a hardware UART. So why not use it ? A better way to do it
would be:
Code:
#use rs232(baud=9600, xmit=PIN_B2, rcv=PIN_B1, ERRORS)

In your #INT_COMP routine, you're not clearing the mismatch condition.
You need to do this at the end of the routine, by reading the CMCON
register. You need to do it this way:
Code:
#byte CMCON = 0x1F

#INT_COMP
void isr()
{
char c;
safe_conditions=FALSE;
c = CMCON;
}

Also normally you don't do printf() inside an isr because it locks up
the program from using any interrupts for the amount of time it
takes to transmit all those bytes.

There may be more things wrong that I didn't see or post.

In addition, CCS did a moderately major change to compiler starting
with vs. 3.200. Any version in the low 3.2xx series is going to be buggy.
Your version might be the most buggy of them. Just a warning.
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