PSoC™ 4 Forum Discussions
Hi All,
This question is related to my original programming clarification case #00562834.
To summarize the case, I was having problems programming a 022001-00 module mounted on a board, but was able to program it with a MiniProg3 programmer. I had conference call with your staff, and in preparation for the call, I had switched to a much shorter cable (about an inch) instead of the original 18 inch cable I had been using. When I demonstrated the "problem" during the call, the module was acquired and successfully erased -- problem solved. Since the call, I have moved away from the project for several weeks, but have now returned to it.
So, using the erased module (and the same short cable), I am unable to set the CPU clock to 48 MHz to enable programming. Attempts to do so fail at pollsromstatus() immediately after WriteIO (CPUSS_SYSREQ, SROM_SYSREQ_BIT | SROM_CMD_SET_IMO_48MHz) at the bottom of Page 22 of CY8C4xxx, CYBLxxxx Programming Specifications, Document number 002-22325 Rev *E. pollsromstatus() returns 0x80000000 every time it is read for the entire timeout period of 1 second.
There is no mention in the programming document, but I believe there is a way to recover from this error because I was able to reprogram the module using the MiniProg3 without any issues. Having reprogrammed it, my firmware can now successfully acquire, set the IMO clock and read the CPU's ID. So my question is: how should firmware recover from getting this incorrect status value (0x80000000) back after (unsuccessfully) attempting to set IMO clock?
Thanks,
Scott
Show LessHello,
I am using the CYBLE-0220001--00 module on PSoC 4.3. and I am developing an asset tracking product and there will be lots of assets in one place. My problem is that currently, I have set a local name by using CyBle_GapSetLocalName("Asset") function. But I want to advertise its local name identify by using the last 4 characters of MAC address like "Asset-A0B2" So that we can tag A0B2 on our product for further identification. Could you please help me to get the MAC address of my BLE I have tried below code but no expected result.
cyBle_deviceAddress.bdAddr[0] = CYBLE_SFLASH_DIE_X_REG;
cyBle_deviceAddress.bdAddr[1] = CYBLE_SFLASH_DIE_Y_REG;
// cyBle_deviceAddress.bdAddr[2] = CYBLE_SFLASH_DIE_WAFER_REG;
// convert the values to ascii and store in the device name field.
DeviceName[0] = ((cyBle_deviceAddress.bdAddr[1] & 0xF0) >> 4) + 48 ;
DeviceName[1] = (cyBle_deviceAddress.bdAddr[1] & 0x0F) + 48 ;
DeviceName[2] = ((cyBle_deviceAddress.bdAddr[0] & 0xF0) >> 4) + 48 ;
DeviceName[3] = (cyBle_deviceAddress.bdAddr[0] & 0x0F) + 48 ;
If you can provide example code. it would be great.
Thanks in advance.
Regards.
Neeraj Dhekale
Show LessHi Support Team,
Could you help solve a problem I am facing.
I am expecting a ADC SAR SEQ interrupt to fire whenever the threshold limit compare mode is matched. But I find that the local interrupt is firing every time whether or not the threshold limit condition is met.
Here is the code snippet I am using -
CY_ISR(ADC_SAR_SEQ_ISR_LOC)
{
interruptCounter++;
uint32 intr_status;
uint32 range_status;
/* Read interrupt status registers */
intr_status = ADC_SAR_SEQ_SAR_INTR_MASKED_REG;
/* Check for End of Scan interrupt */
if((intr_status & ADC_SAR_SEQ_EOS_MASK) != 0u)
{
/* Read range detect status */
range_status = ADC_SAR_SEQ_SAR_RANGE_INTR_MASKED_REG;
if((range_status & (uint32)(1ul << CH0_Vin)) != 0u)
{
result[CH0_Vin] = ADC_SAR_SEQ_GetResult16(CH0_Vin);
}
/* Clear range detect status */
ADC_SAR_SEQ_SAR_RANGE_INTR_REG = range_status;
dataReady |= ADC_SAR_SEQ_EOS_MASK;
}
/* Check for Injection End of Conversion */
if((intr_status & ADC_SAR_SEQ_INJ_EOC_MASK) != 0u)
{
result[TEMP_CH] = ADC_SAR_SEQ_GetResult16(TEMP_CH);
dataReady |= ADC_SAR_SEQ_INJ_EOC_MASK;
}
/* Clear handled interrupt */
ADC_SAR_SEQ_SAR_INTR_REG = intr_status;
}
int main()
{
CyGlobalIntEnable;
Opamp_1_Start();
/* Init and start sequencing SAR ADC */
ADC_SAR_SEQ_Start();
ADC_SAR_SEQ_IRQ_Enable();
ADC_SAR_SEQ_StartConvert();
/* Enable interrupt and set interrupt handler to local routine */
ADC_SAR_SEQ_IRQ_StartEx(ADC_SAR_SEQ_ISR_LOC);
Timer_Int_StartEx( Timer_Int_Handler );
for(;;)
{
}
}
Am I missing anything here. Any help would be greatly appreciated.
Also I looked into the ADC datasheet and find below -
Limit detect
This option allows you to enable an interrupt if any of the channels 0 through 7(15) or the injection channel trigger the limit criteria set by the Low limit or High limit and the Compare mode parameter.
As per above statement, Interrupt should fire whenever limit criteria is matched.
Thanks.
Jitender.
Show LessGood afternoon,
On my project, I have implemented FOTA functionality for both Stack & Application on the PSoC 4.
I managed to donwload new BLE Stack & Application firmware with CySmart tool on an Android device using "Two separate files" method.
My question: is it possible to combine the Stack.cyacd & Application.cyacd files in one cyacd file, in order to use "Combine file" method?
Thank you
Bill
Show LessRookie question here. I just got a CYCKIT-042-BLE-A.
The baseboard says “CYCKIT-042-BLE-A PIONEER BASEBOARD” and has a CY8C5868LTI-LP039 installed on it.
The plug-in module has a CY8C4248LQI-BL583.
With AN91184, which processor am I programming: the baseboard’s CY8C5868LTI-LP039 or the module’s CY8C4248LQI-BL583. AN91184 discusses hardware connections to the baseboard but has BLE which is only on the plug-in module. What am I not understanding?
Show LessI'm developing a product using a USB PSoC 4 and I'll need to provide a way for customers to update firmare.
I know Cypress provides a USB HID bootloader client for Windows but not Mac. However many potential customers use Macintosh and it's not realistic to expect them to buy Windows and run it in a partition just to update my product's firmware.
- Has anyone created a Mac port of the bootloader client?
- Is there a PSoC USB bootloader that enumerates as mass storage? i.e. Where a file to be bootloaded is simply copied to the virtual drive on the host? This should work on either Windows or Mac with no need for a host program.
- Any other suggestions on how to enable Mac users to update PSoC firmware?
Show LessERROR: address 0x82e2 of .\CortexM0\ARM_GCC_484\Debug\Reload Pro.elf section `.text' is not within region `rom'
ERROR: .\CortexM0\ARM_GCC_484\Debug\Reload Pro.elf section `.eh_frame' will not fit in region `rom'
ERROR: address 0x82e2 of .\CortexM0\ARM_GCC_484\Debug\Reload Pro.elf section `.text' is not within region `rom'
ERROR: address 0x82e2 of .\CortexM0\ARM_GCC_484\Debug\Reload Pro.elf section `.text' is not within region `rom'
ERROR: section .cyloadablemeta loaded at [00007fc0,00007fff] overlaps section .text loaded at [00001b80,000082e1]
ERROR: region `rom' overflowed by 0 bytes
collect2.exe: error: ld returned 1 exit status
The command 'arm-none-eabi-gcc.exe' failed with exit code '1'.
I have tried to refer to other cases in the community but still could not solve it. Attached please find a file for help. Best regards.
thank you
Show LessI have a fixed-stack bootloadable project with PSOC4. Separately, when I build the bootloader, it reports 88 kB of space. But when I build the bootloadable project, it reports the bootloader is 131072 bytes. Even if I manually override the application start space, I can't recover that lost space that I need for the application.
Any ideas of the descrepancy?
Show LessHi
I usually using sysclk as a main timer source clock in other arm cortex based MCU.
In topdesign file of the PSoC Creater4.3, I can't find the way how to use sysclk as a source of the clock component.
there is only available HFCLK .
How can I get it?
Show LessHello,
I am using the PSoC4.3 Device: CYBLE-0220001-00 module and I want to store value in EEPROM but. I am getting an error message that EEPROM/EmEEPROM is not supported by the selected device. If it is not supported then what is the alternate option to do the same?
Thanks and regards,
Neeraj
Show Less