«Разгон» AVR


12

В таблицах AVR в разделе «Электрические характеристики» вы обычно найдете график, подобный следующему (этот от ATMega328):

введите описание изображения здесь

Я видел проекты, которые, кажется, «работают», но работают за пределами затененного конверта. В частности, я видел 3,3 В (Arduino) конструкции, которые запускают часы от внешнего кристалла 16 МГц. Ясно, что это вне спецификации. Каковы практические негативные последствия выхода за пределы этой оболочки?


13
Если вы только запустите это sortof в спецификации, то это будет только работать.
Олин Латроп

Может показаться глупым, но не могли бы вы заменить XTal?
Хоссейн

Не очень хорошая идея, большинство шансов, что это не сработает, и в любом случае вы добавите меньше 1 MIPS к процессору с 20 MIPS, и вы получите 100%, что AVR рухнет. Вы должны сохранить настройки и время удержания для внутренних сигналов, максимальная частота. В самом критическом тракте прохождения сигнала в AVR используется худший вариант развития событий. Производственные изменения могут сделать один чип немного более защищенным от разгона, но очень незначительным и помнить, что даже если само ядро ​​работает нормально, это не означает, что периферия будет работать может повторить это с другой микросхемой из другой партии.
user34920

1
Чтобы изменить шутку: «Если они сделают вид, что показывают нам часы в рамках спецификации, мы сделаем вид, что работаем».
nitro2k01

Это может быть глупый вопрос, но я думал, что все AVR Arduinos работают на 5 В, за исключением Mini Pro-3.3v, который работает только на 8 МГц ... или есть более быстрая модель 3.3 В, которую я не видел?
Жюль

Ответы:


42

Как сделать жизнь интереснее

  • Если тебе все равно

    что ваши результаты иногда могут быть неверными,
    что ваша система может иногда падать,
    что ваша жизнь может быть более интересной,
    что ваш клон Segway лишь изредка наносит вредные побочные эффекты без видимой причины,
    что ...

    тогда непременно запустите деталь вне спецификации производителя

Вы получаете то, за что не платите.
Если у вас голова за 10 долларов, купите шлем за 10 долларов.

Это может часто работать.
Это может не работать иногда.
Может быть не очевидно, что это иногда не работает.

  • Разделение может обычно работать
  • Прыжок обычно может прибыть.
  • Стол может быть найден правильно.
  • Значение АЦП может быть правильным.

    Или не

    введите описание изображения здесь


4
я люблю этот ответ LOL
Викачу

2
Это изумительно
Андрей Вихров

6
На самом деле, если у вас есть голова за 10 долларов, вы должны купить шлем за 10 долларов * вероятность_катастрофического_заказа.
Ник Джонсон

4
Я нашел свои новые обои
Rick_2047

4
Это гениально: «Если вам все равно (...), что ваш клон Сегвея лишь изредка наносит лицевые растения без видимой причины»
Камил

14

При таких скоростях большинство процессоров работают, вычисляя все сигналы, которые потребуются в определенном такте, ожидая следующего фронта такта, пока они стабилизируются, фиксируя все эти сигналы и вычисляя сигналы, необходимые в следующем такте ожидание этого фронта, пока стабилизируются эти сигналы, и т. д. Если фронт тактового генератора прибывает до того, как стабилизируются необходимые сигналы, то эффект будет в том, что какой бы сигнал не стабилизировался, он может не быть зафиксирован чисто. Если это происходит в микроконтроллере, последствия могут быть непредсказуемыми - по крайней мере по двум причинам:

  1. Во многих случаях скорость выполнения ограничена временем отклика флэш-массива, из которого процессор читает код. Если слишком быстрый запуск процессора приводит к неправильному чтению случайного бита здесь или там, это может привести к тому, что процессор выполнит совершенно другой код, чем предполагалось. Во многих программах даже одноразовое однобитовое неправильное чтение может радикально изменить поведение; редко бывает целесообразно делать какие-либо прогнозы относительно того, что может произойти в таких случаях. Лучшее, что можно сделать в некоторых случаях - это «защитить» определенные части программы, чтобы ошибочное выполнение было маловероятным. Например, можно оставить EEPROM защищенным до тех пор, пока он не захочет написать его, а затем использовать код, например:
    uint32_t eep_checksum, eep_addr, eep_data;
    
    #define EEPROM_WRITE (адрес, данные, предикат) \
      eep_checksum = 0xC0DEFACE, eep_addr = (адрес), eep_data = (данные), \ 
      eep_checksum + = eep_addr + eep_data, ((предикат) || HARD_CRASH ()), \
      eep_checksum + = (0xCAFEBABE - C0DEFACE), eep_do_write ()
    
    void eep_do_write (void)
    {
      ENABLE_EEPROM_WRITE_HARDWARE ();
      if (eep_checksum! = eep_addr + eep_data + 0xCAFEBABE)
      {
        DISABLE_EEPROM_WRITE_HARDWARE ();
        HARD_CRASH ();
      }
      DO_EEPROM_WRITE ();
      DISABLE_EEPROM_WRITE_HARDWARE ();
    }  
    
    Весьма маловероятно, что подпрограмма eeprom_write попытается записать данные, если только «eep_checksum = 0xC0DEFACE» не будет выполнен до загрузки адреса и данных. После выполнения этого предикат будет проверен на достоверность, прежде чем корректировать контрольную сумму до правильного значения и вызвать процедуру eeprom_store.
  2. В дополнение к явным рискам, связанным с выполнением некорректного кода, еще одним источником потенциального случайного поведения является метастабильность. Обычно в любом цикле каждый триггер фиксирует максимум или минимум. Однако, если входной сигнал для триггера изменяется так же, как и часы, он может в течение некоторой произвольной продолжительности выводить странные вещи, которые могут произвольно переключаться между максимумом и минимумом в любом шаблоне до следующего тактового цикла; Вполне возможно, что некоторые устройства вниз по течению от триггера будут видеть его как «высокий», в то время как другие видят его как «низкий». Как правило, процессоры полагаются на то, что многие устройства согласны с тем, что они собираются делать. Если во время выполнения команды «уменьшить-и-ветвь-если-не-равно» некоторые схемы считают, что ветвление должно быть принято, а другие нет,

Производители задают рабочие параметры для процессоров, так что в пределах этих параметров процессоры будут просто работать. Выдвижение вещей за пределы этого конверта может снизить надежность процессора только до 99.9999999. Это может показаться не слишком злым, но пытаться диагностировать процессор, который делает что-то произвольно неправильное раз в минуту или около того (при расчете 16 МГц), не весело.


2
Было бы хорошо отметить, что защита записей EEPROM просто делает статистически менее вероятным полный брикет устройства, но не сильно снижает вероятность ошибочного выполнения. Тем не менее, это похоже на хорошую политику. Я поражен тем, что 9 девяток надежности имеют такую ​​высокую вероятность сбоя за одну минуту на частоте всего 16 МГц.
Кевин Вермеер

@Kevin Vermeer: ​​часто трудно гарантировать, что устройство никогда не будет работать за пределами своей безопасной рабочей области, учитывая возможности провалов электропитания, электростатических событий и т. Д. Защита EEPROM не предназначена для повышения вероятности ошибочного выполнения. Это иллюстрирует, как минимизировать последствия. Подобные методы часто полезны для кода, который работает с внешним оборудованием. Не следует полагаться на код для систем, критичных для безопасности, но, например, в изготовителе меток можно использовать логику, подобную приведенной выше, для защиты элементов управления подачей меток, поэтому случайное выполнение не уничтожит $ 5 в запасе меток.
суперкат

Чтобы быть ясным, я говорю конкретно о микроконтроллерах Atmel AVR - которые сильно отличаются от процессоров общего назначения ...
vicatcu

2
@vicatcu: Есть ли какой-то особенный способ, которым вы думаете о том, что они отличаются от PIC, 8x51, 68HC05, ARM и т. д.? Или в этом отношении старые процессоры, такие как 6502 или Z80? На современных процессорах разгон может привести к саморазрушающему перегреву, но на меньших или более медленных процессорах это не проблема на любой скорости, когда устройство может работать.
суперкат

3

Упрощенный ответ на ваш вопрос:

Работа вне «зоны безопасной скорости» может привести к нестабильной работе вашей системы. Что это значит? Неправильные результаты расчетов, сбросы микроконтроллера и т. Д.

Если вы хотите сделать это просто для удовольствия, взгляните на эти страницы / статьи:

Разгон Arduino с охлаждением жидким азотом. 20⇒ 65,3 МГц при -196 ° C / -320 ° F

Разгон ATmega328 (30 МГц)


3

Еще одно соображение, которое еще не упомянуто, и которое связано не столько с работой на допустимых частотах в недопустимых диапазонах напряжения (16 МГц при 3,3 В), сколько с работой на недопустимых частотах в допустимых диапазонах напряжения (24 МГц при 5 В) - это рассеяние тепла.

Каждый раз, когда вентиль в чипе включается или выключается, он рассеивает тепло. Затвор, состоящий из полевых МОП-транзисторов, действует как переменный резистор в период между включением и выключением или выключением и включением. Этот резистор, конечно, рассеивает тепло. Чем чаще он переключается, тем меньше времени между переключениями, чтобы это тепло рассеивалось из микросхемы, и вы рискуете накопить тепло.

Следовательно, чем быстрее вы бежите, тем больше тепла может накапливаться. Вот почему процессоры ПК имеют большие вентиляторы - они переключаются так быстро, что не могут достаточно быстро отвести тепло от чипа, поэтому им нужна помощь.

Максимальная номинальная скорость микросхемы выбирается таким образом, чтобы микросхема надежно рассеивала тепло, выделяемое при действительных условиях эксплуатации (например, при температуре окружающей среды, обычно не более 85 ° С или 105 ° С, например). Превышение этой частоты может привести к перегреву микросхемы.

Да, чип можно запустить быстрее, чем предполагалось, если вы предоставите некоторую помощь - например, радиатор и, возможно, вентилятор, и убедитесь, что вокруг него хороший поток воздуха. Но, конечно, в теплый летний день вы можете найти то, что было отлично работающим устройством, всю зиму вдруг начинает делать странные вещи.

Еще одна вещь, которую следует учитывать, это скорость убывания. Сигналы часов (и другие сигналы тоже) требуют времени, чтобы подняться или упасть до желаемого уровня. Если внутренняя часть чипа означает, что синхросигналу требуется, скажем, 15 нс, чтобы подняться с НИЗКОГО на ВЫСОКОЕ, и вы пытаетесь синхронизировать его с частотой, на которой период ВЫСОКОГО значения, например, 42 нс (24 МГц), оставляет только 27 нс действительного тактового сигнала период остался. Это всего лишь 64% часов, которые на самом деле являются тактовым сигналом - остальное мусор. То же самое для выводов ввода / вывода. Такие вещи, как выходы тактового сигнала SPI, будут ограничены скоростью нарастания вывода IO, поэтому, если вы разгоните свой чип, чтобы получить более быстрый SPI, вы обнаружите, что все не всегда идет так, как запланировано, как хорошая прямоугольная волна, которую вы ожидаете от выходного сигнала тактовой частоты. больше не квадратный


1

Устройство может не работать при некотором сочетании напряжения и температуры.


учитывая , что она делает работу при некотором напряжении / температуре (3,3 и 25 ° С ), делает часы просто работать вдоль границы , а не номинальной частоте кристалла? «может не сработать» ужасно расплывчато ...
Викацу

@vicatcu - «Ужасно расплывчато - это ТОЧНО * спецификация, которую вы получаете.« Может не сработать »- это ** ТОЧНО, спецификация НА границах будет работать. Так что вы можете быть уверены, что есть запас прочности. Насколько велик? Сделайте свой день» ...
Рассел МакМахон

ха-ха, да, я никогда не
задумывался

@vicatcu: Иногда кажется почти невозможным избежать разработки, по крайней мере, номинально вне спецификации. Например, если два устройства указывают VOut (Max) и VIn (Max) как VDD, и одно подключает выход каждого к входу другого, даже если они подключены к одной шине, я не Посмотрите, как можно гарантировать, что кратковременный переходный ток в одном устройстве не может привести к падению его VDD даже на микровольт ниже выходного напряжения другого устройства. Если это так, это может превысить указанное рабочее условие, что вход не должен превышать VDD.
суперкат

1
@vicatcu: Конечно, я думаю, что большинство инженеров подумают, что физическое построение устройств почти гарантирует существование допуска по крайней мере в несколько милливольт для таких вещей, но во многих таблицах данных не указывается ни один. Не уверен почему. Я могу понять производителя, который не хочет указывать что-то близкое к тому, что современные детали принимают без проблем, но указание чего-либо может показаться более приятным, чем отсутствие указания чего-либо.
суперкат
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.