Kann ATmega88 mit interner Uhr bei 3,3 V betrieben werden?

Ich möchte ein paar ATmega88s mit Arduino-Bootloadern verwenden, um als I2C-Stepper-Treiber und Temperaturregler zu fungieren, die mit einem Raspberry Pi verbunden werden. Die Sache ist nur, dass es so aussieht, als hätte das RPi eine Schnittstelle mit 3,3 V, also muss ich den ATmega mit 3,3 V statt mit 5 V betreiben, um das RPi nicht zu beschädigen, ohne dass ein Pegelumsetzer erforderlich ist, oder wird es mir bei 5 V gut gehen, solange agieren die ATmegas als Slaves (habe sowas gelesen aber ich weiß nicht ob es bei mir so ist)?

Wenn ich immer noch 3,3 V verwenden muss, kann ich dies mit der internen Uhr tun oder muss ich eine externe Uhr verwenden? Kann ich den Bootloader auf dem ATmegas auch mit einem vorhandenen Arduino bei niedrigerer Spannung flashen (ich habe das Gefühl, dass dies die Kommunikationsgeschwindigkeit beeinträchtigen könnte, bin mir aber nicht sicher, ob dies der Fall ist). Bei Bedarf könnte ich den ATmega wahrscheinlich zunächst mit 5 V betreiben, nur um den Bootloader zu flashen, aber ich bin mir auch nicht sicher, ob das funktionieren wird.

Ich weiß, dass ich mir wahrscheinlich das Leben schwer mache, wenn ich keine Level-Shifter usw. verwende, aber ich möchte für dieses Projekt das Nötigste an Komponenten verwenden. Wenn die 3,3 V die Kommunikation beeinträchtigen, hat dies auch Auswirkungen auf meine I2C-Schnittstelle?

Was die noch nicht vollständig beantwortete Frage betrifft, kann der ATmega88 seriell mit jeder Spannung zwischen 1V8 und 5V programmiert werden. Wenn Sie ihn mit 5 V programmieren, sollten Sie die Niederspannungsversorgung und alle spannungsempfindlichen Geräte vom Ziel-AVR trennen, bevor Sie ihn programmieren.
Ok, ich werde es dann wohl einfach auf 3,3V programmieren
Dass der ATmega88 bei 3V3 programmierbar ist, bedeutet auch, dass Sie ihn direkt über die SPI-Verbindung des RPi programmieren können (obwohl AVRDUDE dies standardmäßig nicht unterstützt).
O, ich möchte es eigentlich nicht mit dem RPi flashen, ich bevorzuge die Verwendung der Ardino IDE auf meinem Windows-PC, aber ich denke, ich sollte tatsächlich mit 5 V programmieren, wenn man bedenkt, dass das Arduino, mit dem ich die ISP-Skizze ausführen werde, Signale senden wird bei 5V, oder irre ich mich in der Annahme, dass dies ein Problem sein wird?
Wenn Sie es mit einem 5-V-Gerät programmieren, verwenden Sie 5-V-Signale.

Antworten (2)

Ja, Sie können die interne Uhr mit Mega88 + Arduino verwenden.

Um dies zu erreichen, müssen Sie den Bootloader anders brennen:

  1. Laden Sie den 8-MHz-Bootloader herunter
  2. Wenn Sie AVRDUDE zum Flashen des Bootloaders verwenden, ändern Sie die Sicherungseinstellungen wie folgt:

    # fuses for 8MHz internal RC Oscillator
    avrdude -e -U lock:w:0x3f:m -U lfuse:w:0xd4:m -U hfuse:w:0xca:m
    
  3. Ändern Sie die Einstellungen in Ihrer Arduino-Umgebung (preferences.txt)

    change      build.f_cpu=16000000L   
    to          build.f_cpu=8000000L
    
  4. Bearbeiten Sie das Makefile:

    In <arduino>/lib/targets/arduino edit makefile
    change    F_CPU = 16000000
    to        F_CPU = 8000000
    
Ok, aber könnte ich das Flasher-Skript von Arduino ISP verwenden, um das Flashen durchzuführen, da ich keine Erfahrung mit AVRDUDE habe (erfordert es zusätzliche Hardware oder kann es auch ein Arduino verwenden)
Es gibt eine aktuelle Skizze in der Arduino IDE namens ArduinoISP, mit der AVRs über serielle Niederspannungsprogrammierung programmiert werden können.
@Gerhman: Ja.
@Gerhman Hier ist mein Setup . Ich glaube, dass Arduino intern Avrdude verwendet. Möglicherweise können Sie das interne Skript finden und ändern.
@IgnacioVazquez-Abrams Muss ich also diese Sicherungseinstellungen noch irgendwo ändern, um für die interne Uhr programmieren zu können? Oder könnte ich den Lilypad-Bootloader für den atmega88 modifizieren oder ist er bereits kompatibel
@Gerhman: Ich kann nicht für den Bootloader sprechen, da ich keine Bootloader verwende, sondern nur nackte AVRs mit einem USBasp.
OK, ich werde Ihr Setup morgen mit meinem Ubuntu-Rechner ausprobieren

Sie benötigen einen Bootloader für den ATMega88 mit der 8-MHz-Option für die interne Uhr. Sie können es immer noch mit dem normalen 5-V-Arduino-Board flashen. Tatsächlich verwenden einige offizielle Arduinos wie das Lilypad die interne 8-MHz-Uhr bei 3,3 V-Standard.

Als Schnittstelle benötigt die ATmega-Leitung normalerweise VCC * 0,6 für ein logisches High, das bei 5 V VCC 3 V beträgt. Sie können das RPI mit nur einer Einwegkommunikation problemlos mit einem 5-V-Arduino verbinden. Sie könnten eine Diode gegenüber dem RPI verwenden. Bei Signalpegeln fällt die Diode nicht zu stark ab, obwohl Germanium oder Schottky gegenüber normalen Siliziumdioden besser sein könnten.

Da es sich um i2c handelt, ein Open-Collector-System, würden Sie einfach Klimmzüge verwenden, die an die 3,3-V-Versorgung angeschlossen sind, anstelle der üblichen 5-V-Versorgung. Das Arduino sollte es immer noch lesen, kein Problem.