RTC6 boards
Doc. Rev. 1.0.21 en-US
8 Advanced Functions for Scan Head Control and Laser Control
271
switch (Mode)
{
case STANDARD:
case STANDARD_MOVE:
{
// standard Pixel Output Mode up to 400 kHz (Mode = 0, 256)
// 2 values of 32 bit per pixel
// 1 pixel per set_pixel command
//--------------------------------
// | pixel1 |
// | 32 Bit || 32 Bit |
// | PulseLength || PortOutValue |
//--------------------------------
HalfPeriod = (UINT)round(5.0 * 32.0); // Period = 5 µs, PixelFrequency = 200 kHz
PulseLength = (UINT)round(0.5 * 64.0); // PulseLength = 0.5 µs
jump_abs(PixelLineStartPosX, PixelLineStartPosY);
set_pixel_line(Channel, HalfPeriod, dx, dy);
set_n_pixel(1 * PulseLength, PixelArray[1], Number); // pixel 1
set_n_pixel(2 * PulseLength, PixelArray[2], Number); // pixel 2
set_n_pixel(3 * PulseLength, PixelArray[3], Number); // pixel 3
set_n_pixel(4 * PulseLength, PixelArray[4], Number * 2); // (pixel 4)*2
}
break;
case ENHANCED:
{
// enhanced Pixel Output Mode up to 800 kHz (Mode = 16)
// 1 value of 32 bit per pixel
// 2 pixel per set_pixel command
//-----------------------------------
// | pixel1 || pixel2 |
// | 32 Bit || 32 Bit |
// | PortOutValue1 || PortOutValue2 |
//-----------------------------------
HalfPeriod = (UINT)round(2.0 * 32.0); // Period = 2 µs, PixelFrequency = 500 kHz
PulseLength = (UINT)round(0.5 * 64.0); // PulseLength = 0.5 µs
set_laser_pulses(HalfPeriod, PulseLength);
jump_abs(PixelLineStartPosX, PixelLineStartPosY);
set_pixel_line(Channel, HalfPeriod, dx, dy);
set_n_pixel(PixelArray[1], PixelArray[2], Number); // pixel 1, pixel 2
set_n_pixel(PixelArray[3], PixelArray[4], Number); // pixel 3, pixel 4
set_n_pixel(PixelArray[5], PixelArray[6], Number * 2); // (pixel 5, pixel 6)*2
//--> pixel output: pixel 5, pixel 6, pixel 5, pixel 6
}
break;