Hello
Thanks for your help, but i need more information, can you read my code?
i have to control PMSM by 1-shunt, sensorless. so i need two point of dc current measurement.
so in ptutriggerlist volatile short PTUTriggerEventList[2][2]@0x02600={0x0520,0x0600,0x0000};
but i need change address {0x520,0x0600,0x0000} -> {delay1, delay2, 0x0000} because pmsm change pmfvalue every peroid.
delay1 = (dutycycle1+PMFTBA_DEADTIME+150)>>2;
delay2 = (dutycycle1+PMFTBA_DEADTIME+300)>>2;
PTUTriggerEventList[0][0] = PMFVAL0;
PTUTriggerEventList[0][1] = PMFVAL2;
so i made code, but when operate this code, RSTAR_EIF eroor is occurred. i can't solve this problem. can you help one more?
Thanks. and this code is not complete, but i want test delay1, delay2 operate in ptutriggerlist
/*
* PTU.c
*
* Created on: Jan 13, 2016
* Author: sang-bong
*/
#include "Define_Header.h"
#include "Define_PTU.h"
Uint16 sample_time1 = 0x0520;
Uint16 sample_time2 = 0x0610;
Uint16 delay1 = 0;
Uint16 delay2 = 0;
Uint16 dutycycle1 = 0;
Uint16 dutycycle2 = 0;
volatile short PTUTriggerEventList[2][2]@0x02600;
void Init_PTU(void)
{
_PTUIEL.Bits.TG0DIE = 1; // Enable Trigger Generator 0 Done Interrupt
dutycycle1 = PMFVAL0;
dutycycle2 = PMFVAL2;
delay1 = (dutycycle1+PMFTBA_DEADTIME+150)>>2;
delay2 = (dutycycle1+PMFTBA_DEADTIME+300)>>2;
PTUTriggerEventList[0][0] = PMFVAL0;
PTUTriggerEventList[0][1] = PMFVAL2;
//PTUTriggerEventList[0][2] = 0x0000;
PTUPTR = PTUTriggerEventList; // Map start address & offset for 2nd (currently not used) list
TG0L1IDX = 0; // Same as TG0L0IDX
PTUE_TG0EN = 1; // Enable Trigger Generator 0
PTUDEBUG_PTUT0PE = 1; // Enable Trigger 0 on PS0 pin
//PTUDEBUG_PTUREPE = 1; // Trigger generator on PS1 pin
PTUC_PTULDOK = 1;
}
interrupt VectorNumber_Vptutg0dn void PTUTrigger0Done_ISR(void)
{
//LED2_ON; // debug pin ON //
PTUIFL = (1 << 0); // Clear flag
//LED2_OFF; // debug pin OFF //
}
interrupt void ADC0error_ISR(void)
{
ADC0CTL_0_ADC_SR = 1;
}