// For: https://forum.arduino.cc/t/delay-from-1-to-2-microseconds/1026312
//
// PortL is at pins 42 ... 49 (PORTL0 = 49, PORTL7 = 42)
//
// Starting this sketch actives the Logic Analyzer which wants to store the data.
//
// A clock cycle is 1/16MHz is 62.5ns
// 150µs for 256 steps is 586ns ? and is 9 cycles ?
#define DACCYCLES 7
#define DACVALUE(a) PORTL=a; __builtin_avr_delay_cycles(DACCYCLES)
void setup()
{
#ifdef GENERATE_CODE
Serial.begin(115200);
for(int i=255; i>=0; i--)
{
Serial.print( " DACVALUE(");
Serial.print( i);
Serial.print( ");\n");
}
Serial.flush();
#endif
DDRL = 0xFF;
noInterrupts(); // Bye bye Arduino
}
void loop()
{
DACVALUE(255);
DACVALUE(254);
DACVALUE(253);
DACVALUE(252);
DACVALUE(251);
DACVALUE(250);
DACVALUE(249);
DACVALUE(248);
DACVALUE(247);
DACVALUE(246);
DACVALUE(245);
DACVALUE(244);
DACVALUE(243);
DACVALUE(242);
DACVALUE(241);
DACVALUE(240);
DACVALUE(239);
DACVALUE(238);
DACVALUE(237);
DACVALUE(236);
DACVALUE(235);
DACVALUE(234);
DACVALUE(233);
DACVALUE(232);
DACVALUE(231);
DACVALUE(230);
DACVALUE(229);
DACVALUE(228);
DACVALUE(227);
DACVALUE(226);
DACVALUE(225);
DACVALUE(224);
DACVALUE(223);
DACVALUE(222);
DACVALUE(221);
DACVALUE(220);
DACVALUE(219);
DACVALUE(218);
DACVALUE(217);
DACVALUE(216);
DACVALUE(215);
DACVALUE(214);
DACVALUE(213);
DACVALUE(212);
DACVALUE(211);
DACVALUE(210);
DACVALUE(209);
DACVALUE(208);
DACVALUE(207);
DACVALUE(206);
DACVALUE(205);
DACVALUE(204);
DACVALUE(203);
DACVALUE(202);
DACVALUE(201);
DACVALUE(200);
DACVALUE(199);
DACVALUE(198);
DACVALUE(197);
DACVALUE(196);
DACVALUE(195);
DACVALUE(194);
DACVALUE(193);
DACVALUE(192);
DACVALUE(191);
DACVALUE(190);
DACVALUE(189);
DACVALUE(188);
DACVALUE(187);
DACVALUE(186);
DACVALUE(185);
DACVALUE(184);
DACVALUE(183);
DACVALUE(182);
DACVALUE(181);
DACVALUE(180);
DACVALUE(179);
DACVALUE(178);
DACVALUE(177);
DACVALUE(176);
DACVALUE(175);
DACVALUE(174);
DACVALUE(173);
DACVALUE(172);
DACVALUE(171);
DACVALUE(170);
DACVALUE(169);
DACVALUE(168);
DACVALUE(167);
DACVALUE(166);
DACVALUE(165);
DACVALUE(164);
DACVALUE(163);
DACVALUE(162);
DACVALUE(161);
DACVALUE(160);
DACVALUE(159);
DACVALUE(158);
DACVALUE(157);
DACVALUE(156);
DACVALUE(155);
DACVALUE(154);
DACVALUE(153);
DACVALUE(152);
DACVALUE(151);
DACVALUE(150);
DACVALUE(149);
DACVALUE(148);
DACVALUE(147);
DACVALUE(146);
DACVALUE(145);
DACVALUE(144);
DACVALUE(143);
DACVALUE(142);
DACVALUE(141);
DACVALUE(140);
DACVALUE(139);
DACVALUE(138);
DACVALUE(137);
DACVALUE(136);
DACVALUE(135);
DACVALUE(134);
DACVALUE(133);
DACVALUE(132);
DACVALUE(131);
DACVALUE(130);
DACVALUE(129);
DACVALUE(128);
DACVALUE(127);
DACVALUE(126);
DACVALUE(125);
DACVALUE(124);
DACVALUE(123);
DACVALUE(122);
DACVALUE(121);
DACVALUE(120);
DACVALUE(119);
DACVALUE(118);
DACVALUE(117);
DACVALUE(116);
DACVALUE(115);
DACVALUE(114);
DACVALUE(113);
DACVALUE(112);
DACVALUE(111);
DACVALUE(110);
DACVALUE(109);
DACVALUE(108);
DACVALUE(107);
DACVALUE(106);
DACVALUE(105);
DACVALUE(104);
DACVALUE(103);
DACVALUE(102);
DACVALUE(101);
DACVALUE(100);
DACVALUE(99);
DACVALUE(98);
DACVALUE(97);
DACVALUE(96);
DACVALUE(95);
DACVALUE(94);
DACVALUE(93);
DACVALUE(92);
DACVALUE(91);
DACVALUE(90);
DACVALUE(89);
DACVALUE(88);
DACVALUE(87);
DACVALUE(86);
DACVALUE(85);
DACVALUE(84);
DACVALUE(83);
DACVALUE(82);
DACVALUE(81);
DACVALUE(80);
DACVALUE(79);
DACVALUE(78);
DACVALUE(77);
DACVALUE(76);
DACVALUE(75);
DACVALUE(74);
DACVALUE(73);
DACVALUE(72);
DACVALUE(71);
DACVALUE(70);
DACVALUE(69);
DACVALUE(68);
DACVALUE(67);
DACVALUE(66);
DACVALUE(65);
DACVALUE(64);
DACVALUE(63);
DACVALUE(62);
DACVALUE(61);
DACVALUE(60);
DACVALUE(59);
DACVALUE(58);
DACVALUE(57);
DACVALUE(56);
DACVALUE(55);
DACVALUE(54);
DACVALUE(53);
DACVALUE(52);
DACVALUE(51);
DACVALUE(50);
DACVALUE(49);
DACVALUE(48);
DACVALUE(47);
DACVALUE(46);
DACVALUE(45);
DACVALUE(44);
DACVALUE(43);
DACVALUE(42);
DACVALUE(41);
DACVALUE(40);
DACVALUE(39);
DACVALUE(38);
DACVALUE(37);
DACVALUE(36);
DACVALUE(35);
DACVALUE(34);
DACVALUE(33);
DACVALUE(32);
DACVALUE(31);
DACVALUE(30);
DACVALUE(29);
DACVALUE(28);
DACVALUE(27);
DACVALUE(26);
DACVALUE(25);
DACVALUE(24);
DACVALUE(23);
DACVALUE(22);
DACVALUE(21);
DACVALUE(20);
DACVALUE(19);
DACVALUE(18);
DACVALUE(17);
DACVALUE(16);
DACVALUE(15);
DACVALUE(14);
DACVALUE(13);
DACVALUE(12);
DACVALUE(11);
DACVALUE(10);
DACVALUE(9);
DACVALUE(8);
DACVALUE(7);
DACVALUE(6);
DACVALUE(5);
DACVALUE(4);
DACVALUE(3);
DACVALUE(2);
DACVALUE(1);
DACVALUE(0);
DACVALUE(255); // end of ramp
__builtin_avr_delay_cycles(16000000UL - ((DACCYCLES * (256 + 1)) - 4)); // PROBABLY WRONG !
}