PSoC™ 5, 3 & 1 Forum Discussions
Hello all,
I am doing one project which has controller of cy8c3244pvi-133
I am doing one application where I am using boost converter and sleep mode.
my boost converter works fine if I dont put it in standby mode while entering controller into sleep mode. It works for for Vbat of 1V
but when I put boost converter to sleep mode then I doesnt work for input battery voltage of 2.5V
I am writing following sequence:
BoostConv_Stop();
CyDelay(1);
CyPmSaveClocks();
CyDelay(1);
BoostConv_SetMode(BoostConv_BOOSTMODE_STANDBY);
// Entry SLEEP i.e lowest power mode
CyPmSleep(PM_SLEEP_TIME_NONE, PM_SLEEP_SRC_PICU);
CyDelayUs(30);
BoostConv_SetMode(BoostConv_BOOSTMODE_ACTIVE);
CyDelay(1);
BoostConv_Start();
CyDelay(1);
BoostConv_SelExtClk(BoostConv__EXTCLK_ILO);
CyDelay(1);
// Restore clock tree configuration
CyPmRestoreClocks();
CyDelay(1);
please guide me
Show LessThe attached project implements Delta Sigma ADC's output data buffering using the DMA.
Since the spoke width is of 16-bits for the peripherals like ADC, we need two independent DMAs to buffer the output data in a memory location. The ADC's input channel selection is done using an Analog Mux whose select lines are driven by a state-machine. Once the current ADC conversion is over, Analog Mux's channel select lines will change to connect the next ADC's channel.
The attached project works in both PSoC 3 and PSoC 5 as well. Only difference is that PSoC 3 requires endian swapping before transferring the ADC data to memory.
Show LessHi every one !!!
Can anyone tell me what does it means sw_Read() in AN60024 ?
Here is piece of code.
/* Init switch variables */
uint8 switches[2] = {0, 0}; /* [0] = current, [1] = previous */
switches[0] = switches[1] = SW_Read(); /* 0 = pressed, 1 = not pressed */
I believe is a kind of fuction that get the state of pin wher the switch is conected, is that correct.?
Thank you very much
Show LessI am attempting to transfer data from an ADC, to a filter bank, and then to SRAM usign DMAs. I started the project by using the filter bank example project. Data does move through each perepherial however the results being written to memory are incorrect.
Please assist me in correcting the DMA configuration (or other flaws) that are causing the weird behavior. The program is setup right now so a break point hits after the data buffer fills off the filter.
Attached is the project.
Thanks
Show LessHi,
I'm trying to work out why my delta sigma ADC seems to be very noisy towards the top end of its range (3000 / 4095). My ADC is set up as follows: Single Sample, 12-bits, 40000SPS, Single ended input mode, Vsssa to 1.25v, Buffer Gain 1, Rail to Rail, Vref = Vdda/4. I have 12 PSoC pins connected to an analogue multiplexer, and am using a simple RC filter on each input pin.
When the input voltages are low (around 500/4095) there is very little noise, sometimes it can be as low as 1.5 LSB. But around 2000/4095, I can see around 6-10 LSB. By 3000/4095, I can see about 20LSB noise!
I'm using separate analogue and digital linear regulators with ferrite bead filters. I have a continuous ground plane under the PSoC. I have also read the several application notes on achieving good ADC performance, and I believe I am following all of the advice.
Is this amount of noise to be expected, or am I doing something wrong?
Hugo
Show LessHi,
I am sure I saw a document/example for measuring multiple thermistor inputs, using (digital) output signals to multiplex between the channels. Can someone link me to the place I saw this ?
Theoreticly I know how to do this, but I remember seeing a whitepaper/application note which showed some advantages/disadvantages using this method.
My goal is to make a 16-channel thermistor measurement system.
Thanks
Patrick
Show LessHi,
How we can read I2C master more then 256 bytes from slave? Both Master and slave I2C are using PSOC 3.
Slave I2C Sub_Address size(bits) = 16 bits.
typedef struct _EZI2C_REGS
{
uint16 stat; /* R/W variable */
uint16 cmd; /* R/W variable */
uint16 volts[3][3]; /* R/W variable */
uint16 str[6u]; /* Read only to I2C */
} EZI2C_REGS;
EZI2C_REGS readI2cRegs;
I2C_UDB_M_MasterReadBuf() function :automatically reads an entire buffer of data from a slave device. We can't use this function to read single array data or specific location to the stucture.
We try the code on following and it failed to provide correct data.
I2C_UDB_M_MasterClearStatus();
CyDelay(2);
I2C_UDB_M_MasterReadBuf(EZI2C_SLAVE_ADDR, (uint8 *)&readI2cRegs.volts[0], sizeof(readI2cRegs.volts[0]) , I2C_UDB_M_MODE_COMPLETE_XFER);
while(0u == (I2C_UDB_M_MasterStatus() & I2C_UDB_M_MSTAT_RD_CMPLT))
{
}
I2C_UDB_M_MasterReadBuf(EZI2C_SLAVE_ADDR, (uint8 *)&readI2cRegs.volts[1], sizeof(readI2cRegs.volts[1]) , I2C_UDB_M_MODE_COMPLETE_XFER);
while(0u == (I2C_UDB_M_MasterStatus() & I2C_UDB_M_MSTAT_RD_CMPLT))
{
}
LCD_PrintInt16(readI2cRegs.volts[0][0]);
LCD_PrintInt16(readI2cRegs.volts[0][1]);
LCD_PrintInt16(readI2cRegs.volts[0][2]);
It only working by following code. The problem that we need to read more then 256 byte from the slave. How we can do it?
I2C_UDB_M_MasterReadBuf(EZI2C_SLAVE_ADDR, (uint8 *)&readI2cRegs, sizeof(readI2cRegs) , I2C_UDB_M_MODE_COMPLETE_XFER);
Thanks
Show Less<b>Is it possible to change the Data length field for the CAN maibox during the run time ?</b>
Yes . By default the data length for each of the CAN mailbox is defined in the CAN configuration window . In case if you need to change data length field for each of the message you are sending you need to modify the CMD register of the CAN transmitter .
The datalength is stored in the DLC field of the CMD register. The CAN TX CMD register contains 4 bits to store the DLC value. The bit 19:16 contains the DLC for each mailbox. Below is the code snippet to change this value
CAN_TX[Mailbox_No].txcmd.byte[2u] &= 0xF0;
CAN_TX[Mailbox_No].txcmd.byte[2u] |= No_of_Data_Bytes;
Through the above register write it is possible to change the DLC field during run time .
Regards,
Sobi
One of following method will resolve this problem, try these methods until the problem is resolved:-
Method 1:-
Register the vbscript.dll module by following these steps:-
a. Open a Command Prompt window.
o In Windows XP, click Start, Run, and type cmd.exe.
o In Windows Vista and Windows 7, Click Start, click All Programs, click Accessories, right-click Command Prompt, and then click Run as administrator.
b. Type the following command in the command prompt window and press Enter.
regsvr32 %systemroot%\system32\vbscript.dll
You should see the following confirmation message.
DllRegisterServer in vbscript.dll succeeded.
c. Now run PSoC Designer and check if problem is resolved.
Method 2:-
If steps given above are not working and you have used McAfee products in your machine earlier then run the McAfee Consumer Product Removal (MCPR) tool by following steps given below (If you have not used McAfee products, then try method 3): -
a. Download the MCPR tool from: http://download.mcafee.com/products/licensed/cust_support_patches/MCPR.exe and save it to a folder on your computer.
b. Navigate to the folder where you saved the file, and double-click MCPR.exe.
c. When you see the User Account Control dialog box, click Yes.
d. At the McAfee Software Removal screen, click Next.
e. At the End User License Agreement (EULA) dialog box, click Next to accept the agreement.
f. When prompted, type the Captcha information, which is case sensitive, to validate to application security, and then click Next.
o If you have Family Protection installed, type your Administrator user name and password and click Next.
o If you cannot authenticate, follow the on-screen instructions to obtain an uninstall code. If you do not have Family Protection installed, you will not receive this authentication prompt.
g. When you see the message CleanUp Successful, restart your computer. Your McAfee product will not be fully removed until after the restart.
Method 3:-
1. Uninstall PSoC Designer
2. Install Designer at location “C:\[Some Folder name without spaces]”, for example “C:\Designer\” folder.
One of these methods will definitely resolve the issue. Show Less