Простите, Вы альтернативно одарены? Вы до сих не поняли как тут вставляется код? Или издеваетесь специально?
Теперь ответ на Ваш вопрос. При правильной схеме такой скетч никак, от слова “совсем никак, с какого бы хера?” не повредит Вашему контроллеру.
Вы когда-нибудь видели как устроен метод begin класса HardwareSerial?
Посмотрите
void HardwareSerial::begin(unsigned long baud, byte config)
{
// Try u2x mode first
uint16_t baud_setting = (F_CPU / 4 / baud - 1) / 2;
*_ucsra = 1 << U2X0;
// hardcoded exception for 57600 for compatibility with the bootloader
// shipped with the Duemilanove and previous boards and the firmware
// on the 8U2 on the Uno and Mega 2560. Also, The baud_setting cannot
// be > 4095, so switch back to non-u2x mode if the baud rate is too
// low.
if (((F_CPU == 16000000UL) && (baud == 57600)) || (baud_setting >4095))
{
*_ucsra = 0;
baud_setting = (F_CPU / 8 / baud - 1) / 2;
}
// assign the baud_setting, a.k.a. ubrr (USART Baud Rate Register)
*_ubrrh = baud_setting >> 8;
*_ubrrl = baud_setting;
_written = false;
//set the data bits, parity, and stop bits
#if defined(__AVR_ATmega8__)
config |= 0x80; // select UCSRC register (shared with UBRRH)
#endif
*_ucsrc = config;
sbi(*_ucsrb, RXEN0);
sbi(*_ucsrb, TXEN0);
sbi(*_ucsrb, RXCIE0);
cbi(*_ucsrb, UDRIE0);
}
строки №" 30 и 31 и отменяют стандартное использование пинов 0 и 1. Т.е. эти две строки, просто напрочь отменяют Ваши строки №№ ХЗ и ХЗ (мля! по Вашему, удобно обсуждать код, вставленный как у Вас?) в которых Вы типа на OUTUT настраиваете. Полностью отменят. Просто плюют на них и растирают! никаких следов от этих Ваших настроек больше (после строк №№ 30 и 31) не остаётся.
не разбирался, но полагаю , что кнопка “как есть CTRL+E” позволит вставить код.
нет, но даже посмотрев на него в вашей цитате, на данный момент мне моих знаний не хватает (в частности, что такое sbi cbi я ещё не изучал) , чтобы сделать из него тот вывод, который вы написали. Тем не менее, я абсолютно верю написанному Вами и рад что есть такой чёткий ответ.
Что касается такого кода:
Я полагаю, что он тоже, например, не может поломать процесс заливки скетча, так как логически я могу предположить, что IDE перед прошивкой даёт команду CH340 на перезагрузку процессора Atmega, там грузится бутлоадер, и ественно бутлоадер pin0 и pin1 снова ставит в режим RX-TX и заливка скетча идёт нормально.
Надо будет почитать что такое бутлоадер вообще и как он работает в ардуино…
Так разберитесь. Вставлять так, как Вы, здесь считается прямым и нарочитым, показным неуважением к сообществу. Обычно, на так вставленные коды я вообще не смотрю, полагая, что кода нет вовсе. Не знаю, что на меня сегодня нашло.
Ну, это как бы … учитесь, что я могу сказать. Или, если не хотите учиться, верьте каждому посту, запощенному первого апреля
До этого момента правильно.
А вот здесь.
Не “снова”! Они переключились на INPUT ещё во время перезагрузки (как и все остальные пины). Бутлоадер же просто делает с ними то, что ему нужно.
указанный выше код никакого необратимого вреда плате не несёт.
те проблемы, что возникли и напугали меня (не работает порт-монитор и stuck заливки скетча )- чисто проблемы IDE и с кодом скетча не связаны.
сходу разобраться с переустановкой IDE 2 версии не заладилось, проблема моментально решилась даунгрейдом на 1.8.19 portable плата ардуины без проблем заливается скетч и порт монитор работает,
на платах LGT8F - плагин от nullab поставился, порт монитор работает нормально, заливка скечта производится, после заливки выводится текст ошибок
======
avrdude: stk500_paged_load(): (a) protocol error, expect=0x10, resp=0xfe
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
read operation not supported for memory “flash”
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0xfe
Failed uploading: uploading error: exit status 1
=====
но это никак не мешает, т.к. stuck не происходит и IDE перезагружать не надо.
да я бы с удовольствием бы прочитал всю матчасть и быть может на ассемблере писал бы , но увы, время на сиё занятие (программирование ардуинки то бишь) ограничено =)
Позвольте позанудствовать) Пин может быть как выход, генерировать импульсы и этот же пин одновременно может быть входом аппаратного счетчика. Также можно читать напряжение на пине как выход с однобитным или 10 битным разрешением.
Ну да, а #34 Илик ещё добавил. Но это не прямо по теме. Прямо по теме это то что сериал будет работать только на выход и pinMode(0, OUTPUT); не переведёт в режим выхода ногу. Прошить другую прошивку можно будет после нажатия кнопки ресет, после отпускания которой будет секунда до начала загрузки.
да чё будет, ничё не будет, про 0 и 1 не скажу, а 3 в генераторе для катушки Мишина так и используется, через аналог райт Шимим, через прерывание обрабатываем энкодер, а к пину ничего не подключено, всё унутрях, всё унутрях
Товарищи!
Нашёл, как ещё избежать проблему того, что не работает монитор порта.
Напомню, что многие программы, в частности Serial Port Monitor
а так же монитор порта в ArduinoIDE_2.0.4 не работали, хотя например монитор порта в ArduinoIDE_1.8 работал при этом.
Так вот, как только я сменил номер COM порта для ардуинки в диспетчере устройств винды с двухзначного на однозначный (а конкретно с COM13 на COM9) - с ним заработали все программы!
Я в принципе вообще случайно сделал открытие, что вся проблема из за того что номер двухзначным был. ну вот реально, откуда можно было додуматься, что программы нормально работают с COM9, а с COM10 не будут работать ни при каких обстоятельствах?
При том, не все подряд программы, а конкретно
ArduinoIDE_2.0.4 отказывается, при этом ArduinoIDE_1.8 работало!
Ну вот как можно было додуматься до этого?)))
Мне помогло на это наткнуться то что я писал на DELPHI свою читалку COM порта и когда попытался открыть порт ардуины, то увидел таки не просто “Не могу открыть порт” как это писали другие программы, а код ошибки “Файл с данным именем не найден”. Тут и закралась мне мысль, что где то там в недрах компьютера под имя было выделено определённое число байтов, равное длине надписи “COM1” (то бишь 4 байта).
Хотя до конца то до сих пор не ясно, почему такой баг вообще имеется - сменить или что там зачистить как ты предлагаешь - это просто костыль же, очевидно.
Так то программы должны работать с любым номером COM порта, хоть с 99-ым.