Как работает функция автосброса Arduino Deumilanove?

8

Я хотел бы услышать некоторые объяснения относительно того, как Arduino Duemilanove сбрасывает ATMega328P через USB через трансивер FTDI FT232R.

Я знаю, что IDE играет в некоторые игры с последовательным сигналом рукопожатия DTR. Посмотрев на схемы, мне действительно интересно узнать, как работает схема:

        100nF           10kOhm
DTR -----||------+------^v^v^----- VCC
                 |
                 +--/RESET

Резистор 10 кОм - это обычная нагрузка на линии сброса. Так что же делает конденсатор в этой цепи?

В качестве sidenote, я использовал это в качестве предлога, чтобы попытаться изучить / использовать LTSPICE, поэтому я не профессионал в этом инструменте. Я смоделировал это в LTSPICE следующим образом, но мне кажется, что сигнал / RESET точно соответствует сигналу DTR, что на самом деле не имеет смысла для меня. Я смоделировал сигнал DTR как источник импульсного напряжения, возможно, это неправильная модель. Это природа драйвера DTR FTDI (например, возможно, это открытый коллектор) или внутренняя часть вывода / RESET на MCU, которые отсутствуют в схеме, которую я нарисовал, которая заставляет все это электрически соединяться?

альтернативный текст

Кроме того, вот некоторые из соответствующих ссылок на таблицы и схемы для справки.

vicatcu
источник

Ответы:

6

IIRC крышка подключена к / RTS не DTR.

Когда / RTS высокий, на кепке есть 0V. Когда / RTS становится низким, крышка не может мгновенно изменять напряжение, поэтому линия сброса становится низкой. Крышка заряжается через резистор 10К. Как только линия сброса становится выше порога сброса, запускается программа uC.

@LouisDavis ссылался на эту страницу , где говорится

ATmega168 сбрасывается путем подачи его контакта сброса на GND. ... установив линию DTR на LOW ... вывод сбрасывается на LOW, пока конденсатор не зарядится через внутренний подтягивающий резистор и R1 - который сбрасывает микросхему.

Симуляция:

Auto-Reset
VDTR    1 0 PWL(0 5 0.5m 5 0.000500004 0 1m 0)
Vcc 3 0 5
C1  1 2 100n
R1  3 2 10k
.control
delete all
tran 10n 5m
plot v(1) v(2)
.endc
.END

V (1) является DTRили /RTSи V (2) является/RESET
альтернативный текст

jluciani
источник
@jluciani, где ты видишь шапку на РТС? На RTS есть не заселенный резистор. Конденсатор (C13) подключен между DTR (вывод 2 FT232L) и выводом сброса MCU ...
vicatcu
@jluciani, ваше объяснение имеет смысл. Мне нравится ваше объяснение относительно мгновенного изменения напряжения на конденсаторах. Это удобный базовый принцип, который нужно иметь в виду. Отчасти меня интересует, почему обе стороны должны упасть до нуля, а затем одна сторона перезарядки, а не сторона DTR, просто разряжающаяся через внутреннее сопротивление контакта DTR? Кроме того, почему вы использовали источник PWL вместо источника PULSE в симе?
Викачу
@vicatu, я не знаю период или рабочий цикл импульса, и простое падение до 0 В хорошо проверяет все предположения.
Тыблу
@tyblu, да, я полностью намерен принять этот ответ, я просто надеюсь на некоторые уточнения в ответ на мои комментарии выше.
Викачу
@vicatcu входное сопротивление любого цифрового входа очень высокое. Не много тока будет течь. Зарядный ток может поступать только от цифрового выхода или 10K.
Jluciani