TI中文支持网
TI专业的中文技术问题搜集分享网站

Dlp4500如何使用internal trigger进行内部触发?

目前我可以在pattern sequence 模式下利用J11的pin1实现external trigger的外部触发,但考虑到利用vs实现触发控制,因此我想利用internal trigger实现pattern sequence 模式下的内部触发,但是在源代码中一直没有找到发射内部触发信号的相关函数;也可能是我对内部触发的理解有所偏差,希望有了解的朋友能够予以解答和帮助,谢谢!

Jeremy Wu:

参考DLPC350中dlpc350_API中
int DLPC350_AddToPatLut(int TrigType, int PatNum,int BitDepth,int LEDSelect,bool InvertPat, bool InsertBlack,bool BufSwap, bool trigOutPrev)

* @paramTrigType- I – Select the trigger type for the pattern*0 = Internal trigger*1 = External positive*2 = External negative*3 = No Input Trigger (Continue from previous; Pattern still has full exposure time)*0x3FF = Full Red Foreground color intensity

0就是Internal Trigger

william yi:

回复 Jeremy Wu:

您好,你给出的应该是pattern sequence 下如何设置内部触发模式吧,我想知道我应该如何控制内部信号的发射,,就像控制外部触发信号那样在我需要的时候发射信号,准确的实现下一帧的投影。

Jeremy Wu:

回复 william yi:

点击Play,系统就输出信号Pattern.但是前面有一序列的过程, PATTERN图片整理排列,和触发信号的插入,曝光时间的设置等.
在 mainwindow.cpp中有详细说明.

Validate:
void MainWindow::on_pushButton_ValidatePatSeq_clicked()
{int i = 0;unsigned int status;bool ready;
if((ui->radioButton_SLMode->isChecked() == false) && (ui->radioButton_VariableExpSLMode->isChecked() == false)){ShowError("Please change operating mode to Pattern Sequence before validating sequence");return;}
//if pattern sequence is already running it must be stopped firstemit on_pushButton_PatSeqCtrlStop_clicked();
//Clear the flagsui->pushButton_PatSeqValIndExpOOR->setEnabled(false);ui->pushButton_PatSeqValIndPatNumOOR->setEnabled(false);ui->pushButton_PatSeqValIndTrigOutOverlap->setEnabled(false);ui->pushButton_PatSeqValIndBlkVecMiss->setEnabled(false);ui->pushButton_PatSeqValPatPeriodShort->setEnabled(false);ui->pushButton_PatSeqCtrlStart->setEnabled(false);ui->pushButton_PatSeqCtrlPause->setEnabled(false);ui->pushButton_PatSeqCtrlStop->setEnabled(false);

if(DLPC350_StartPatLutValidate()){ShowError("Error validating LUT data");return;}
QEventLoop loop;
do{if(DLPC350_CheckPatLutValidate(&ready,&status) < 0){ShowError("Error validating LUT data");return;}
if(ready){break;}else{QTimer::singleShot(1000, &loop, SLOT(quit()));loop.exec();}
if(i++ > MAX_NUM_RETRIES)break;} while(1);
ui->pushButton_PatSeqValIndExpOOR->setEnabled((status & BIT0) == BIT0);ui->pushButton_PatSeqValIndPatNumOOR->setEnabled((status & BIT1) == BIT1);ui->pushButton_PatSeqValIndTrigOutOverlap->setEnabled((status & BIT2) == BIT2);ui->pushButton_PatSeqValIndBlkVecMiss->setEnabled((status & BIT3) == BIT3);ui->pushButton_PatSeqValPatPeriodShort->setEnabled((status & BIT4) == BIT4);//Except BIT0 and BIT1 flags enable pattern sequenceif(!(status & BIT0) && !(status & BIT1)){ui->pushButton_PatSeqValStatus->setEnabled(true);ui->pushButton_PatSeqCtrlStart->setEnabled(true);ui->pushButton_PatSeqCtrlPause->setEnabled(true);ui->pushButton_PatSeqCtrlStop->setEnabled(true);}else{ui->pushButton_PatSeqValStatus->setEnabled(false);ui->pushButton_PatSeqCtrlStart->setEnabled(false);ui->pushButton_PatSeqCtrlPause->setEnabled(false);ui->pushButton_PatSeqCtrlStop->setEnabled(false);}

}

再是
void MainWindow::on_pushButton_PatSeqCtrlStart_clicked()
{int i = 0;unsigned int patMode;DLPC350_PatternDisplay(2);
}

开始出PATTERN.

user5902362:

回复 william yi:

你好,麻烦可以问一下你的问题解决了吗,内部触发信号在哪可以检测到,是通过那个芯片控制的呢,谢谢

Kevin Shi:

回复 user5902362:

您好!
内部触发信号是不需要控制的,当配置为内部触发模式时,DLPC内部会根据Sequence的配置自动产生内部触发信号。
谢谢

user5902362:

回复 Kevin Shi:

您好,那如何检测到目前曝光时间下的频率有多大,如果设置的曝光时间以及曝光周期是10000us,并且图像源选择是flash,模式时序列模式,说明书上说得是最大频率是4225Hz(235us)。

Kevin Shi:

回复 user5902362:

您好!
可以检测Trigger out 1信号,该信号是和曝光时间同步的。
谢谢

user5902362:

回复 Kevin Shi:

您好,只可以检测到电压值,检测不到脉冲信号TRIG1_OUT_CON、EXT_TRIG1_OUT_VCC两个管脚都试了,只有稳定的3V电压信号,求解答。谢谢

Kevin Shi:

回复 user5902362:

您好!

主要检测TRIG1_OUT_CON

请提供详细的pattern配置。
检查J13是否有跳线帽
直接检测U16的Pin3,看是否可以检测到信号

user5902362:

回复 Kevin Shi:

你好,刚才是示波器的原因,现在可以检测到信号了,但是出现一个问题就是曝光时间以及曝光周期设置成10000us是可以进行运行,也就是100Hz,但是如果想让频率更高一点设为1000us那个pattern sequence stop/start/pause里面的ooR就会出现红灯,频率升不上去该怎么解决,同样应用的是pattern sequence里面的flash,求解答,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » Dlp4500如何使用internal trigger进行内部触发?
分享到: 更多 (0)