View previous topic :: View next topic |
Author |
Message |
Boyce
Joined: 07 Feb 2010 Posts: 39
|
PCW 4.104/16F690/Vref Problem |
Posted: Sat Feb 13, 2010 10:19 pm |
|
|
//For the "(VREF_HIGH | 6)",
//it makes no difference if the "6" is
//1 or 15, the VREF is always 0.6 volts.
//It is the same for VREF_LOW...
//How is Vref controlled?
Code: |
#include "G:\MICROCHIP-ALL\DEVELOPMENT PROGRAMS\main-3.h"
//PCW 4.104 PIC16F690
//PIC Wizard does not show #FUSE info...
void main()
{
setup_adc_ports (NO_ANALOGS|VSS_VDD) ;
setup_adc (ADC_CLOCK_DIV_2) ;
setup_spi (SPI_SS_DISABLED) ;
setup_timer_0 (RTCC_INTERNAL|RTCC_DIV_1) ;
setup_timer_1 (T1_DISABLED) ;
setup_timer_2 (T2_DISABLED, 0, 1) ;
setup_comparator (NC_NC_NC_NC); // This device COMP currently not supported by the PICWizard
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
setup_vref (VREF_HIGH | 6); // At VDD=5, the voltage *SHOULD BE* 2.19V
//For the "(VREF_HIGH | 6)",
//it makes no difference if the "6" is
//1 or 15, the VREF is always 0.6 volts.
//It is the same for VREF_LOW...
//How is Vref controlled?
setup_comparator(CP1_A1_VR);
output_c(0x00);
while(TRUE)
{
output_bit( pin_c0, C1OUT);
}//end while
}//end main |
_________________ boyceg1@gmail.com |
|
![](templates/subSilver/images/spacer.gif) |
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Feb 14, 2010 12:49 am |
|
|
Describe how you are testing this. How are you measuring the Vref
voltage ? How to you know it's always 0.6v ?
Is this being tested in hardware or in Proteus ? |
|
![](templates/subSilver/images/spacer.gif) |
Boyce
Joined: 07 Feb 2010 Posts: 39
|
PCW 4.104/16F690/Vref Problem |
Posted: Sun Feb 14, 2010 1:16 am |
|
|
Thanks for the response.
I am running the software on hardware, Microchip's PicKit 2. A pot is set at the trip point and the voltage is read. The voltage is always 0.581 or very close to 0.6.
0.6 volts is suspicious as that the the voltage for the 16F690's fixed reference.
Thanks,
Boyce Griffith _________________ boyceg1@gmail.com |
|
![](templates/subSilver/images/spacer.gif) |
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Sun Feb 14, 2010 3:15 am |
|
|
You did not enable VREF for C1.
Code: | setup_vref (VREF_HIGH | VREF_COMP1 | 6); |
The compiler reference doesn't tell specific details for all chips. You have to consult the Microchip datasheet or the device file. |
|
![](templates/subSilver/images/spacer.gif) |
Boyce
Joined: 07 Feb 2010 Posts: 39
|
|
Posted: Sun Feb 14, 2010 10:06 am |
|
|
[quote="FvM"]You did not enable VREF for C1.
Code: | setup_vref (VREF_HIGH | VREF_COMP1 | 6); |
This suggestion works.
I am trying to resolve an issue with the 0.6V ref, but have not given up, yet.
Thanks for your help.
Boyce _________________ boyceg1@gmail.com |
|
![](templates/subSilver/images/spacer.gif) |
Boyce
Joined: 07 Feb 2010 Posts: 39
|
|
Posted: Sun Feb 14, 2010 10:55 am |
|
|
There is still an issue with comparators.
Code: | setup_vref (VREF_6th | VREF_COMP1 ); //5.10/1.27??V
//expected 0.6 volts range for above code |
The code delivered 1.27 volts to the comparator instead of the expected 0.6 volts.
Is there a way to deliver 0.6 volts using VREF_6th?
Thanks,
Boyce _________________ boyceg1@gmail.com |
|
![](templates/subSilver/images/spacer.gif) |
Ttelmah Guest
|
|
Posted: Sun Feb 14, 2010 11:25 am |
|
|
Read the data sheet.
You are misunderstanding how the bits work, and what you can do.
Section 8.1
You basically have the choice of a selection from the high range, low range, _or_ the 0.6v reference.
Then look at the registers. Look at VRCON. Note that selecting C1VREN, _overrides_ the selection of the 0.6v reference.
This is what is happening in the above.
Since you are accessing VRCON, and not selecting the high range, low range is selected, 0 is loaded as the selection, so you get basically 1/4 of the supply voltage. 5.1*0.25 = 1.275v.
If you want to use the 0.6v ref, _just select Vref_6th_. If you want to use the Vref divider, then you need to use VREF_COMP1.
Best Wishes |
|
![](templates/subSilver/images/spacer.gif) |
Boyce
Joined: 07 Feb 2010 Posts: 39
|
|
Posted: Sun Feb 14, 2010 11:40 am |
|
|
I was sure I had tried this before. It works. Feel a little silly...
Code: | setup_vref (VREF_6th); //5.07/0.581V |
The code I sited before appeared to be closer to what I had gotten to work.
Thanks,
Boyce _________________ boyceg1@gmail.com |
|
![](templates/subSilver/images/spacer.gif) |
|