Может ли ATmega88 работать при напряжении 3,3 В с внутренними часами?

Я хочу использовать несколько ATmega88 с загрузчиками Arduino, чтобы действовать как шаговые драйверы I2C и контроллеры температуры, которые будут взаимодействовать с Raspberry Pi. Дело в том, что кажется, что RPi взаимодействует с 3,3 В, поэтому мне нужно запустить ATmega на 3,3 В вместо 5 В, чтобы не повредить RPi без необходимости переключения уровня, или я буду в порядке при 5 В, пока ATmega действуют как рабы (я читал что-то подобное, но я не знаю, так ли это)?

Если мне все еще нужно использовать 3,3 В, смогу ли я сделать это с помощью внутренних часов или мне придется использовать внешние часы? Кроме того, я все еще смогу прошить загрузчик на ATmegas, используя существующий Arduino с более низким напряжением (у меня есть ощущение, что это может повлиять на скорость связи, но я не уверен, что это так). При необходимости я, вероятно, мог бы сначала запустить ATmega на 5 В только для прошивки загрузчика, но я также не уверен, что это сработает.

Я знаю, что, вероятно, усложняю себе жизнь, не используя переключатели уровней и т. д., но я хочу использовать минимум компонентов для этого проекта. Кроме того, если 3,3 В влияет на связь, повлияет ли это на мой интерфейс I2C?

Что касается вопроса, на который еще нет полного ответа, ATmega88 можно последовательно запрограммировать на любое напряжение от 1V8 до 5V. Если вы собираетесь запрограммировать его на 5 В, вам следует отключить низковольтный источник питания и любые чувствительные к напряжению устройства от целевого AVR, прежде чем программировать его.
Хорошо, тогда я, вероятно, просто запрограммирую его на 3,3 В.
Кроме того, то, что ATmega88 программируется на 3V3, означает, что вы можете запрограммировать его прямо из SPI-соединения RPi (хотя AVRDUDE не поддерживает это по умолчанию).
О, на самом деле я не хочу прошивать его с помощью RPi. Я предпочитаю использовать Ardino IDE на моем ПК с Windows, но я думаю, что на самом деле мне следует программировать на 5 В, учитывая, что Arduino, которую я буду использовать для запуска скетча ISP, будет посылать сигналы на 5В, или я ошибаюсь, думая, что это будет проблемой?
Если вы программируете его с помощью устройства 5 В, то да, вы будете использовать сигналы 5 В.

Ответы (2)

Да, вы можете использовать внутренние часы с Mega88 + Arduino.

Для этого вам нужно записать загрузчик по-другому:

  1. Загрузите загрузчик 8 МГц
  2. если вы используете AVRDUDE для прошивки загрузчика, измените настройки предохранителей, как показано ниже:

    # fuses for 8MHz internal RC Oscillator
    avrdude -e -U lock:w:0x3f:m -U lfuse:w:0xd4:m -U hfuse:w:0xca:m
    
  3. Измените настройки в вашей среде Arduino (preferences.txt)

    change      build.f_cpu=16000000L   
    to          build.f_cpu=8000000L
    
  4. Отредактируйте make-файл:

    In <arduino>/lib/targets/arduino edit makefile
    change    F_CPU = 16000000
    to        F_CPU = 8000000
    
Хорошо, но смогу ли я использовать скрипт прошивки Arduino ISP для перепрошивки, учитывая, что у меня нет опыта использования AVRDUDE (требуется ли для этого какое-либо дополнительное оборудование или он также может использовать Arduino)
В Arduino IDE есть реальный скетч под названием ArduinoISP, который можно использовать для программирования AVR с помощью низковольтного последовательного программирования.
@Герман: Да.
@Gerhman Вот моя установка . Я считаю, что arduino использует avrdude внутри. Возможно, вы сможете найти внутренний скрипт и изменить его.
@ IgnacioVazquez-Abrams Итак, мне все равно придется где-то менять эти настройки предохранителей, чтобы иметь возможность программировать внутренние часы? Или я могу изменить загрузчик lilypad для atmega88 или он уже совместим
@Gerhman: я не могу говорить за загрузчик, так как я не использую загрузчики, только голые AVR с USBasp.
Хорошо, завтра я попробую вашу установку на моей машине с Ubuntu.

Вам понадобится загрузчик для ATMega88 с опцией внутренних часов 8 МГц. Вы все еще можете прошить его с помощью обычной платы Arduino 5v. Фактически, некоторые официальные Arduino, такие как lilypad, используют внутренние часы 8 МГц при стандартном напряжении 3,3 В.

Что касается интерфейса, линия ATmega обычно требует VCC * 0,6 для высокого логического уровня, который при 5v VCC равен 3v. Вы можете без проблем подключить RPI к 5-вольтовому Arduino с помощью только односторонней связи. Вы можете использовать диод, обращенный к RPI. На уровнях сигнала диод не будет сильно падать, хотя германиевые или диоды Шоттки могут быть лучше обычных кремниевых диодов.

Поскольку это i2c, система с открытым коллектором, вы просто используете подтягивающие устройства, подключенные к источнику питания 3,3 В, вместо обычного источника питания 5 В. Arduino все еще должен прочитать это без проблем.