This is a known issue in the ES2 silicon for PSoC 3 and PSoC 5. This issue is not applicable to PSoC 3 ES3 or PSoC 5LP Production Release silicon. VIDAC0 does not operate correctly when its output is greater than 2.4 V. The other three DACs work according to specifications.
- PSoC Creator allows the user to force the VDAC8 component into a fixed DAC location. PSoC 3 and PSoC 5 have up to four DAC locations that are used for either the VDAC8.
- If you use PSoC Creator 2.1 or later, the graphical analog device editor can be used to force placement of any analog block. To do this follow these steps and refer to Figure 1.
- Select the Design Wide Resource file ProjectName.cydwr, where “ProjectName” is the name of your project.
- Select the Analog tab, which displays a representation of the PSoC analog structure.
- Right-click on the DAC block labeled DAC0 and select Relocate.
- Select one of the other DAC locations that appear in the drop-down menu. In this case, DAC1 is selected because it is not used.
Figure 1. Selecting DAC Block in PSoC Creator 2.1
For PSoC Creator versions prior to 2.1, use the following procedure. In this example, the instance name of the VDAC8 in question is “VDAC8_1”. Refer to Figure 2 or do the following:
- Go to .cydwr file
- Select the Directives tab.
- In the Component (Signal) Name section, type "\:viDAC8\"
- Set the Directive type to "Force Component Fixed"
- Add "F(VIDAC,1)" in the Directive Value. For other DACs, replace '1' with 2/3.
- Compile and go to cyfitter.h file and check if all DAC User Modules are using the respective hardware DACs. Search for the string “VDAC8_1_viDAC8”. Find the lines of code similar to the following:
/* VDAC8_1_viDAC8 */
#define VDAC8_1_viDAC8__CR0 CYREG_DAC1_CR0
This confirms that the viDAC8 used is now DAC1 instead of DAC0
Figure 2. PSoC Creator Directives Tab
Refer to the errata document of PSoC 3 (ES2) and PSoC 5 (ES1) for more details.