Примечание : как уже отмечали другие, абсолютные максимальные рейтинги никогда не следует намеренно приближать. Они являются известной точкой отказа чипа. Тем не менее, они обеспечивают очень полезную конструкцию для понимания того, как далеко вы находитесь от этого максимума. Этот ответ сфокусирован на решении того, что осталось от этой проблемы проектирования, а именно на том, как далеко нужно находиться от этого максимального значения (и почему).
При определении выходного тока в статических ситуациях необходимо учитывать две большие проблемы : выходное напряжение и тепловой выход.
Выходное напряжение
При увеличении выходного тока выходное напряжение начнет «выходить из строя» (будет больше, чем ожидалось для выхода «низкий», и ниже, чем ожидалось для выхода «высокий») из-за конечного выходного сопротивления выходного драйвера вывода GPIO , Это, в свою очередь, приведет к нарушению точки Q вашей цепи, подключенной к выходу.
Это особенно интересно в случае сильно нелинейных устройств, таких как светодиоды. Если вы немного измените напряжение, которое вы прикладываете к светодиоду, то требования к току сильно изменятся по отношению.
Это приводит к общему принципу, согласно которому выходное напряжение должно быть «погрешным» не более чем на 10% (чтобы облегчить проектную жизнь).
Для того, чтобы приблизиться к абсолютным максимумам, вы должны испытать ошибку примерно> 60% в вашем выходном напряжении. Фактически, спецификации для вашего MCU даже не показывают, сколько ошибок будет на этом уровне вывода.
Вы получили бы что-то вроде 1 В на выходе "высокий" из 3 В VCC. Этот уровень недостаточно высок, чтобы надежно сигнализировать «высокий» другим устройствам (в цифровых системах).
Я извлек эту цифру из вашей ссылки на таблицу:
Для расчета ограничения тока (здесь дано Vcc = 3): 3 - 0,1 (3) = 2,7
При напряжении 2,7 В номинальный предел тока составляет 8 мА, то есть немного меньше, чем вы ожидаете * 30 * мА или около того ... ;-)
Интересное замечание из физики устройства заключается в том, что n-сторона (нижняя сторона) почти во всех драйверах вывода CMOS, на которые я смотрел, немного сильнее, чем верхняя сторона p-типа. Это связано с тем, что электроны (основной носитель в полевом транзисторе n-типа) движутся по каналу примерно вдвое легче, чем дырки (основной носитель в полевых транзисторах р-типа). Чтобы компенсировать это, производители микросхем удваивают (приблизительно) размер транзистора p-типа до тех пор, пока производительность драйвера не будет примерно симметричной, но нижняя сторона обычно сохраняет небольшое (преимущество <10%) даже в этом случае.
Этот случай не исключение ...
На этом рисунке видно, что 0 + 0,1 (3) = 0,3 В -> 9 мА, что примерно на 10% больше, чем 8 мА ранее.
Поэтому вы должны установить светодиоды, указывающие на чип, если это возможно. То есть, спроектируйте их так, чтобы на выходе был низкий = светодиод. Что-то вроде этого:
Тепловая мощность
Высокие токи в штыревом приводе = тепло (очевидно). Жара ++ -> катастрофа. Схемы драйвера GPIO обычно равномерно распределены по периферии матрицы по геометрической необходимости (часто они определяют минимальный размер матрицы).
В случае с этим чипом Atmel (ATMEGA8, см. Ниже) они наверняка есть. Схемы GPIO сгруппированы вокруг темно-синих участков соединения проводов в голубом кольце вокруг (темных) областей логики и памяти в центре.
Это все только оценка границ и слегка волнистые, но инженерия - это то, что нужно сделать, вот и все ... ;-)
Использование соседних контактов при высоких уровнях тока должно привести к линейному снижению номинальных характеристик.
Если вы предполагаете, что деталь распределяет тепло примерно равномерно (справедливое предположение для вашего маленького кристалла), вы можете получить приближение первого порядка, работая в обратном направлении от абсолютного максимального значения (40 мА) и предполагая, что соседний вывод будет иметь 100% от тепловая нагрузка.
Это означает, что если у вас есть один выход 40 мА (на самом деле не делайте этого), его непосредственные соседи должны быть на 0 мА. Выход 20 мА -> 10 мА соседей и т. Д.
Если я достаточно хорошо объяснил, то теперь должно быть ясно, что вы выбираете минимум между двумя методами.