Как-то так:
// Блинк на 9-ом пине (Uno/Nano и т.п.)
%:define _ *(unsigned*)
void setup(void) {
_ 36 = _"Vb";
_ 128 = _"D-";
_ 136 = _"D+";
}
void loop(void) {}
Скетч родился случайно в процессе разговора с @BABOS, за что ему большое спасибо!
Как-то так:
// Блинк на 9-ом пине (Uno/Nano и т.п.)
%:define _ *(unsigned*)
void setup(void) {
_ 36 = _"Vb";
_ 128 = _"D-";
_ 136 = _"D+";
}
void loop(void) {}
Скетч родился случайно в процессе разговора с @BABOS, за что ему большое спасибо!
Это даже работает, как и всё, что я выкладываю. Киньте светодиод на 9-ый пин и убедитесь. Можно, кстати, в протеусе – без разницы.
Как ни странно, но и по вторникам работает.
А чего странного, если семь пятниц на неделе?
Для вас то ничего. Но для меня в этом коде понятны всего две строки - 3 и 8 ))
Осталось разгадать что есть сие:
#define _ *(unsigned*)
void setup(void) {
*(unsigned*) 36 =*(unsigned*)"Vb";
*(unsigned*) 128 = *(unsigned*)"D-";
*(unsigned*) 136 = *(unsigned*)"D+";
}
void loop(void) {}
Для этого придется в даташит лезть, адреса регистров похоже, осталось понять каких
Зная ЕП, можно предположить, что он первому таймеру в конфиг-регистры напихал напрямую через отображаемую область памяти…
Да а вторую там и гадать нечего, подставляйте
*(36) = оопкоды “Vb” и т.д.
Как это запускается, вот для меня загадка🙄
Точно, вот откуда 9 пин))
Это надо посмотреть, адресами каких регистров являются 36,128 и 136
Сдается мне что это будут DDRx, TCCRx и TIMSKx
Я пробовал
, но IDE “изкаропки” говорит, что триграфы отключены опцией, а менять опции – неспортивно, должно всё работать искаропки!
Так они запрещены “женевской конвенцией”
Только в С’23 а у нас более ранние версии.
Итак:
36(0х24)=DDRB
128(0x80)=TCCR1A
136(0x88)=OCR1AL
Осталось понять, что за хрень скрывается в кавычках.
Но это уже завтра, спать хочется сильней чем разбираться в этих ребусах
Такие: TCCR1A, TCCR1B, OCR1A
Хрень - это битовые последовательности. Причём, в TCCR1A пишется 16 бит, что покрывает и TCCR1B.
D- => 442D => 0100010000101101
Маэстро решил только с младшим байтом поиграться
А ты прям уверен, что он пишет сразу 16 бит туда ?
Я вот нет, по синтаксису не вижу.
uinsigned int - 16 бит, пишется в указатель, приведенный к uint16_t приведённая к нему же “D-” => 442D => 0100010000101101