RTC6 boards
Doc. Rev. 1.0.21 en-US
8 Advanced Functions for Scan Head Control and Laser Control
272
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();