PSoC™ 4 Forum Discussions
I'm looking into programming my boards in a production environment. I've looked into OpenOCD and am working with those folks on expanding the current coverage to include more devices. As a backup plan I read the app note about using another PSoC as a programmer in what's called HSSP.
I'm designing a board that will have a PSoC 5LP on board connected to a FM24V10 FRAM part. The SWD pins are connected to a set of pogo pins which will probe my PRoC BLE module board (CYBLE-222005-00). Those pins are also brought out to a header which will connect to the board running OpenOCD.
If I just use the PSoC 5LP and HSSP programming I won't have issues (at least in theory). But if I want to use the board running OpenOCD it will see both the 5LP and the ProC BLE so how do you address different devices? I know that under the hood when you program by SWD it probes the chip using the DAP interface and reads the Silicon ID. That is then compared to the Silicon ID inside of the hex file you're using to program. What I haven't been able to find is what happens when there's more than 1 device on the SWD "bus"?
Thanks in advance for any helpful advice and information!
Show LessHello,
So, my question is really simple, i need to connect an analog pin to an ouput analog pin. On the PSoC 4200 BLE CY8C4247LQ*-BL483 it work, but on the PSoC 4000 CY8C4014LQI-412, it doesn't work and i don't know why 😕
So do you have an idea?
My goal is to use an Amux later.
Thanks you 🙂
Show LessCurrently I'am working on my first PSOC (4 ble) project. Within this project I apply two TCPWM components for frequency measurements. From the documentation (AN92584, AN86233 and the PSOC 4 BLE TRM) I understand that the TCPWM components are kept powered up in the sleep and deep sleep power modes. Because of this I expected that I can enter deep sleep (frequency measurement isn't working then but that is okay), wake-up (on system tick from WDT) and continue using the TCPWM components. But this appears not to be the case because frequency measurements don't restart. After putting the components to sleep before entering deep sleep fixed the problem:
TimCtr_CADANCE_Sleep();
TimCtr_FLYWHEEL_Sleep();
CySysPmDeepSleep();
TimCtr_CADANCE_Wakeup();
TimCtr_FLYWHEEL_Wakeup();
My problem is that I don't understand the apparent mismatch between the information and observed behavior. Can someone please enlighten me 🙂 A stripped down version of the project is included in this post.
Kind regards,
Jan
Show LessHI,
i would like to edit the Cysmart Android App and especially the Navigation Drawer, so i can choose from there a BLE Service, which i've created.
I've edited so far the NavigationDrawer with my own structure. On my navigation there is a parent-item which has three child-items. Also i've created a ServiceFragment which works great so far. My goal is now to implement it in that way, that when i choose e.g. the first child-item on the NavigationDrawer, that it opens the ServiceFragment that i've created.
My created service is a Fragment and not an Activity. Therefore i have to open the Fragment from a Fragment (NavigationDrawer). I've tried some solutions with the FragmentManager, but i can't find a solution for this, as the App always crashes.
What does work is, when i try opening the existing AboutFragment with this (Code is in NavigationDrawerFragment):
private void selectChildView(String childText) {
if (childText.equalsIgnoreCase(getResources(). getString(R.string.navigation_drawer_testmenu))) {
AboutFragment aboutFragment = new AboutFragment();
displayView(aboutFragment);
mDrawerLayout.closeDrawer(mFragmentContainerView);
}}
But when i try this with my own ServiceFragment that i've created, it crashes. Even when i'm connected to my BLE Usb Dongle.
So does anyone have any solution ideas? How and what do i have to implement to achieve my goal?
I really would appreciate any help. Thank you very much in advance!
Best regards
I'm using PSoC BLE Pioneer,
Reading ADC documentation of PSoC I've found this:
float32 (uint32 chan, int16 adcCounts)
Description:
Converts the ADC output to Volts as a floating point number. For example, if the ADC measured 0.534 volts, the return value would be 0.534. The calculation of voltage depends on the value of the voltage reference. When the Vref is based on Vdda, the value used for Vdda is set for the project in the System tab of the DWR.
Parameters:
chan: ADC channel number.
adcCounts: Result from the ADC conversion
Return Value:
Result in Volts
Side Effects:
None
My question, why I have to pass ADC channel number? The channel is already implicit on Resultfrom the ADC conversion.
My actual reading is:
Ref_16 = ADC_GetResult16(1u);
Ref = ADC_CountsTo_Volts(1u, Ref_16);
so, ADC channel number seem redundant.
Thanks for help,
Fabrizio
Show LessI am trying to write firmware for the 244110 module. I have the dev board and the 042 programming board.
I have the BLE stuff all working. I am having trouble with the UART.
There are 2 example project for the 244110 when I create a new project. One is for transmitting and one is for receiving. Not sure why there isn't a single example that shows both, but ok. These examples use the LCD, which I don't have either, so I took that out.
I am trying to just send any data transmitted out back into the receive. I do this by just having a wire go from the TX pin to the RX pin. I am using pin P1.0 for RX and P1.1 for TX.
That is my first question. Should I have any trouble using those pins like that? Can I just connect them together and have the bytes go out one pin and come right in the other? I don't have an easy way to connect a serial port to my laptop, so I was hoping this would work.
I took the RX example and TX example and smashed them together and then modified the main.c to simply be this:
int main()
{
char8 ch; /* Data received from the Serial port */
char8 ch2;
CyGlobalIntEnable; /* Enable all interrupts by the processor. */
isr_1_Start(); /* Initializing the ISR */
UART_1_Start();
ch = 0;
while(1)
{
ch++;
UART_1_WriteTxData(ch); /* Sending the data */
/* Check the UART status */
ch2 = UART_1_GetChar();
/* If byte received */
if(ch2 > 0u)
{
CyDelay(200u);
}
CyDelay(200u);
}
}
As you can see I just transmit a character and then try to receive it. Nothing ever comes in. I set a break point inside the if (ch2 > 0u) and it never hits the break point. This is similar to what I am seeing in my BLE firmware that tries to do the same thing.
I have attached a zip file to this post with the simple example project. Please tell me what I am doing wrong so I can get this working.
Show LessI am testing my code in a CY8C4247LQI-BL483 device (pioneer ble board) but I have in mind to develop a board to the end device.
Now we have a project in which we control 6 pwm outputs with no problem. But now we have been asked to control 18 pwm outputs. I read that it was possible (http://www.cypress.com/blog/psoc-sensei-blog/how-many-pwm-outputs-can-psoc-3-or-5-generate says that 48 can be possible). I tried adding 18 pwm and I received an error. Then, I realize that pwm blocks can be configured with 2 outputs so at least I got 12 outputs right now: 4 pwm and 4 tcpwm.
I can't add more tcpwm blocks. I get: Resource limit: Maximum number of Timer/Counter/PWM exceeded (max=4, needed=10)
I also have an adc with 2 inputs, one button to generate interrupts, ble unit and 3-4 input pins to measure battery level or that kind of stuff. I tried removing adc sar req but I get the same response. What can I do? Is there a bigger psoc proccesor which can handle 18 pwm and all the stuff I get? On the contrary, what could we do to solve this? 2 psoc talking by uart?
I can't upload the project since it is not mine but my company. Sorry for that. But I could upload a couple of images in case you need them to see how we added pwm or something like that.
Show LessI am controlling an LED's brightness using TCPWM line out to drive the cathode with the LEDs anode connected to VCC. I am also running BLE stack.
When the PRoC CYBLE-022001-00 first powers up, the LED is turned on for a while until the PWM is initialized to generate a high output on it's 'line' port... which I connected to an output pin.
How can I set the PWM components 'line' output to be high at initial powerup of the module?
How do I see the ARMs program memory opcode to single step starting from it's reset vector address at powerup?
It seems there is startup code executing which is esoteric and non-alterable to the programmer which makes me question exactly how much control is exposed to the designer in these GUI based IDEs. This lack of startup control anomaly is a classic example.
Show LessI am very new to Microcontroller and especially Cypress programming and have therefore been looking at the code examples. I am currently trying to understand the function of the SW_Tx_UART Component.
First of all I would like to know, how it is possible to change the clock the component is using? And how do I know which it is currently using?
For documentation sake I would now like to calculate the expected baud rate error. The following formula is given in the SW_Tx_UART- Datasheet:
Divider = (int) (CPU_CLK+(BaudRate/2))/BaudRate
%err = (BaudRate - CPU_CLK/ Divider)*100% + CPU_CLK_Accuracy
But which values do I need to enter here? Is the CPU-CLK the same as the SYSCLK? I also don't know in which units the values have to be given since I don't seem to be able to fully understand the relationship between clock frequency and baud rate.
For example if the used clock is runnig at 48000000Hz (48MHz) and a I set a Baudrate of 115200 Bd that would give me a divider of 417.166 (ignoring the units). The result seems a bit high I think...
Any help in understanding the relations of clock and baudrate is much appreciated.
Thanks
Show Lessi have been using psoc-1. there is refhigh and reflow available for RTD excitation.
is that any facility in psoc-4 that fulfith same??
because i want two save my both IDAC in some other purpose.
Show Less