Forum: Mikrocontroller und Digitale Elektronik ATmega mit 3.3V Logik and Raspberry


von Peter N. (Gast)


Lesenswert?

Hallo allerseits,

ich hätte mal eine kurze - vielleicht triviale - Frage: Ich möchte 
zwischen einem ATmega für eine recht simple Anwendung eine I2C 
Kommunikation zwischen einem ATmega und meinem Raspberry Pi aufbauen. 
Die ATmegas in meiner Bastelkiste wünschen sich alle VCC=5V. Der 
Raspberry mag ja an den GPIO's nur 3.3V.

Zunächst dachte ich an Pegelwandler, allerdings ist mir dann der 
ATmega32L über den Weg gelaufen 
(http://www.atmel.com/Images/doc2503.pdf). Das Datenblatt spricht von 
Operating Voltage: 2.7V - 5.5V.

Kann ich den Mega nicht einfach über die 3.3V vom Raspberry speisen und 
alle Sorgen gehören der Vergangenheit an? Sprich geht VCC=3.3V beim 
ATmega32L und hab ich dann auch im High-Zustand diese 3.3V an den Pins?


Danke schön für's Lesen!

Peter N.

von Holm T. (Gast)


Lesenswert?

ja.
Gruß,

Holm

von Peter N. (Gast)


Lesenswert?

Danke :-)

von Frank K. (fchk)


Lesenswert?

Aber dann nur 8 MHz und keine 16 MHz. Schau ins Datenblatt!

fchk

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Aber dann nur 8 MHz und keine 16 MHz.

Mehr macht der ATmega32*L* offiziell auch bei 5 V aber nicht …

von Peter N. (Gast)


Lesenswert?

Frank K. schrieb:
> Aber dann nur 8 MHz und keine 16 MHz. Schau ins Datenblatt!
>
> fchk

Jepp danke, das hab ich gesehen. Eine ergänzende Frage noch: Ist es 
nötig irgendwelche Fuse-bits zu setzen wenn ich eine andere VCC nehme, 
oder nicht?

Sprich, kann ich ihn aus einer 5V-Schaltung herausnehmen und in eine 
3,3V Schaltung einsetzen, ohne irgendetwas umzuprogrammieren?

Danke soweit.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter N. schrieb:

> Ist es
> nötig irgendwelche Fuse-bits zu setzen wenn ich eine andere VCC nehme,
> oder nicht?

Musst du nichts umstellen.  Lediglich, wenn du einen anderen
Oszillator benutzen willst (bspw. 8 MHz statt der standardmäßigen
1 MHz), musst du Fuses ändern.

> Sprich, kann ich ihn aus einer 5V-Schaltung herausnehmen und in eine
> 3,3V Schaltung einsetzen, ohne irgendetwas umzuprogrammieren?

Ja.  CMOS halt.  „Klassische“ CMOS-ICs (CD40xx) funktionieren ja auch
zwischen 5 und 15 V.

von Peter N. (Gast)


Lesenswert?

Super. Danke für die Hilfe.

von Sebastian W. (sebastian_w29)


Lesenswert?

Peter N. schrieb:
> ich hätte mal eine kurze - vielleicht triviale - Frage: Ich möchte
> zwischen einem ATmega für eine recht simple Anwendung eine I2C
> Kommunikation zwischen einem ATmega und meinem Raspberry Pi aufbauen.
> Die ATmegas in meiner Bastelkiste wünschen sich alle VCC=5V. Der
> Raspberry mag ja an den GPIO's nur 3.3V.

Bei I2C ziehen alle angeschlossenen Geräte nur gegen GND, nie gegen VCC. 
Das machen nur die zwei Pullups.

Der RasPi hat schon relativ kleine Pullups zu 3.3V integriert (jeweils 
1.8kΩ).

Alle nicht ganz alten AVRs (und selbst die meistens) erkennen das 
zuverlässig als High-Pegel, selbst wenn sie mit VCC 5V laufen, solange 
die Leitungen nicht kilometerlang werden.

Sogar wenn die I2C-Bibliothek des AVR den internen Pullup (20-50kΩ, 
siehe Datenblatt) eingangsseitig aktivieren sollte, passiert immer noch 
nichts gravierendes.

Du kannst also bei I2C getrost RasPi und AVR direkt miteinander 
verbinden.

Natürlich sollte der AVR nie einen Ausgangs-High-Pegel auf eine 
I2C-Leitung legen.

LG, Sebastian

von Peter N (Gast)


Lesenswert?

Sebastian W. schrieb:
>
> Natürlich sollte der AVR nie einen Ausgangs-High-Pegel auf eine
> I2C-Leitung legen.
>
> LG, Sebastian

Das klingt riskant :)

von Sebastian W. (sebastian_w29)


Lesenswert?

No risk, no fun.

Für Tilda (http://tilda.googlecode.com) z.B. lasse ich den Attiny mit 5V 
laufen, um einen Ultraschallsensor mit nur einer Datenleitung anbinden 
zu können:
1
// Note: The HC-SR04 Echo line is pulled down with about 36 Ohms.
2
// A 3.3V Attiny has not enough power on the output pin to pull the HC-SR04 Echo line
3
// high enough to prepare the Trigger, thus PDISTTRIG!=PDISTECHO
4
// At 5V Attiny sources 60mA to the Echo line to pull the Trigger to 2.2V,
5
// which is sufficient for the HC-SR04.

Aber mit 3.3V VCC für den Atmega/Attiny bist du natürlich immer auf der 
sichereren Seite.

LG, Sebastian

PS: Der RasPi hat manchmal Probleme mit I2C, siehe 
http://elinux.org/BCM2835_datasheet_errata#p35_I2C_clock_stretching, 
https://github.com/raspberrypi/linux/issues/254, 
http://www.advamation.com/knowhow/raspberrypi/rpi-i2c-bug.html und 
https://dl.dropboxusercontent.com/u/3669512/2835_I2C%20interface.pdf. Du 
solltest also Mechanismen einbauen, um korrupte I2C-Kommunikation 
aufzufangen (Checksums, Retransmissions, ...).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.