PSoC™ 4 Forum Discussions
text.format{('custom.tabs.no.results')}
HI,
We want to design a Touch module using PSoC4 MCU (Capsense).
The shape and length of the Touch sensor will vary based on the project requirements.
If we want to develop only one version of the software, we can adjust the parameters of the Touch module based on the project requirements through UART or SPI communication. Can you suggest which parameters need to be retained? Can we store these parameters in the MCU?
Show LessHello community, I'm posting about a project with SMBus slave used in Psoc 4 microcontroller. However, I'm facing difficulties when trying to intervene in the interrupt of the SMBusSlave_INT.c file because the default response in the interrupt at TX_EMPTY line is not correct with the function sent from the master. I have tried to intervene in the SMBusSlave_ISR_EXIT_CALLBACK function, but it didn't solve the problem. Has anyone worked with SMBus Psoc 4 before and can help me, please? Thank you.
Show LessHello.
I've been stuck in this for weeks now without finding the solution.
The toolbar that was there before disappered suddenly when I was working with my project. I tried to get it back and without knowing what I did I also lost the menubar. Now I can't do anything in the project.
I have tried to uninstall the program more than once now, but every time I reinstall the program it installs without a toolbar and menubar. What can I do?
I'm currently using win10 home edition.
Show Less
I'm doing the initial development on a PSOC 4 design. At present I have a small UDB test function. I added a simple UART implementation to send "Hello World" and then echo characters. But it never gets to any of this.
The first call in main() is cyfitter_cfg(). The next to last call in that is ClockSetup() it ends with
(void)CyIntSetVector(8u, &CySysWdtIsr);
CyIntEnable(8u);
CY_SET_REG32((void *)(CYREG_WDT_CONFIG), 0x00000000u);
As ClockSetup() and cyfitter_cfg() unwind, execution starts over in cyfitter_cfg(), and the second time through, it ends up in the unhandled interrupt loop.
I presume it got there because there was not wdt interrupt handler. But my real question is why did the tool chain initialize wd interrupts when I didn't ask for any? Right now this is an experimental development project to familiarize myself with the hardware and tool chain and to build some UDP/PLD pieces that will go into the final project. I don't need or want any WDT functionality at this point. Maybe I'm missing something, but it is basically the code the tool chain generated except for the following, which I put in main()
int main(void)
{
cyfitter_cfg();
UART_1_Start();
UART_1_UartPutString("Hello World\n");
ShiftReg_1_Start();
ShiftReg_2_Start();
for(;;)
{
uint8 ch;
if ((ch = UART_1_UartGetChar())) {
UART_1_UartPutChar(ch);
}
}
}
Show Less
can I pass the component created in the component CatLog in psoc 4 as parameter to functions?
I am successfully using an unconfigured SCB, using firmware to toggle between SPI and I2C modes. Now I would like to add DMA control.
Background: I am using a PSoC4-BLE module. There are very few GPIO pins, so the I2C and SPI buses share the same GPIO pins. To change SCB modes, I use the component APIs, SCB_SpiInit() and SCB_I2CInit(). Whenever I change SCB modes, also I adjust the High-speed IO Matrix (HSIOM) to connect the right GPIO pins to the appropriate SCB inputs and outputs. It's a bit rough, but it works.
Now I would like to implement two DMA channels to control TX and RX functions while using SPI mode. This is easy with an SPI component, using CE224339 as a model. However, in the TopDesign, when I change the SCB mode from "SPI" to "Unconfigured", the SCB output terminals that connect to the DMA channels disappear.
I've been searching the component datasheets, CEs, and AppNotes. I can't find how to attach the DMA input triggers to an unconfigured SCB while it is being used in SPI mode.
Surely there is a way to do this. Perhaps there are internal connections somewhere in the HSIOM? Any advice would be appreciated.
--zim
[Edit:
I've just looked in the Architecture TRM, and found that the DMA trigger sources can be selected by setting the right value in PERI_TR_GROUP_TR_OUT_CTLx[5:0]. This should allow me to connect the SCB source to the DMA trigger during run-time. To allow the project to compile without a trigger, I can uncheck "Enable trigger input" in the DMA.
But I still have a few questions:
Besides connecting the trigger via the PERI register, there are some SCB settings needed by the DMA functions. I think I need to use the SCB APIs to configure the FIFO interrupts? For example:
- SCB_TxSetFifoLevel( uint32 level );
- SCB_Set_TxInterruptMode(SCB_INTR_TX_FIFO_LEVEL);
- SCB_Set_RxInterruptMode(SCB_INTR_RX_FIFO_NOT_EMPTY);
- SCB_EnableInt();
I hope this solution is functionally equivalent to the code example, but will allow me to use the Unconfigured SCB. Is anything else required? Is there an easier way to do this?
/Edit ]
Show LessHello,
I'm having a build error in my PSoC 4.2 program and whenever I try to build the program it gives me this error:
1) elf section '.text' is not within region 'rom'
2) elf section '.eh_frame' will not fir in region 'rom'
3) Build error: region 'rom' overflowed by 2896 bytes
4) Build error: The command 'arm-none-eabi-gcc.exe' failed with exit code '1'.
The first 3 lines of error says that it's located in the file 'cm0gcc.ld'
Also, for reference, the type of PSoC that's being used is the PSoc4-40 QFN: CY8C4245LQI-483 QFN40
Show LessHii,
I am using Kinetic-KM64 Microcontroller as a master & CY8C4245 AXI-483 as a Slave. I am using Cap sense Keypad in Slave side.
Problem_1- During I2C communication whenever I press any Button, I send low to high Pulse (Interrupt) to the Master, so my Master get Interrupt on pin & Master understand that Slave wants to communicate me. Then Master sends Address frame, but the problem is I don't get the acknowledgement from the slave CY8C4245 AXI-483.
Please check attached Logic Analyzers I2C communication Waveform.
Problem_2-My slave address is 0XC8 but I am not able to assign slave address 0xC8.I get error that I2C address must be between 0x08 &0x78.other address is now allowed by I2C specification.
Address is shifting so I used 0x64 address then I get 0xC8 (1100 100 x) binary address in I2C configuration window. Is it correct configuration?
Please check attached Images of I2C configuration & Code.
Regards
AJ
Show LessDear Sirs and Madams,
I understood that when using ECO on PSoC4S Plus, We need to call the API inside main.c of PSoC Creator.
I refer to PSoC Creator sample code CE221247 – PSoC 4100S Using ECO PLL Low Level APIs, and I understand that it uses APIs to switch.
I heard that from PSoC Creator 4.4, it is not necessary to write API in main.c, and by setting the GUI of the clock of Design Wide Resource(DWR), will it switch to ECO in the boot process?
If the above is correct, is the corresponding Boot component version V6.0 or later?
For example,
Does it work IMO at startup and automatically switch to ECO in the boot process just by setting the GUI from the clock of DWR in PSoC Creator as follows without the description to switch the clock in main.c ? Is this true?
We recognize that the above clock GUI settings alone will not switch, and we believe that the following API must be written in main.c.
CySysClkWriteHfcklDirect(CY_SYS_CLK_HFCLK_ECO);
CySysFlashSetWaitCycles(24);
Because the "CySysClkWriteHfcklDirect" API is not found to call in generate source of the project.
/* System Reference Guide V6.10 URL */
Regards,
Show LessHi,
i would like to display the results of a division as a float using sprintf and display it using the UART communication component.
My code is give below.
float ft,db;
UART_UartPutString(buffer);
I don't get any value at all on my terminal program.
Just
value=
I am unable to understand how to display float values using sprintf.
I am using PSOC Creator 3.2
thanks
a
Show Less