Ich habe mir nach langem Ringen nun doch ein Board zusammengebastelt, auf dem ich den LANTronix XPORT fest mit einem ATmega32 zusammen betreiben will. Nachdem ich aus Tipps hier im Forum und im Roboter-Netz dann auch rausbekommen habe, wie ich den MAX 3232 richitg und sinnvoll in dieser Kombination einsetze und welcher Spannungsregler für die 3,3 Volt richtig und gut ist, kommt nun das nächste Problem. Ich besitze 3 ISP-Prgrammer, aber keiner davon ist brauchbar um einen ATmega32 in einer 3.3 Volt Umgebung zu programmieren. Der STK500 kompatible von egnite (wurde mit meinen Ethernut zusammen geliefert) braucht mindestens 5 Volt Betriebsspannung und würde die Teile, die an den Programmierpins angeschlossen sind beim Programmieren mit den 5V Impulsen zerlegen. Der STK300 geht auch nur mit 5 Volt und das Ding mit den Widerständen für den Parallelport am PC würde auch die Schaltung beschädigen. Nun baue ich jedesmal den ATmega aus, um den zu programmieren, aber das kann es ja nicht sein. Hat jemand eine Idee, wie ich das Problem lösen könnte ? (Das 3.3 Volt Problem rührt übrigens daher, das der Xport nur 3.3 V darf und sonst beschädigt wird.) Alternativ würde ich auch eine Idee nehmen, wie ich den Pegel der RX/TX Leitungen am ATmega auf 3.3 V-Pegel bekomme, ohne Spannungsteiler zu verwenden. Dann könnte ich den Rest der Schaltung ja mit 5 Volt laufen lassen. (Würde mein Problem mit dem LCD Display dann auch lösen.) Danke für alle Tipps und Anregungen.
Mach doch in die Programmierleitungen vom erstgenannten ISP 2kOhm Widerständer ´rein (über einen kleine Steckplatine, kann man dann bei Bedarf zwischenstecken), dann kannste auch in der 3.3V Umgebung programmieren. Die im ATMEGA vorhandenen Schutzdioden leiten die überschüssige Spannung ab.
Ist denn dann Gewährleistet, das der ATmega auch programmiert wird ? Außerdem drängt sich mir da die Frage auf, ob die Ausgänge von dem AVR in dem Programmieradapter nicht unter dem Experiment leiden. Gibt es eigentlich einen Programmer, der mit 3.3 V läuft?
Am STK500 kannst Du doch VTarget runtersetzen. Und wenns ein ATMega32L ist, dann sollte er auch programmierbar sein. Peter
Wenn ich das richtig interpretiere, kann der AVRISP ab 2.7 V Aus dem Windows-Helpfile: > The AVRISP will draw maximum 50mA @ 5.5V > Make sure the target Voltage is within specified range of the programmer (2.7V - 5.5V).
Bei der o.g. Widerstandsvariante kannst Du nicht viel verkehrt machen. Du darfst nur nicht die Plusleitungen (Vcc) verbinden, also die externe Schaltung und der ISP-Programmer müssen getrennte Spannungsversorgungen haben. Die Massen werden zusammengeschaltet. Bei der Bemessung der Widerstände lege 5V - 3,3V = 1,8V zugrunde, über 2,2k sind 0,82mA, die die obere Schutzdiode worst-case schlucken muß. Da die auch noch ´ne Flußspannung hat, verringert sich der Strom auch noch weiter. Die Ports haben also nichts zu befürchten. Wenn Du ganz sicher gehen willst, nimmst Du noch größere Widerstände. Zum Probieren wär´s doch allemal ein Versuch, bevor Du Dir noch anderes Equipment zulegst oder noch 100x den Prozi aus der Fassung reißt.
So, ich habe die Widerstandsvariante eben ausprobiert (2,2 k). Klappt nicht... Avrdude erkennt den Programmer und schickt auch die Daten los, aber nachdem das Programm und die Daten fehlerfrei übertragen sind, tut´s der ATmega nicht. Zur Kontrolle habe ich den ATmega aus der Fassung geholt und in der 5V Platine programmiert Gleicher Programmer, gleiche Software, gleicher Befehl. Da hat alles super geklappt. Werde wohl doch nach einem 5V ---> 3.3 V Umsetzer für die serielle Schnittstelle suchen müssen. Der Xport ist, nach mehrmaligem Umplanen, das Einzige geblieben, was wirklich nur 3,3 V ab kann.
Ein Transistor-Array (z.B. ULN2003) könnte eine Pegelwandlung erledigen. Die Transistoren schalten nur Masse durch, den High-Pegel bekommst Du durch einen Pull-Up gegen die entsprechende Spannung. Oder ein 74XX07 (oder wars der 74xx06?) - das ist ein 6-Fach Verstärker mit Open-Collector Ausgängen. Hier schalten die Ausgänge auch nur Masse durch.
Zum Untermauern meiner These betreibe ich einen original Atmel AVR-ISP an 5V. In die Programmierleitungen habe ich o.g. Widerstände eingefügt. An einem 3V Akku habe ich eine externe Schaltung mit einem ATTiny2313 bei 4MHz. Diesen programmiere ich ohne Probleme mit dieser Variante, SPI-Frequenz bei 200kHz.
Vieleicht ne blöde Idee aber ... Wenn Du eh einen Max2323 auf deinem Board hast, warum benutzt Du dann keinen Bootloader ? Z.B. der Bootloader von Microsyl leistet bei mir immer gute Dienste. Mittlerweile sehe ich auf keinem Board was RS232 hat die ISP Pins mehr vor. Für die erste Programmierung setze ich den AVR dann immer in ein kleines Board mit Textool Sockel, setze die Fuses und schreibe den Bootloader, gut ist. Oder hab ich jetzt was überlesen und du willst ausdrücklich keinen Bootloader ?? Wenn ja vergiss meinen Beitrag :) Wenn Du auf dem Board beide Spannungen zur Verfügung hast könntest Du den Pegel ja auch über Transistoren anpassen und auf Spannungsteiler verzichten.
Nee, blöd ist die Idee nicht. So ein Bootloader ist ja ganz toll. Aber nur auf größeren Prozis, die genüged Speicher haben, so daß deren Benutzung durch den Loader nicht weiter in´s Gewicht fällt. 512 Worte sind nun mal 512 Worte. Ganz davon abgesehen, daß man auch den EEPROM gelegentlich für eigene Sachen braucht.
@TravelRec. "Aber nur auf größeren Prozis, die genüged Speicher haben," Wenn jetzt schon Deinem ATMega32 die Puste ausgeht wegen 3% Code, dann solltest Du besser gleich was größeres nehmen. Ich setze den Bootloader aufm ATMega8 ein und haben keine Probleme wegen der 7kB statt 8kB. "daß man auch den EEPROM gelegentlich für eigene Sachen braucht." Der Bootloader (zumindest meiner) braucht den EEPROM nicht, er steht Dir also voll zur Verfügung und läßt sich auch per Bootloader vorbelegen. Peter
Also ich programmiere ATMega8, auch wenn es keine L-Typen sind, über SPI mit 3V ohne jedes Problem - allerdings nicht mit dem STK500 sondern so wie hier gezeigt: http://www.rowalt.de/mc/avr/avrboard/01/avrb01.htm (Mitte der Seite). Habe auch festgestellt, daß die sogar noch bei unter 3V klaglos laufen, so daß man einfach 2 AAA - Batterien als "Netzteil" nehmen kann..
Hallo, ich habe hier auf dem ATmega32 einen Bootloader laufen (angepasster AVR109 - Bootloader). Auf dem ATmega32 laufen zahlreiche speicherfressende (also Flash ...) Anwendungen und das Flash ist gerade mal zu 40% voll. Nimm einfach einen Bootloader Deiner Wahl - das scheint die einfachste und praktikabelste Lösung zu sein. Außerdem muss man beim Bootloader keine Angst haben, irgendwelche Hardware zu beschädigen. MfG, Daniel
@Peter: Der ATMEGA32 ist schon groß, keine Frage. Auch der 16er reicht für ´ne ganze Menge Code. Ich denke da eben eher an den ATMEGA8 oder die Tiny2313. Da schlägt so ein universelle Loader schon recht heftig ein. Sicherlich wäre in dem Fall ein weniger aufwändiger Loader denkbar, de eben nur funktioniert und keinen Luxus bietet. Oben genannter Bootloader braucht EEPROM und FLASH, deswegen meine Anspielung. @papa_of_t: Das geht bei Dir wahrscheinlich deswegen, weil Dein LPT beim Programmieren in die Knie geht und somit die Pegel wieder passen ;-)
nee, da ist doch 'n Elko drin im Programmierstecker, und auch wenn ich nicht programmiere, messe ich da nur ca. 3V - reicht aber aus, zumindest bei mir glück gehabt :-) ...
Also zunächst einmal danke für die vielen Tipps. @papa_of_t Ich werde mal meinen Programmieradapter mit den Widerständen so wie den in dem Link "frisieren", mal sehen, was dabei herauskommt. @ToniT Ich habe sogar einen MAX 3232 auf dem Board, weil ich den XPORT durch Jumper mal als Netzwerkinterface für den ATmega32, mal als Schnittstelle für Netzwerk <--> RS232 und den MAX 3232 als RS232 Adapter für den ATmega32 verwenden will. Das tut Deiner Idee mit dem Bootloader aber keinen Abbruch. Ich suche nur nach einem Bootloader, bei dem das Ladeprogramm auf dem PC unter Linux läuft. (Das System mit dem Fähnchen habe ich nicht.) @all Danke für alle Tipps und Hinweise, werde leider erst am Wochenende wieder dazu kommen, mich dem Experiment zuzuwenden.
Kann der XPort nicht die Daten vom Ethernet an die serielle durchreichen ? Dann könnte man mit einem Bootloader sogar bequem übers Netzwerk den Upload machen.
Durch den XPort habe ich ja erst das Problem, das ich 3.3 Volt brauche. Ich musste mein Experimentierboard komplett auf 3.3 V umstellen, eine zusätzliche 5 Volt Versorgung für den Programmieradapter schaffen und für das LCD Display mit der Hintergrundbeleuchtung. Ich kann aber nicht einfach den ATmega32 mit Vcc 3.3 Volt betreiben und dann mit einem STK 500 kompatiblen / STK 300 (Die ja 5 Volt zum arbeiten brauchen programmieren.) Wenn der XPORT nicht nur 5 V tolerant sondern dauerhaft 5 Volt aushalten könnte, dann hätte ich das Problem nicht. Eine Software für den ATmega über den XPort zu flashen, für Linux habe ich noch weniger gefunden, wie eine Software, die unter Linux läuft, mit der man über einen Bootloader den ATmega flashen kann. Danke aber für die Anregung.
@Michael: Wenn Du Dich ein wenig mit Bootloader Materie befassen willst und kein Windoof System hast, dann schau Dir doch mal den Bootloader von Peter Dannegger an : http://www.mikrocontroller.net/forum/read-4-53146.html#new Ich glaube der benötigt nur ein Terminalprogramm bzw. ein ganz einfaches Protokoll.
@Onkel_Michi Ich hab den Bootloader von Herbert Dingfelder, www.dl5neg.de mit uisp (Linux) zum Laufen bekommen. Der Bootloader emuliert einen AVR-ISP nach dem Protokoll aus dieser AVR910 Appnote. Eine kleine Anpassung an die eigene Hardware war nötig. Im Makefile steht dann sowas: setserial /dev/ttyS0 spd_vhi low_latency uisp -dprog=avr910 -dpart=auto -dspeed=115200 --erase --verify --upload if=$(TARGET).hex echo "E" > /dev/ttyS0 Und schon lief das ;-) Rick
Hallo Rick, eigentlich wollte ich ja erst am Wochenende weitermachen, aber Ihr zwingt mich dazu, doch noch mehr zu machen. Die Links mit den Bootloadern habe ich nun durch. Es liest sich alles ganz prima. Das sollte kein Problem darstellen. Trotzdem ist mein Problem damit immer noch nicht vollständig gelöst. Schließlich kann ich ja nicht jeden Käfer, denn ich in dem Board verwende, mit einem Bootloader versehen. Alle Anregungen aus diesem Thema habe ich nun gespeichert und werde die nach und nach ausprobieren. Ausserdem werde ich unabhängig davon nun einen Adapter basteln, der die Programmierleitungen auf der richtigen Seite auf die richtige Spannung bringt. Wenn ich bei 3.3 V die SCK MOSI MISO Leitungen auch nur mit 3.3 V betreibe, lässt sich der ATmega32 dann auch programmieren ? Seid mir nicht böse, aber zunächst einmal wollte die konventionelle Lösung üben, bevor ich voll auf Bootloader umsteige.
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.