«Разгон» AVR

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

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

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

12 голосов | спросил vicatcu 31 +04002011-10-31T18:31:42+04:00312011bEurope/MoscowMon, 31 Oct 2011 18:31:42 +0400 2011, 18:31:42

5 ответов


41

Как сделать жизнь более интересной 101:

  • Если вам все равно

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

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

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

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

  • Обычно разделение может работать
  • Обычно может появиться скачок.
  • Таблица может быть просмотрена правильно.
  • Значение АЦП может быть правильным.

    Или не

    введите описание изображения здесь>> </p>
</li>
</ul></body></html>

ответил Russell McMahon 31 +04002011-10-31T20:03:09+04:00312011bEurope/MoscowMon, 31 Oct 2011 20:03:09 +0400 2011, 20:03:09
13

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

  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 МГц), не является забавой.

ответил supercat 31 +04002011-10-31T19:20:53+04:00312011bEurope/MoscowMon, 31 Oct 2011 19:20:53 +0400 2011, 19:20:53
3

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

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

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

Разгон Arduino с охлаждением жидким азотом. 20⇒65.3Mhz -196 ° C /-320 ° F

ATmega328 Overclock (30MHz)

ответил Kamil 5 J000000Saturday14 2014, 13:50:22
3

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

Каждый раз, когда затвор в чипе включается или выключается, он рассеивает тепло. Затвор, состоящий из MOSFET, действует как переменный резистор в период между включением и выключением, или выключен и включен. Разумеется, этот резистор рассеивает тепло. Чем чаще он переключается, тем меньше времени между переключениями для этого тепла рассеивается из чипа, и вы рискуете нарастанием тепла.

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

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

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

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

ответил Majenko 5 J000000Saturday14 2014, 14:19:01
1

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

ответил Leon Heller 31 +04002011-10-31T18:36:00+04:00312011bEurope/MoscowMon, 31 Oct 2011 18:36:00 +0400 2011, 18:36:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132