EasyManua.ls Logo

Scanlab RTC6 PCIe Board - Page 272

Scanlab RTC6 PCIe Board
1004 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
RTC6 boards
Doc. Rev. 1.0.21 en-US
8 Advanced Functions for Scan Head Control and Laser Control
272
innovators for industry
case FAST:
{
// fast Pixel Output Mode up to 1.6 MHz (Mode = 32) - needs UFPM-Option
// 1 value of 16 bit per pixel
// 4 pixel per set_pixel command
//-------------------------------------------------------
// | pixel2 | pixel1 || pixel4 | pixel3 |
// | 16 Bit | 16 Bit || 16 Bit | 16 Bit |
// | PortOutValue1 || PortOutValue2 |
//-------------------------------------------------------
HalfPeriod = (UINT)round(1.0 * 32.0); // Period = 1 µs, PixelFrequency = 1 MHz
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);
// low 16 bit - first pixel, high 16 bit - second pixel
PortOutValue1 = PixelArray[1] | (PixelArray[2] << 16);
PortOutValue2 = PixelArray[3] | (PixelArray[4] << 16);
set_n_pixel(PortOutValue1, PortOutValue2, Number); // pixel 2 + pixel 1, pixel 4 + pixel 3
PortOutValue1 = PixelArray[5] | (PixelArray[6] << 16);
PortOutValue2 = PixelArray[7] | (PixelArray[8] << 16);
set_n_pixel(PortOutValue1, PortOutValue2, Number * 2); // (pixel 6 + pixel 5, pixel 8 + pixel 7)*2
//--> pixel output: pixel 5, pixel 6, pixel 7, pixel 8, pixel 5, pixel 6, pixel 7, pixel 8
}
break;
case ULTRAFAST:
{
// ultra fast Pixel Output Mode up to 3.2 MHz (Mode = 64) - needs UFPM-Option
// 1 value of 8 bit per pixel
// 8 pixel per set_pixel command
//----------------------------------------------------------------------------------------------------------
//| pixel4 | pixel3 | pixel2 | pixel1 || pixel8 | pixel7 | pixel6 | pixel5 |
//| 8 Bit | 8 Bit | 8 Bit | 8 Bit || 8 Bit | 8 Bit | 8 Bit | 8 Bit |
//| PortOutValue1 || PortOutValue2 |
//----------------------------------------------------------------------------------------------------------
HalfPeriod = (UINT)round(0.5 * 32.0); // Period = 0.5 µs, PixelFrequency = 2 MHz
PulseLength = (UINT)round(0.25 * 64.0); // PulseLength = 0.25 µs
set_laser_pulses(HalfPeriod, PulseLength);
jump_abs(PixelLineStartPosX, PixelLineStartPosY);
set_pixel_line(Channel, HalfPeriod, dx, dy);
// lowest 8 bit - first pixel, highest 8 bit - fourth pixel
PortOutValue1 = PixelArray[1] | (PixelArray[2] << 8) | (PixelArray[3] << 16) | (PixelArray[4] << 24);
PortOutValue2 = PixelArray[5] | (PixelArray[6] << 8) | (PixelArray[7] << 16) | (PixelArray[8] << 24);
// pixel 4 + pixel 3 + pixel 2 + pixel 1, pixel 8 + pixel 7 + pixel 6 + pixel 5
set_n_pixel(PortOutValue1, PortOutValue2, Number);
PortOutValue1 = PixelArray[ 9] | (PixelArray[10] << 8) | (PixelArray[11] << 16) | (PixelArray[12] << 24);
PortOutValue2 = PixelArray[13] | (PixelArray[14] << 8) | (PixelArray[15] << 16) | (PixelArray[16] << 24);
// (pixel 12 + pixel 11 + pixel 10 + pixel 9, pixel 16 + pixel 15 + pixel 14 + pixel 13)*2
set_n_pixel(PortOutValue1, PortOutValue2, Number * 2);
// --> pixel output: pixel 9, pixel 10, pixel 11, pixel 12, pixel 13, pixel 14, pixel 15, pixel 16,
// pixel 9, pixel 10, pixel 11, pixel 12, pixel 13, pixel 14, pixel 15, pixel 16
}
break;
default:
break;
}
set_end_of_list();

Table of Contents