Legacy microcontrollers Forum Discussions
If i have new Infineon TriCore SAK TC1767 256F133HL microcontrolers need i some special tools to program it first time or can i write full backup from other one?
For reading/writing these MCU on board at bootmode i usually use HexProg, Magicmotorsport FLEX or Dimsport TRASDATA but i never try write new/empty MCU.
I will realy appriciete any help. Show Less
There is no mention of this 16-bit MCU being EOL in the near future, so I would greatly appreciate knowing the long term inventory and manufacturing situation for the CY96F615RBPMC-GS-UJE1.
I have spent many hours this week checking worldwide vendors in vain for the MCU, which is why my post here is a desperate last resort. There are no Cypress or Infineon vendors who have stock of that MCU (except for some shady sites in Hong Kong that claim to have thousands of pieces when in fact they do not). The current 8 month or longer lead times I am seeing from some of your vendors is not realistic at all.
Here's our problem. At the end of 2020 we made a request in Taiwan to order more, but we were told of long lead times. (We buy this MCU often and have for a very long time. That order in late 2020 was NOT our first order.) Well, that was the end of 2020, but we are still waiting even today. We are now told August 30th availability, which will have been more than 8 months since our initial order request in Taiwan. We will run out of stock at the end of this month of April. That is a serious problem for us, with very harsh consequences.
If Cypress can please supply me with insider information on how to acquire even several hundred pieces at any realistic price, I would appreciate that very much.
I look forward to your kind reply.
Thank you.
Addendum: The fact my post was moved into the "Legacy Products" section is rather concerning. It all the more emphasizes my desire to know the long term inventory and manufacturing situation surrounding this particular MCU. No replies after 24 hours is also not very encouraging.
Show LessHello,
I'm looking for this demo board but it got obsolescent.
Is there any similar board or a replacement?
Could I use to implement Ethercat the PSoC5LP or it is mandatory to use the FM3/FM4 family?
Thank you
Show Less• Install the HP Smart App following the on-screen instructions to the printer setup wizard.
• Now, open the HP Smart app and accept all the conditions.
• Then, add your HP printer model to the list and choose to set up your HP printer.
• Select your wireless HP printer to the available printer list.
• Connect your HP printer using the HP Smart App with Windows 10. Show Less
From what I understand the program flow should be like this.
//**Initialize DPS310
//**Read Coefficients
//**Setup Register of Sensor (Pressure:0x06 Temperature:0x07)
//**Setup Configuration register (0x09)
//**Read Pressure measurement Registers (0x00, 0x01, 0x02) (23:16, 15:8, 7:0)
//**Calculate using Formula the Actual measurement (Pressure or Temperature)
//**** Calculate pressure in Pascals
PRESSURE_SCALE = dps310_pressure_reading / DPS310_SCALE_FACTOR;
TEMPERATURE_SCALE = dps310_temperature_reading / DPS310_SCALE_FACTOR;
Final_pressure_reading = dps310_c00 + PRESSURE_SCALE*(dps310_c10 + PRESSURE_SCALE *(dps310_c20+ PRESSURE_SCALE *dps310_c30)) + TEMPERATURE_SCALE *dps310_c01 + TEMPERATURE_SCALE *PRESSURE_SCALE *(dps310_c11+PRESSURE_SCALE*dps310_c21);
//**** Calculate Temperature in Celsius
Final_temperature_reading = dps310_c0*0.5 + dps310_c1*TEMPERATURE_SCALE
However, I am having a hard time integrating it and making it work.
Here is a part of my code. ATTACHED is the full code
/*
* main.c
*
*/
#include//Declarations from DAVE Code Generation (includes SFR declaration)
int main(void)
{
DAVE_STATUS_t status;
uint32_t Timer1_ID, timer_status;
status = DAVE_Init(); /* Initialization of DAVE APPs */
if(status != DAVE_STATUS_SUCCESS)
{
/* Placeholder for error handler code. The while loop below can be replaced with an user error handler. */
XMC_DEBUG("DAVE APPs initialization failed\n");
while(1U)
{
}
}
/* Placeholder for user application code. The while loop below can be replaced with user application code. */
Timer1_ID = SYSTIMER_CreateTimer(MSEC_100, SYSTIMER_MODE_ONE_SHOT, (void*)Timer1_Timeout, NULL);
m_timer1_count=0;
timer_status = SYSTIMER_StartTimer(Timer1_ID);
while(m_timer1_count == 0);
Init_DPS310(); ///edit
DPS310_Read_Pressure();
while(1U)
//WAIT FOR dps310 FOR STARTUP
{
}
}
void Timer1_Timeout(void)
{
m_timer1_count++;
}//Timer1_Timeout
void DPS310_Interrupt_Handler(void)
{
}//BPS310_Interrupt_Handler
void DPS310_I2C_Write(uint8_t diw_register_address, uint8_t diw_write_command)
/*
* Purpose: Writes one byte of data into a DPS310 register
* Inputs: Register address and the data to write
* Outputs: None
*/
{
uint8_t diw_write_buffer[2];
//place register address and register contents in write buffer
diw_write_buffer[0] = diw_register_address;
diw_write_buffer[1] = diw_write_command;
I2C_MASTER_Transmit(&I2C_MASTER_DPS310, DPS310_SEND_START, DPS310_ADDRESS_SDO_NC, diw_write_buffer, 2U, DPS310_SEND_STOP);
while(I2C_MASTER_IsTxBusy(&I2C_MASTER_DPS310));
}//DSP310_Write
void DPS310_I2C_Read(uint8_t dir_start_register_address, uint8_t dir_read_byte_count, uint8_t *dir_data_read_buffer)
/*
* Purpose: Read one or more bytes of data from the DPS310 to the buffer specified
* Inputs: Address of the first register to read from, the number of data bytes to read and the address of the read buffer
* Outputs: None
*/
{
I2C_MASTER_Transmit(&I2C_MASTER_DPS310, DPS310_SEND_START, DPS310_ADDRESS_SDO_NC, &dir_start_register_address, 1U, DPS310_NO_STOP);
while(I2C_MASTER_IsTxBusy(&I2C_MASTER_DPS310));
I2C_MASTER_Receive(&I2C_MASTER_DPS310, DPS310_SEND_START, DPS310_ADDRESS_SDO_NC, dir_data_read_buffer, dir_read_byte_count, DPS310_SEND_STOP, DPS310_SEND_NACK);
while(I2C_MASTER_IsRxBusy(&I2C_MASTER_DPS310));
}//DPS310_Read
void DSP310_Read_MEAS_CFG_Reg(void)
/*
* Purpose: Read in the MEAS_CFG register and store it the DPS310_Mode_Sensor_register variable.
* Input:
* Output:
*
*/
{
DPS310_I2C_Read(DPS310_MEAS_CFG, 1U, &dsp310_meas_cfg_register);
}//DSP310_Read_MEAS_CFG_Reg
void Init_DPS310(void)
{
uint8_t dps310_tmp_coef_srce_flag;
//INITIALIZE SENSOR
do
{
DSP310_Read_MEAS_CFG_Reg();
} while (!(dsp310_meas_cfg_register & DPS310_MCR_SENSOR_RDY_FLAG));
//wait for coefficients to be available
do
{
DSP310_Read_MEAS_CFG_Reg();
} while (!(dsp310_meas_cfg_register & DPS310_MCR_COEFF_RDY_FLAG));
//REGISTERS 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21.... Total of 18 registers
DPS310_I2C_Read(DPS310_COEF_c0_B1, 18U, dps310_coefficients);
//Setup Pressure configuration register 0x06
DPS310_I2C_Write(DPS310_PRS_CFG, 0x00);
m_Delay_x_1msec(2);
//Read in the temperature coefficient source flag
DPS310_I2C_Read(DPS310_COEF_SRCE, 1U, &dps310_tmp_coef_srce_flag);
m_Delay_x_1msec(2);
//Setup Temperature configuration register
if (dps310_tmp_coef_srce_flag & 0x80)
{ //use external sensor
DPS310_I2C_Write(DPS310_TMP_CFG, 0x80);
}//if
else
{
DPS310_I2C_Write(DPS310_TMP_CFG, 0x00);
}//else
m_Delay_x_1msec(2);
//Setup interrupt and FIFO Configuration register
DPS310_I2C_Write(DPS310_CFG_REG, 0x00);
m_Delay_x_1msec(2);
// setup continous measurement (Config Register)
//dps310_write_data[0] = DPS310_MCR_CONT_PRS_TMP_MEAS;
//DPS310_I2C_Write(DPS310_CFG_REG, DPS310_MCR_CONT_PRS_TMP_MEAS);
//load coefficient values into variables
dps310_c00 = (dps310_coefficients[3] << 12) | (dps310_coefficients[4] << 4) | ((dps310_coefficients[5] >> 4) && 0x0f);
dps310_c10 = ((dps310_coefficients[5] & 0x0f) << 16) | (dps310_coefficients[6] << 😎 | dps310_coefficients[7];
dps310_c20 = (dps310_coefficients[12] << 😎 | dps310_coefficients[13];
dps310_c30 = (dps310_coefficients[16] << 😎 | dps310_coefficients[17];
dps310_c01 = (dps310_coefficients[8] << 😎 | dps310_coefficients[9];
dps310_c11 = (dps310_coefficients[10] << 😎 | dps310_coefficients[11];
dps310_c21 = (dps310_coefficients[14] << 😎 | dps310_coefficients[15];
dps310_c0 = (dps310_coefficients[0] << 4) | ((dps310_coefficients[1] & 0xf0) >> 4) ;
dps310_c1 = ((dps310_coefficients[1] & 0x0f) << 😎 | dps310_coefficients[2];
}
void DPS310_Read_Temperature(void)
{
DSP310_Read_MEAS_CFG_Reg();
//trigger a measurement if no background continuous temperature measurements
if ((dsp310_meas_cfg_register & DPS310_MCR_CONT_TMP_MEAS) != DPS310_MCR_CONT_TMP_MEAS)
{
//Trigger a temperature measurement
// dps310_write_data[0] = DPS310_MCR_TEMP_MEAS; //Command mode - temperature measurement
DPS310_I2C_Write(DPS310_MEAS_CFG, DPS310_MCR_TEMP_MEAS);
m_Delay_x_1msec(10);
DSP310_Read_MEAS_CFG_Reg();
}//if
m_Delay_x_1msec(2);
if (!(dsp310_meas_cfg_register & DPS310_MCR_TEMP_MEAS_RDY_FLAG))
{
//temperature measurement ready flag not set
m_Delay_x_1msec(3);
}
//Read in the three temperature measurement registers
DPS310_I2C_Read(DPS310_TMP_B2, 3U, dps310_temperature_reading);
//**** calculate temperature
TEMPERATURE_SCALE = *dps310_temperature_reading / DPS310_SCALE_FACTOR_1;
Final_temperature_reading = dps310_c0*0.5 + dps310_c1*TEMPERATURE_SCALE;
}//DPS310_Read_Temperature
void DPS310_Read_Pressure(void)
{
//Setup Configuration register for temperature measurement
DSP310_Read_MEAS_CFG_Reg();
//trigger a measurement if no background continuous pressure measurements
if (((dsp310_meas_cfg_register & 0x07) != DPS310_MCR_CONT_TMP_MEAS) &&
((dsp310_meas_cfg_register & 0x07) != DPS310_MCR_CONT_PRS_TMP_MEAS))
{
//Trigger a pressure measurement
DPS310_I2C_Write(DPS310_MEAS_CFG, DPS310_MCR_PRS_MEAS);
m_Delay_x_1msec(10);
DSP310_Read_MEAS_CFG_Reg();
}//if
m_Delay_x_1msec(2);
if (!(dsp310_meas_cfg_register & DPS310_MCR_PRESSURE_MEAS_RDY_FLAG))
{
m_Delay_x_1msec(3);
}
//Read Pressure measurement Registers (0x00, 0x01, 0x02) (23:16, 15:8, 7:0)
DPS310_I2C_Read(DPS310_PSB_B2, 3U, dps310_pressure_reading);
//**** calculate pressure in Pascals
PRESSURE_SCALE = *dps310_pressure_reading / DPS310_SCALE_FACTOR_1;
TEMPERATURE_SCALE = *dps310_temperature_reading / DPS310_SCALE_FACTOR_1;
Final_pressure_reading = dps310_c00 + PRESSURE_SCALE*(dps310_c10 + PRESSURE_SCALE *(dps310_c20+ PRESSURE_SCALE *dps310_c30)) + TEMPERATURE_SCALE *dps310_c01 + TEMPERATURE_SCALE *PRESSURE_SCALE *(dps310_c11+PRESSURE_SCALE*dps310_c21);
// TEMPERATURE
//Final_temperature_reading = dps310_c0*0.5 + dps310_c1*TEMPERATURE_SCALE
}//DPS310_Read_Pressure
void m_Delay_x_1msec(uint32_t delay_val)
{
uint32_t delay_cnt;
delay_cnt = delay_val * TIMER_DELAY_MUL_FACTOR;
TIMER_SetTimeInterval(&TIMER_0,delay_cnt);
TIMER_Start(&TIMER_0);
while(!TIMER_GetInterruptStatus(&TIMER_0));
TIMER_Stop(&TIMER_0);
}
Thank you and I hope you can help me. Show Less
I am trying to read ADC1 port P2.4. I went to IFXConfigWizard and select Sequence 1 - 6 and select channel 4 (P2.4). If want want to read the ADC only when require how do I do that. Currently I am able to read from the interrupt when I enable Interrupt Channel 4 (P2.4) like the example with Function name called Poti_Handler.
If I use the interrupt enable when I run the motor the motor not able to run properly. Is there any other around this. I do not need to read ADC while I am running the motor.
Thank you,
Eugene Show Less
The MCU CY96F348RSAPQCR-GS-UJE2 is LTB. Is CY96F348RSBPQCR-GSUJERE2 a direct replacement or what are the differencies between RSA and RSB version?
Thanks.
Jan Podlipný
Show Less
I am using 5 ISO1H816G all daisy chained together to drive 40 Outputs. I have integrated this well in my circuit driving the all of an SPI bus from my XMC4800.
However, my problem comes with its application. The ISO1H816G may drive multiple inductive loads that could be disconnected, at any point, beyond our control.
This causes not only an internal failure, but a physical failure too. The device always fails in the same place, top left corner, close to pin 1.
This can be quite spectacular, physically destroying the device. As we cannot control when a load may be disconnected, I have tried to use extra external protection.
I have tried external TVS diodes and Shottkey diodes for additional clamping on each output but to no avail. The device still fails on load disconnection.
This device really is one of the better ones I have found. I have actually used this device for years. I have always known this failure but only recently has it got in the way.
I would love to continue with this device if possible.
I'm hoping for any advice, anyone else who has experienced this issue or if this is a known issue, how to proceed.
Thanks in advanced,
Steven Show Less
I want to check the failure mode of the MCU to comply with IEC60335 (safety standard).
Please let me know if any of the following failure modes of the S6E2H14 port are not considered (it is considered that they will not occur).
1) High sticking
2) Low sticking
3) Sticking to intermediate potentials other than High / Low
4) Randomly fluctuates (High / Low switches randomly)
Also, are there any other port failure modes that are considered?
Thanks,
Tetsuo