Forum: Mikrocontroller und Digitale Elektronik AVR per Levelshifter mit Raspi flashen


von Mathias O. (m-obi)


Lesenswert?

Mahlzeit,

ich hab u.a. vor einen AVR, mittels Avrdude auf dem Raspi, zu flashen. 
Dazu habe ich als Levelshifter diesen hier.
http://www.amazon.de/Adafruit-Bi-Direktionaler-Pegelwandler-TXB0104-Bausatz/dp/B010LTHB2E/ref=sr_1_1?ie=UTF8&qid=1457696282&sr=8-1&keywords=txb0104

Für I²C verwende ich diesen.
http://www.amazon.de/Adafruit-bi-direktionaler-Pegelwandler-Kanal-I2C-sicher/dp/B00MUJ2B2E/ref=sr_1_1?ie=UTF8&qid=1457696302&sr=8-1&keywords=levelshifter

Wenn ich mit dem erstgenannten das ganze Versuche, funktioniert es 
sporadisch. Und wenn es funktioniert, liesst es aber die falsche ID aus.
Nehme ich den für I²C klappt es wunderbar, ich ich kann schreiben und 
lesen. Und die ID stimmt auch.
Bei dem erstegannten mit dem TXB0104 drauf, hab ich auch extra OE auf 
einen Pin gelegt um es zu steuern.
Auf der PI-Seite sind 3,3V und auf der AVR-Seite sind 5V.

Woran kann das liegen?

: Bearbeitet durch User
von Mathias O. (m-obi)


Lesenswert?

Weiß keiner woran das liegen kann?

von Mathias O. (m-obi)


Lesenswert?

Hab es nun mal mit einem TXB0108 probiert. Das ist es dasselbe.

Kennt jemand einen anderen Levelshifter, wo man auch die Aus-/Eingänge 
hochohmig schalten kann?

von Dirk K. (dekoepi)


Lesenswert?

Wozu überhaupt einen Levelshifter? AVR laufen auch mit 3,3V, also 
5V-Versorgung abziehen und direkt mit Pi flashen - ohne fehleranfällige 
Zusatzkomponenten. Damit sollten doch alle Probleme behoben sein. :)

von Einer K. (Gast)


Lesenswert?

Der Raspberry hat doch USB.
Warum nimmst du nicht einen der vielen verschiedenen USB ICSP Adapter?
Oder einen Arduino als Programmieradapter...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Stell mal die ISP-Frequenz auf 125kHz oder weniger.

von Mathias O. (m-obi)


Lesenswert?

Dirk K. schrieb:
> Wozu überhaupt einen Levelshifter? ...

Als wenn auf der Platine nur ein AVR drauf wäre :D.
Die Schaltung ist jetzt nunmal ausgelegt auf 5V. Als die entwickelt 
wurde, war der RPi noch garnicht im Gespräch. Weitere Entwicklungskosten 
wollte ich jetzt nicht noch reinstecken.

U. F. schrieb:
> Der Raspberry hat doch USB.

Die Idee kam mir auch schon. Nutze ja sonst auch immer einen USBasp (bei 
Windows). Hab ja auch noch einen USB port frei am RPi. Mal schauen. 
Wollte es jetzt aber erstmal so probieren.

Knut B. schrieb:
> Stell mal die ISP-Frequenz auf 125kHz oder weniger.

Hab ich schon. Sogar auf 10kHz. Geht aber auch nicht.

von Klaus (Gast)


Lesenswert?

Mathias O. schrieb:
> Als wenn auf der Platine nur ein AVR drauf wäre :D.
> Die Schaltung ist jetzt nunmal ausgelegt auf 5V.

Und die muß einwandfrei funktionieren, während der AVR geflascht wird? 
Oder geht da was kaputt, wenn es zuwenig Spannung bekommt?

MfG Klaus

von Mathias O. (m-obi)


Lesenswert?

Klaus schrieb:
> Mathias O. schrieb:
>> Als wenn auf der Platine nur ein AVR drauf wäre :D.
>> Die Schaltung ist jetzt nunmal ausgelegt auf 5V.
>
> Und die muß einwandfrei funktionieren, während der AVR geflascht wird?
> Oder geht da was kaputt, wenn es zuwenig Spannung bekommt?
>
> MfG Klaus

Das ganze wird in einer Vorrichtung geflasht und automatisch getestet. 
Dazu wird auch geprüft ob der Buck Converter aus den 24V auch 5V macht. 
Dies dient dann auch zur Versorgung des Pegelwandlers. Dazu sollte der 
Pegelwandler auch hochohmig schaltbar sein. Da nach dem Flash-Vorgang 
die Pins vom AVR als UART auf der Platine genutzt werden für RS485.

von Frank K. (fchk)


Lesenswert?

Mathias O. schrieb:
> Hab es nun mal mit einem TXB0108 probiert. Das ist es dasselbe.
>
> Kennt jemand einen anderen Levelshifter, wo man auch die Aus-/Eingänge
> hochohmig schalten kann?

Nimm 74HCT125 (VCC=5V) für die 3.3->5V Richtung und 74LVC125 (VCC=3.3V) 
für die 5V->3.3V Richtung.

Oder einen Haufen 74LVC1T45. Die gehen von 1.8V bis 5.5V auf jeder Seite 
und sind richtungsmäßig umschaltbar.

fchk

von Holger S. (223rem)


Lesenswert?

Mathias O. schrieb:
...
> Woran kann das liegen?

Texas schreibt dazu im DB vom TXBxxx:

"For the same reason, the TXB0108 should not be used in applications 
such as I2C or 1-Wire where an opendrain driver is connected on the 
bidirectional data I/O. For these applications, use a device from the TI 
TXS01xx series of level translators."

Gruß Holger...

von Joachim B. (jar)


Lesenswert?

Dirk K. schrieb:
> Wozu überhaupt einen Levelshifter? AVR laufen auch mit 3,3V, also
> 5V-Versorgung abziehen und direkt mit Pi flashen - ohne fehleranfällige
> Zusatzkomponenten. Damit sollten doch alle Probleme behoben sein. :)

ach?

nur wenn der AVR im Auslieferzustand auf 8MHz steht dann ginge 3,3V 
Versorgung, typische Arduino kommen mit 16MHz und laufen nicht mit 3,3V, 
Ausnahme Arduino mini328p in der 8MHz Version, die werden per Bootloader 
vom FTDI oder CH340/341 (auf 3,3V) USB Adapter oder seriell Rx Tx DTR 
programmiert.

von Dirk K. (dekoepi)


Lesenswert?

Das hast du sicher in der Praxis schon verifiziert?

Ich habe das - offenbar anders als du - getan, und bei Zimmertemperatur 
ist mir noch kein 16-MHz-AVR untergekommen, der an 3,3V gezickt oder ein 
Programm nicht angenommen hätte. Laufen einwandfrei. Arduino Pro Mini 
16MHz 5V einfach mit 3,3V betrieben. Dazu den OnBoard-LDO runtergelötet 
und extern einen genügsameren verwendet, der im Dauerbetrieb die 
LiIon-Spannung auf 3,3V regelt. Und beim Flashen den 
USB-zu-Seriell-Wandler ebenfalls auf 3,3V eingestellt.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Dirk K. schrieb:
> Das hast du sicher in der Praxis schon verifiziert?

ich halte mich an Datenblätter, ich bin einfach aus dem Alter raus wo 
ich Datenblätter ignoriere, klar als Jungspund hatte ich sogar 8MHz 
Chips erfogreich (aus der Not) mit 16MHz betrieben, aber das glückte nur 
weil sie das Design auf kleinere Strukturen umgestellt hatten WD1772-2 
(Atari ST von 720k Disketten auf 1,44MB Disk umgestellt).
Normalerweise wird bei overclocking recht schnell instabil, das es in 
einigen Fällen trotzdem klappen kann nenne ich Glück und kein sicheres 
Design.

: Bearbeitet durch User
von Thomas H. (thergenhahn)


Lesenswert?

Nach meiner Erfahrung erkennt ein mit 5V betriebener AVR die 
3,3V-Signale vom Raspi problemlos. Bleibt nur MISO, das vom AVR zum 
Raspi geht. Da schalte ich eine rote LED in Reihe, 5V -1,6V=3,4V. Auf 
der Raspi-Seite noch einen Widerstand von 3,3k nach GND, dann leuchtet 
die LED auch. Und falls es physikalisch möglich wäre, dass in einer LED 
ein kleiner Strom am Kristall "vorbei" fließen könnte, kann auch der die 
Spannung nicht hochziehen.

von Mathias O. (m-obi)


Lesenswert?

Ist nur blöd, wenn im Laufe des Testprozesses, da 5V bei den anderen 
Signalen rübergehen. Nach dem Flashen werden die einzelen Funktionen der 
Schaltung getestet. Die ISP-Pins vom AVR haben ja auch noch anderen 
Aufgaben.
Das ganze wird in einer Vorrichtung geflasht und getestet.

von Stefan F. (Gast)


Lesenswert?

Einfache Spannungsteiler genügen.
AVR µC werden mit 1Mhz oder 1,2Mhz Taktfrequenz ausgeliefert.

16Mhz laufen in der Praxis auch bei 3,3V. Ich habe das auch mehrmals 
ausprobiert. Mit 4V habe ich sogar zwei Langzeit-Tests gemacht 
(Webserver mit ESP8266).

von Stefan F. (Gast)


Lesenswert?

> Ist nur blöd, wenn im Laufe des Testprozesses,
> da 5V bei den anderen Signalen rübergehen.

Ein einfacher 1k Ohm Widerstand dazwischen genügt als Schutz.

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.