Hallo, an einem Raspberry Pi habe ich einen Atmega8 angeschlossen und möchte diesen nun programmieren. Dabei bin ich zunächst dieser Anleitung gefolgt: http://kevincuzner.com/2013/05/27/raspberry-pi-as-an-avr-programmer/ Nun habe ich leider als Pegelwandler zwischen RPi (3V3) und AVR (5V) einen einfachen Transistor verwendet: GPIO --- [1 K] --- BC547 ---+--- [10 K] --- 5V | | GND AVR bzw. umgekehrt für das MISO-Signal. Dabei dachte ich mir, dass ich die Invertierung irgendwie per Software aufheben könnte, was ich nun seit gut einer Stunde versuche. Kann mir jemand dabei behilflich sein?
Wie wärs mit nem USBasp (wenige Euro bei ebay) und avrdude zum flashen? Das müsste out of the Box ohne irgendwelche Kopfstände funktionieren. Grüße Oliver
Die Verbindung vom Raspberry-SPI besteht zum AVR besteht sowieso zwecks Datenübertragung, darüber wollte ich den Controller nun auch programmieren. Die ganze Hardware dafür ist schon fertig.
LedJW schrieb: > Nun habe ich leider als Pegelwandler zwischen RPi (3V3) und AVR (5V) > einen einfachen Transistor verwendet: > GPIO --- [1 K] --- BC547 ---+--- [10 K] --- 5V > | | > GND AVR > bzw. umgekehrt für das MISO-Signal. ... und warum keinen einfachen FET? Dann hättest du das Problem mit der Invertierung nicht (Philips AN97055 Fig.2). LedJW schrieb: > Die ganze Hardware dafür ist schon fertig. Na, dann fehlt nur noch die passenden Software. Datenbytes invertieren, bevor sie über SPI rausgeschickt werden, Datenbytes bei Empfang invertieren, SPI Mode ändern und Reset-Steuersignal invertieren, wäre die Alternative zu nichtinvertierenden Pegelwandlern.
Kann man da nicht noch einen zweiten Transistor benutzen? 2 * invertiert == normal? Das ist doch einfacher als die Software umzuschreiben.
Du kannst den Transistor auch ganz weglassen und nur mit Widerständen arbeiten. Den GPIO des Raspi kannst du direkt auf den Eingang des Atmels legen. Der erkennt 3,3V als High. Und umgekehrt das Signal vom Atmel zum Raspi kannst du mit einem Spannungsteiler aus zwei Widerständen mit 3,3k und 1,8k realisieren. Hab SD-Karten so an nen Atmel angeschlossen, ohne Probleme. Also so:
1 | Atmel Out ---+ |
2 | | |
3 | +-+ |
4 | | | |
5 | | | 1k8 |
6 | +-+ |
7 | | |
8 | o------ Raspi GPIO IN |
9 | | |
10 | +-+ |
11 | | | |
12 | | | 3k3 |
13 | +-+ |
14 | | |
15 | | |
16 | GNG --------o------ GNG |
Oder nimm, wenn du mit 8Mhz auskommst, den Mega8L. Der hat eine Spannungsversorgung von 2,7V - 5,5V.
Vielen Dank für alle Antworten! Wolfgang schrieb: > Datenbytes invertieren, bevor sie über SPI rausgeschickt werden, > Datenbytes bei Empfang invertieren, SPI Mode ändern und > Reset-Steuersignal invertieren Das habe ich gestern versucht, aber nicht fertig gebracht. PittyJ schrieb: > Kann man da nicht noch einen zweiten Transistor benutzen? 2 * invertiert > == normal? So werde ich es jetzt wohl machen. Joachim R. schrieb: > Du kannst den Transistor auch ganz weglassen und nur mit Widerständen > arbeiten. [...] Von der Lösung habe ich gehört, allerdings war ich mir nicht sicher, ob das auch wirklich zuverlässig ist. Gefährlicher für den Raspberry ist es bei falscher Verdrahtung in jedem Fall.
LedJW schrieb: > Von der Lösung habe ich gehört, allerdings war ich mir nicht sicher, ob > das auch wirklich zuverlässig ist. Gefährlicher für den Raspberry ist es > bei falscher Verdrahtung in jedem Fall. Bei falscher Verkabelung ist alles für den Raspi gefärlich, auch die Transistorlösung :-).
Nun habe ich jeweils einen zweiten Transistor spendiert, es funktioniert jetzt einwandfrei. 5V --- 3K3 5V --- 10K | | GPIO --- 10K --- BC547 ---+--- 1K --- BC547 ---+--- AVR | | GND GND Bei MISO eben andersrum, mit 3V3 an den Pullups. Die Widerstände sind natürlich so nicht optimal, aber die Hälfte der Schaltung stand ja schon. Achtung beim Reset-Pin, der wird von avrdude (nach obiger Anleitung) nur zwischen GND und hochohmig umgeschaltet: 10K --- 3V3 | GPIO ---+---- BC547 --- ... Reset | GND Vielen Dank für alle Antworten!
Joachim R. schrieb: > Bei falscher Verkabelung ist alles für den Raspi gefärlich, auch die > Transistorlösung :-). besonders durch die Vielzahl der beteiligten Bauelemente kann sich eher ein Fehler einschleifen. LedJW schrieb: > Nun habe ich jeweils einen zweiten Transistor spendiert, es funktioniert > jetzt einwandfrei. schön, leichter finde ich bei mehr als einer Leitung Pegelwandler wie den 74HC4050 nichtinvertierend oder 74HC4049 invertierend, bis 16V rein und raus kommt maximal VCC zum PI -> Signalrichtung eben VCC vom 74HC4050/49 auf 3,3V und in Gegenrichtung zum AVR o.ä. -> Signalrichtung eben VCC vom 74HC4050/49 auf 5V lohnt natürlich bei 1 bis 2 Leitungen nicht bei TxD RxD habe ich nur einen 470 Ohm in die Leitung gelegt und am PI Port eine BAT42 zu 3,3V, sämtliche über 3,3V zum PI wird nach 3,3V über die Diode abgeleitet, der Strom durch den 470 Ohm begrenzt
:
Bearbeitet durch User
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.