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?
Ja, Sie können die interne Uhr mit Mega88 + Arduino verwenden.
Um dies zu erreichen, müssen Sie den Bootloader anders brennen:
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
Ändern Sie die Einstellungen in Ihrer Arduino-Umgebung (preferences.txt)
change build.f_cpu=16000000L
to build.f_cpu=8000000L
Bearbeiten Sie das Makefile:
In <arduino>/lib/targets/arduino edit makefile
change F_CPU = 16000000
to F_CPU = 8000000
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.
Ignacio Vazquez-Abrams
Gerharddc
Ignacio Vazquez-Abrams
Gerharddc
Ignacio Vazquez-Abrams