Mir geistert ein paar Fragen im Kopf, wo ich keine für mich passende Antwort finde. Es geht um eine Schaltung di mit Li-Ion versorgt wird. LEDs, ATTiny85, ADXL345. Den ATTiny hatte ich bisher immer mit dem Arduino Nano per ISP programmiert. Durch anlegen von 5V an den ATTiny beim programmieren kein Problem. Doch was passiert, wenn der ATTiny mit 3,3V versorgt wird. Dann sollte über die MOSI, MISO und SCK Leitungen doch auch maximal 3,8V anlegen (max. Vcc+0,5V an I/O laut Datenblatt). Der Arduino Nano hat aber 5V Pegel an den I/O Pins. Durch den ADXL345 kann aber die ganze Schaltung nicht auf 5V laufen. Der verträgt nur max. 3,6V. Dann hätte ich dort bei der I2C Schnittstelle unzulässige Pegel zwischen ATTiny und ADXL345. Aber bei dem ADXL345 Breakoutboard GY-291 wird auch nur der Chip mit dem integrierten LDO mit 3,3V versorgt. Die Datenleitung sind direkt mit dem Chip verbunden. Jedes Tutorial mit einem Arduino verbindet sich direkt mit dem GY-291. Somit sind auf dem I2C Bus teilweise 5V. Dies sollte der ADXL345 eigentlich nicht vertragen. Warum funktioniert das? Bestimmt nur der ADXL345 die Spannung auf dem I2C Bus? Da die ATTiny Programierschnittstelle und der I2C-Bus an den gleichen Pins liegt, hätte ich dennoch das Problem, das der ADXL345 zeitweise 5V am I2C sieht. Auf dem Steckbrett war das bisher auch immer so, und es ist nichts passiert. Ist das also unkritisch? Oder sollte man das unbedingt vermeiden? Auch habe ich in Schaltungen von USBASP Programierern 3,6V Zehnerdioden gesehen. Kann ich das beim ISP auch so machen? Also die MISO, MOSI, SCK und Reset Leitung per Zehner 3,6V auf Ground ziehen? Ein Widerstand müsste dann in die Leitungen um den Strom durch die ZehnerDiode zu begrenzen. Obwohl in den USBASP Schaltungen ist zwischen USB-D+/D- und ZehnerDiode auch kein Widerstand. Warum kann man das ohne Strombegrenzung machen? Viele Programmer haben zwar ein Switch zwischen 3,3V und 5V. Wenn man dann aber in den Schaltplan schaut, wird oft nur der VOut mit 3,3V geregelt. Die Datenleitungen aber nicht. Ist es also generell unkritsch, den Bus mit etwas höheren Pegeln zu betreiben? Oder sollte der Pegel des Busses besser an das maximal angepasst werden? Oder besteht die Begrenzung des Pegels durch etwas anderes, was mir erstmal nicht ersichtlich ist?
Andre K. schrieb: > Doch was passiert, wenn der ATTiny mit 3,3V versorgt wird. Dann sollte > über die MOSI, MISO und SCK Leitungen doch auch maximal 3,8V anlegen > (max. Vcc+0,5V an I/O laut Datenblatt). Korrekt > Der Arduino Nano hat aber 5V Pegel an den I/O Pins. Wegen der Diode in der 5V Leitung ist es etas weniger, aber trotzdem zu viel. geht halt so nicht. Besorge dir am Besten einen Programmieradapter, der sich selbst and die Spannung der Zielschaltung anpasst oder wenigestens einen, denn man auf 3,3V umschalten kann. Achtung: Bei den allermeisten USBASP Mdoellen mit 3,3/5V Umschaltung schaltet man damit nur den Versorgungsspannungs-Ausgang um aber die Signale haben trotzdem 5V. Zur Not kannst du die unpassende Spannung lassen und 180Ω Widerstände in die vier Signal-Leitungen schalten, damit kein Kurzschluss entsteht. Sauber ist das allerdings nicht. Andre K. schrieb: > Jedes Tutorial mit einem Arduino verbindet sich direkt > mit dem GY-291. Somit sind auf dem I2C Bus teilweise 5V. Nein > Warum funktioniert das? Weil die I²C Busteilnehmer Open-Collector (oder Open-Drain) Treiber haben. Der High Pegel kommt ausschließlich von Pull-Up Widerständen die dann auf den Ausgang eines 3,3V Spannungsreglers gelegt werden. > Auch habe ich in Schaltungen von USBASP Programierern 3,6V Zehnerdioden > gesehen. Kann ich das beim ISP auch so machen? In Kombintion mit Widerständen, welche die Stromstärke auf erlaubte Werte begrenzen: Ja. Nur hat das dann eventuell wieder negative Seiteneffekte auf andere 5V Schaltungen. Kaufe dir lieber einen ordentlichen Programmieradapter, dann brauchst du diesen Schnickschnack nicht. > Ist es also generell unkritsch, den Bus mit etwas höheren > Pegeln zu betreiben? Das ist generell kritisch weil du damit (ohne weitere Aufwände) die Ausgänge des Programmieradapter und die ESD Schutzdioden der Zielschaltung überlastest. Kapute ESD Dioden fallen meist nicht sofort auf, aber irgendwann später wenn das Ding durch einfache Berührung mit den Finger plötzlich kaputt geht oder durch einen Überschwinger in eine Blockierung gebracht wird, die innerhalb des Chips einen Kurzschluss auslöst (Latch-Up Effekt).
Der maximale Pegel auf den I²C-Leitungen wird ausschließlich durch die Spannung an den PullUp-Widerständen bestimmt. Wenn die auf 3V3 liegen (und da werden auf dem ADXL-Board vermutl. bereits welche verbaut sein) passen die Pegel, und auch ein mit 5V laufender ATMega kommt damit wunderbar zurecht. Einfach mal die I²C-Spezifikationen studieren und verstehen!
Andre K. schrieb: > Den ATTiny hatte ich bisher immer mit dem Arduino Nano per ISP > programmiert. Es gibt einige Arduinos mit 3,3V z.B. der 8MHz Pro Mini Auch die "fremden" ESP, ARM usw. Die könne alle "Arduino as ISP"
Der Crumbuino-Nano (https://www.chip45.com/arduino-nano-modul.html) läuft wahlweise mit 3,3V oder 5V, bzw. bei externer Versorgung mit jeder beliebigen Spannung dazwischen.
Danke für die Erklärungen. Das mit dem I2C Bus, dass der Pegel nur durch die PullUps bestimmt wird, war mir bisher nicht klar. Und natürlich sind auf dem GY-291 PullUps drauf. Dennoch sagt es mir, das ich bisher auf dem Breadboard wohl eher Glück hatte. Denn durch das Programmieren des ATTinys über den Arduino und das die I2C Leitungen zum GY-291 verbunden sind mit den Leitungen zum Programmieren. Dadurch kommt ja 5V Pegel auf die I2C Leitungen zum GY-291. Stefan ⛄ F. schrieb: >> Auch habe ich in Schaltungen von USBASP Programierern 3,6V Zehnerdioden >> gesehen. Kann ich das beim ISP auch so machen? > > In Kombintion mit Widerständen, welche die Stromstärke auf erlaubte > Werte begrenzen: Ja. Nur hat das dann eventuell wieder negative > Seiteneffekte auf andere 5V Schaltungen. > > Kaufe dir lieber einen ordentlichen Programmieradapter, dann brauchst du > diesen Schnickschnack nicht. Wie groß dürfen denn eigentlich die Widerstände sein in den MOSI, MISO und SCK Leitungen? Zu große Widerstände beeinflussen ja die Flanken. Gibt es Kaufempfehlungen zu Programmieradaptern? Arduino Fanboy D. schrieb: > Es gibt einige Arduinos mit 3,3V > z.B. der 8MHz Pro Mini > Auch die "fremden" ESP, ARM usw. > Die könne alle "Arduino as ISP" Danke. ESP8266-Boards hab ich noch rumliegen. Die haben ja nur 3,3V an den Pins.
Andre K. schrieb: > Wie groß dürfen denn eigentlich die Widerstände sein in den MOSI, MISO > und SCK Leitungen? Zu große Widerstände beeinflussen ja die Flanken. Genau. Das hängt sehr stark von der Frequenz ab. Der USBASP funktioniert mit 180 Ω noch, wenn sonst nichts weiter an den Leitungen hängt. > Gibt es Kaufempfehlungen zu Programmieradaptern? Ich würde dir gerne den "Atmel ISP mkII" empfehlen (benutze ich seit 10 Jahren), aber den gibt es leider nicht mehr in Original. Die Fälschungen sind von unterschiedlicher Qualität und Funktionsumfang. Original ist der "Atmel ICE" noch zu haben, mit dem kann man auch debuggen. Bei dem stören mich allerdings die exotisch kleinen Anschlüsse, für die ich kein Werkzeug habe. Ansonsten sind die Programmieradapter von Diamex nicht schlecht, aber der Support von der Firma ist unter aller Sau.
Stefan ⛄ F. schrieb: > Andre K. schrieb: >> Wie groß dürfen denn eigentlich die Widerstände sein in den MOSI, MISO >> und SCK Leitungen? Zu große Widerstände beeinflussen ja die Flanken. > > Genau. Das hängt sehr stark von der Frequenz ab. Der USBASP funktioniert > mit 180 Ω noch, wenn sonst nichts weiter an den Leitungen hängt. OK, so hoch müsste der Widerstand in den Leitungen nicht sein, wenn ich den Artikel über ZenerDioden richtig verstanden habe. https://www.electronics-tutorials.ws/de/dioden/zenerdiode.html Wenn ich den den Bus auf 3V senke mit 0,25W Zener Dioden. Dann darf der maximale Strom durch die Zener Diode 0,25W/3V = 0,083A sein. Die Mindestgröße des Vorwiderstandes in der Busleitung sollte also 2V/0,083A = 24,09Ω sein. Damit bin ich ja relativ weit entfernt von 180Ω. Natürlich muss ich den Widerstand so groß wählen, das ich den Pin vom Arduino Nano nicht überlaste. Also mindestens 2V/0,04A = 50Ω. Lieber etwas Höher, obwohl ja eigentlich nur kurzzeitig belastet wird. Und wenn ich den SPI Bus richtig verstehe, brauche ich die Zenerdiode nur in der MOSI (MasterOutSlaveIn) und SCK (Takt) Leitung. Da nur dort Pegel von dem Arduino kommen. Der MISO (MasterInSlaveOut) Pegel wird ja nur von dem ATTiny erzeugt, der unter 3V (oder 3,3V) läuft. Reset wird ja nur gegen Ground gezogen, wenn ich das richtig verstanden habe. Aber ResetPin ist ja auch Spannungstolleranter, wenn ich das Datenblatt richtig interpretiere. Habe ich das soweit richtig interpretiert?
180Ω hätte den Vorteil, kurzschlussfest zu sein. Deswegen hatte ich das
mal (in allen 4 Signal-Leitungen) ausprobiert.
5V / 180Ω = 27mA
> Habe ich das soweit richtig interpretiert?
Ich denke: ja
Der von dir gezeigte USBASP wurde auch in einigen Tutorials geändert. Sie haben die Versorgung des Atmega8L an den 3,3V Spannungsregler geschlossen. Dadurch sind die Pegel des Atmega8L auch 3,3V. Mit Skalpel wurden zwei Leiterbahnen durchtrennt und zwei neue Verbindungen mit Kupferlackdraht gezogen. Zwar soll der Atmega8L bei 3,3V und 12.000Mhz außerhalb der Spezifikation laufen, aber soll funktionieren. https://www.hackster.io/billy-cheung/3-3v-usbasp-modification-c20557 Ich habe mir neben den Zener-Dioden den USBASP mitbestellt, da es ihn im gleichen Shop gab. Danke für die vielen und hilfreichen Antworten.
Andre K. schrieb: > Der von dir gezeigte USBASP wurde auch in einigen Tutorials geändert. > Sie haben die Versorgung des Atmega8L an den 3,3V Spannungsregler > geschlossen. Dadurch sind die Pegel des Atmega8L auch 3,3V. Mit Skalpel > wurden zwei Leiterbahnen durchtrennt und zwei neue Verbindungen mit > Kupferlackdraht gezogen. > > Zwar soll der Atmega8L bei 3,3V und 12.000Mhz außerhalb der > Spezifikation laufen, aber soll funktionieren. > > https://www.hackster.io/billy-cheung/3-3v-usbasp-modification-c20557 > > Ich habe mir neben den Zener-Dioden den USBASP mitbestellt, da es ihn im > gleichen Shop gab. > > Danke für die vielen und hilfreichen Antworten. Ich habe den USBASP wie in dem Tutorial gezeigt umgebaut. Es funktioniert einwandfrei :D Der Atmega8L wird nur mit 3,3V versorgt und gibt damit auch auf den Bussignalen auch nur 3,3V aus. Und der Attiny85 lässt sich ohne Probleme flashen.
Stefan ⛄ F. schrieb: >> Der Arduino Nano hat aber 5V Pegel an den I/O Pins. > > Wegen der Diode in der 5V Leitung ist es etas weniger, aber trotzdem zu > viel. An den I²C-Leitungen hat der Pegel nichts mit dem H-Pegel der I/Os zu tun.
Wolfgang schrieb: > An den I²C-Leitungen hat der Pegel nichts mit dem H-Pegel der I/Os zu > tun. Das gilt nur für I²C. Ich dachte dabei an die ISP Schnittstelle.
Ja es ging um das mischen von I2C und ISP. Da der verwendete Attiny85 wenige Pins hat, werden die Pins zum Flaschen und die Pins für I2C gemeinsam genutzt. Der ADXL345 verträgt aber maximal 3,6V an seinen Pins. Und wenn die MoSi oder MiSo Leitungen 5V haben, liegen am ADXL345 dann auch 5V an. Also war mein Ziel die ISP Leitungen auf Max. 3,6V zu begrenzen. Und das hat mit dem Umbau des USBASP hervorragend geklappt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.