Attiny13+MicroCore и ножка Reset

Rasputin

✩✩✩✩✩✩✩
15 Сен 2021
10
2
Здравствуйте. Интересуют особенности работы шестой ноги Attiny13 под MicroCore, которая у него по умолчанию является Reset. Здесь вижу на этой ноге обычный 5 или A0. Без какой-либо конкретизации, что для доступа к PIN_PB5 нужно включать фьюз RSTDISBL. Тем не менее, обычным USBASP он как-то шьётся.

1. Умеет ли эта нога в принципе что-то делать без включения фьюза RSTDISBL? Например, управлять MOSFET, подавая напряжение на затвор. Подтягиванием на землю это же по идее не является. Или работать в режиме АЦП в каком-то безопасном диапазоне напряжений, при котором перезагрузка не срабатывает.

2. Есть ли какой-то способ переключить FUSE_RSTDISBL на ходу из скетча? Допустим, чтобы при подаче питания контроллер загружался в обычном режиме, а через 1 секунду фьюз отключался, переводя ногу в I/O режим. Или фреймворк MicroCore по умолчанию что-то подобное делает?

Высоковольтного программатора сейчас под рукой нет, пока что эту ногу на всякий случай не трогаю.
 

Rasputin

✩✩✩✩✩✩✩
15 Сен 2021
10
2
Update: сам разобрался. 1 - Умеет.

Действительно ни digitalRead, ни digitalWrite на пятой ноге в штатном режиме не работают. Однако АЦП на этой ноге работает независимо от фьюза.
По умолчанию на ресет подаётся 5 вольт, и analogRead(A0) выдаёт 1023, даже если к ноге вообще ничего не подключено. Если замкнуть ногу на землю - микроконтроллер перезагрузится. Однако, если через делитель напряжения замкнуть ногу на 2.5..5V, АЦП покажет 511..1023, и с этим диапазоном можно работать. Ниже 2.5v опуститься можно, но нежелательно. Порог срабатывания перезагрузки лежит где-то в диапазоне 1.9..2.3v.

Таким образом, без включения фьюза у нас по факту доступен 9-битный АЦП.
Его же можно использовать в качестве (пусть и тормозного) digitalRead, если подавать сигнал между двух одинаковых резисторов, а порог срабатывания установить между 2.5 и 5V конструкцией вида: if(analogRead(A0)>767) boolVariable = 1;
 

dimaх

✩✩✩✩✩✩✩
22 Апр 2021
5
1
52
Rasputin, вы недооцениваете уровень помех. Оттягивание ресета от Vcc чревато самопроизвольными перезагрузками мк.
 

Rasputin

✩✩✩✩✩✩✩
15 Сен 2021
10
2
@dimaх, смотря как делать. К примеру, схема с шунтирующим конденсатором представляется достаточно безопасной. В случае дребезга контактов на переменном резисторе должно пройти несколько миллисекунд, прежде чем напряжение просядет до перезагрузочного уровня.

Более прогрессивный подход - вместо конденсатора стабилитрон поставить на 2.5в. В этом случае на вход всегда и при любых обстоятельствах будут приходить как минимум 2.5в. Хоть закорачивай переменный резистор (в этом случае придут полные 5v), хоть отрывай его вообще.
 

Вложения

Геннадий П

★★★★★★✩
14 Апр 2021
1,881
603
44
К примеру, схема с шунтирующим конденсатором представляется достаточно безопасной. В случае дребезга контактов на переменном резисторе должно пройти несколько миллисекунд, прежде чем напряжение просядет до перезагрузочного уровня.
Именно поэтому обычно скользящий контакт соединяют со свободным оставшимся. В случае дребезга контакта не будет обрыва цепи.

1641924045815.png
 

Rasputin

✩✩✩✩✩✩✩
15 Сен 2021
10
2
@Геннадий П, это верно, да.

@bort707, не проще. Со включенным фьюзом контроллер станет невозможно прошить иначе как высоковольтным программатором. Под рукой оная вундервафля есть не всегда, и процедура эта контроллеру вообще говоря не очень полезна. Так что если есть возможность задействовать пятую ногу делителем напряжения, и в проекте ожидается много отладок - фьюз лучше не трогать. (А отлаживать пришлось много, ибо в стандартном виде тяжелые функции в тиньку не лезли.)