Hallo zusammen! Ich arbeite gerade an einer Platine für einen ATMega mit mehreren Schieberegistern. Ich möchte auch einen Anschluss zur Programmierung platzieren. Allerdings sind die Pins, welche für die Programmierung genutzt werden (MISO, MOSI, SCK) in der Schaltung schon anders belegt. Die entsprechenden Pins gehen an ein 74HCT595 Ausgansschieberegister. MOSI vom µC hängt an RCLK, MISO an Output Enable und SCK hängt am Serial In vom Schieberegister. Output Enable liegt über einen Pull Up an 3.3V. Da es sich bei den Pins am Schieberegister um Eingänge handelt sehe ich zumindest kein Problem darin, dass sich Spannungspegel gegenseitig bekämpfen könnten (wie z.B. wenn eine der Leitungen vom Controller an den Serial Out eines Eingangsschieberegisters geht, an dem vom SR High anliegt, aber z.B. SCK ein Low erzeugen will). Oder übersehe ich hier ein Problem? Das Hauptproblem sehe ich darin, dass das Schieberegister faxen machen könnte, weil es an Serial In und Output Enable beim Programmieren Signale bekommt. Eine Lösung wäre VCC der Schieberegister über einen Jumper zu öffnen, wenn man den µC programmiert. Gibt es noch weitere, elegantere Möglichkeiten? Eine andere Frage stellt sich mir noch im Zusammenhang mit der Spannungsversorgung: Verbinde ich VCC vom Programmer mit VCC der Platine? Wenn die Spannungen hier unterschiedlich sind kommt es zu Ausgleichsströmen. Sollte ich dann VCC vom Programmer einfach nicht verbinden? Oder sollte ich besser die externe Versorgung abklemmen und zur Programmierung den µC über den Programmer versorgen? Oder einfach einen Widerstand zwischensetzen? Danke im Voraus für eure Unterstützung :) Und einen schönen Sonntag noch ;) Viele Grüße, Michael
Je nachdem, was das Schieberegister tut, einfach beim Reset in einen definierten Zustand bringen. Ein Programmer versorgt i.d.R. nicht das Target, sondern umgekehrt.
Michael W. schrieb: > Eine Lösung wäre VCC der Schieberegister über einen > Jumper zu öffnen, wenn man den µC programmiert. Gibt es noch weitere, > elegantere Möglichkeiten? Widerstand zwischen Ausgang Schieberegister und MISO. Dann kann das Schieberegister machen was es will, solange der Programmierer niederohmig direkt am MISO zieht. Im normalen Betrieb stört der Widerstand nicht.
Hallo zusammen, und Danke euch für die schnellen Antworten :) Hmmm schrieb: > Je nachdem, was das Schieberegister tut, einfach beim Reset in einen > definierten Zustand bringen. An den Schieberegistern hängen Relais, z.T. auch Stromstroßschalter. Ich glaube nicht, dass diese zucken könnten, aber wenn, wären das ungewünschte Effekte, wenn auch kein schwerwiegenden. > Ein Programmer versorgt i.d.R. nicht das Target, sondern umgekehrt. War mir so nicht bekannt. Ich habe hier einen USP Programmieradapter. Da kommt zumindest genug raus, um das Steckbrett mit µC und LEDs etc. zu versorgen. W.A. schrieb: > Widerstand zwischen Ausgang Schieberegister und MISO. Die MISO Leitung geht an einen Steuereingang des SR (G / Output Enable), das SR sollte hier ohnehin nicht aktiv einen Pegel erzeugen. Wenn es sich um den Ausgang eines ICs handeln würde hätte ich auch zuerst an einen Widerstand gedacht. Oder verstehe ich dich falsch? Der PullUp an dieser Leitung sollte auch kein Thema sein, da der Programmer ggf. niederohmig durchsetzt wenn er nach Low zieht.
Wenn du es ganz sicher haben willst, kannst du SCK auch per Jumper zwischen SPI und den Schieberegistern trennen. Oder etwas aufwändiger dieses umschalten an RST koppeln. Atmel hat dazu auch was geschrieben: http://www.atmel.com/Images/Atmel-2521-AVR-Hardware-Design-Considerations_ApplicationNote_AVR042.pdf
Michael W. schrieb: >> Ein Programmer versorgt i.d.R. nicht das Target, sondern umgekehrt. > War mir so nicht bekannt. Die Atmel-ISPs versorgen das Target gar nicht, bei anderen (z.B. Diamex) kann man das bei Bedarf einschalten.
Michael W. schrieb: > ... sind die Pins, welche für die Programmierung > genutzt werden (MISO, MOSI, SCK) in der Schaltung schon anders belegt. > > Die entsprechenden Pins gehen an ein 74HCT595 Ausgansschieberegister. > MOSI vom µC hängt an RCLK, MISO an Output Enable und SCK hängt am Serial > In vom Schieberegister. Diese Belegung erscheint mir recht willkürlich. Es wäre sinnvoller gewesen, zumindest SCK und MOSI in der gleichen Funktion wie für SPI zu benutzen (als Schiebetakt und Daten). Aber egal. Die Taktleitung deines '595 ist ja anscheinend nicht dabei. > Das Hauptproblem sehe ich darin, dass das Schieberegister faxen machen > könnte, weil es an Serial In und Output Enable beim Programmieren > Signale bekommt. Eine Lösung wäre VCC der Schieberegister über einen > Jumper zu öffnen, wenn man den µC programmiert. Nein, das wäre keine Lösung. Wenn ein Eingang des IC auf H liegt, ziehen die Eingangs-Schutzdioden Vcc des IC mit hoch. Je nachdem, was da noch an Vcc und IC-Ausgängen hängt, kannst du dabei die Schutzdioden überlasten oder es kommt gleich gar kein H-Pegel zustande. > Gibt es noch weitere, elegantere Möglichkeiten? Ich denke mal, OE vom '595 ist das Hauptproblem. Vermutlich würdest du wollen, daß das permanent auf H bleibt, so lange noch keine gültigen Daten im Register stehen. Mach also einen Jumper zwischen MISO und OE (mit dem Pullup auf der OE-Seite) den du zum programmieren öffnest. > Eine andere Frage stellt sich mir noch im Zusammenhang mit der > Spannungsversorgung: Verbinde ich VCC vom Programmer mit VCC der > Platine? Wenn die Spannungen hier unterschiedlich sind kommt es zu > Ausgleichsströmen. Kommt auf den Programmer an. Manche (können) das Target über diesen Anschluß versorgen. Die haben dann aber i.d.R. einen Jumper oder Schalter, um das zu deaktivieren. So lange die Logikpegel hinreichend übereinstimmen, brauchst du hier Vcc nicht an den ISP-Anschluß zu führen. Wieder andere Programmer verwenden den Vcc Anschluß dazu, die Spannung des Targets zu messen und um ihre Ausgangspegel entsprechend anzupassen. Hier mußt du Vcc am ISP-Anschluß haben. Am universellsten ist es wohl, Vcc herauszuführen und auf der Seite des Programmers entsprechend zu jumpern.
Hallo nochmals! Bernd schrieb: > Atmel hat dazu auch was geschrieben: > http://www.atmel.com/Images/Atmel-2521-AVR-Hardware-Design-Considerations_ApplicationNote_AVR042.pdf Danke für den Link :) Ich denke du verweist konkret auf Kapitel 4.1. Werde ich mir gleich genauer anschauen. Hmmm schrieb: > Die Atmel-ISPs versorgen das Target gar nicht, bei anderen (z.B. Diamex) > kann man das bei Bedarf einschalten. Wieder was interessantes gelernt. Steht auch was in oben gelinkter Atmel Lektüre zu. Dann bin ich hoffentlich gleich noch schlauer :) Viele Grüße, Michael
Hallo Axel! Da haben wir uns heute Mittag wohl knapp verpasst. Danke für deinen ausführlichen Beitrag :) Axel S. schrieb: > Diese Belegung erscheint mir recht willkürlich. Es wäre sinnvoller > gewesen, zumindest SCK und MOSI in der gleichen Funktion wie für SPI zu > benutzen (als Schiebetakt und Daten). Aber egal. Die Taktleitung deines > '595 ist ja anscheinend nicht dabei. Die Wahl der Belegung ergibt sich durch die Anordnung der Pins auf der Platine. Ich werde schauen, ob sich das ändern lässt. Taktleitung vom '595 ist jedenfalls nicht betroffen. > Nein, das wäre keine Lösung. Wenn ein Eingang des IC auf H liegt, > ziehen die Eingangs-Schutzdioden Vcc des IC mit hoch. Je nachdem, was da > noch an Vcc und IC-Ausgängen hängt, kannst du dabei die Schutzdioden > überlasten oder es kommt gleich gar kein H-Pegel zustande. Danke für dein Intervenieren und die Erklärung :) Ich bin in diesem Gebiet nicht sehr versiert und daher noch ziemlich unbedarft. > Ich denke mal, OE vom '595 ist das Hauptproblem. Vermutlich würdest du > wollen, daß das permanent auf H bleibt, so lange noch keine gültigen > Daten im Register stehen. Mach also einen Jumper zwischen MISO und OE > (mit dem Pullup auf der OE-Seite) den du zum programmieren öffnest. Du hast es auf den Punkt gebracht. Die Lösung mit dem Jumper zw. MISO & OE und dem PullUp auf OE Seite überzeugt auch :) > Kommt auf den Programmer an... Momentan habe ich einen "USBASP" Programmer, der scheinbar das Target auch zumindest mit ein bisschen Strom versorgen kann. Ich weiß nicht, ob es so gedacht ist, aber für Experimente mit u.a. mit 16*2 Display oder UART-LAN Adapter hat es gereicht. Einen Jumper gibt es nicht. > Am universellsten ist es wohl, Vcc herauszuführen und auf der Seite des > Programmers entsprechend zu jumpern. Eine universelle Lösung wäre mir am liebsten. Bleibe ja nicht unbedingt ewig bei diesem Programmer. Platz für Jumper wäre auch vorhanden. Verstehe ich dich dahingehend richtig, dass ich einen Jumper zur Verbindung VCC ISP (steht so auch drauf, nicht VTG) zu VCC Platine vorsehen soll? Ich sollte vielleicht erklären, dass die Hauptplatine mit den Schieberegistern und Anschlussklemmen mit 5V versorgt ist. Der µC sitzt auf einer separaten Platine, welche eine Spannungsregelung auf 3.3V hat. Sollte mein Programmer mal VCC zur Messung des Targets zu nutzen, müsste ich auf den 3.3V Pin vom µC gehen. Da mein Programmer momentan aber konstant 5V an VCC abgibt würde er dann der µC mit 5V braten. Wäre in dem Fall also die universellste Lösung 3 Pins, rechts 5V, links 3.3V, Mitte an VCC vom ISP Port? So kann man wahlweise eine der beiden Spannungen verbinden - oder auch offen lassen. Danke allen nochmal für deine eure Denkanstöße :) Und einen schönen Sonntag Abend noch! Viele Grüße, Michael
Michael W. schrieb: >> Kommt auf den Programmer an... > Momentan habe ich einen "USBASP" Programmer, der scheinbar das Target > auch zumindest mit ein bisschen Strom versorgen kann. Ich weiß nicht, ob > es so gedacht ist, aber für Experimente mit u.a. mit 16*2 Display oder > UART-LAN Adapter hat es gereicht. Einen Jumper gibt es nicht. Das ist ... nicht gut. Wohl so ein China-Ding. Da ist statt eines richtigen Jumpers oftmals ein Lötzinnklecks auf der Platine. Den kann man zwar wegmachen, aber so recht praxisgerecht ist das nicht. >> Am universellsten ist es wohl, Vcc herauszuführen und auf der Seite des >> Programmers entsprechend zu jumpern. > Eine universelle Lösung wäre mir am liebsten. Bleibe ja nicht unbedingt > ewig bei diesem Programmer. Platz für Jumper wäre auch vorhanden. > > Verstehe ich dich dahingehend richtig, dass ich einen Jumper zur > Verbindung VCC ISP (steht so auch drauf, nicht VTG) zu VCC Platine > vorsehen soll? Wenn du deinen usbasp ohne "power target" Jumper verwenden willst und wenn du gleichzeitig die Platine eigenständig versorgen willst, dann wirst du um so einen Jumper nicht herum kommen. Es sei denn, du willst am ISP-Kabel basteln. Die beste Lösung ist aber IMNSHO, beim Target immer Vcc auf den ISP-Anschluß zu legen und die Speisung des Targets im Fall des Falles am Programmer abzuschalten. > Ich sollte vielleicht erklären, dass die Hauptplatine mit den > Schieberegistern und Anschlussklemmen mit 5V versorgt ist. Der µC sitzt > auf einer separaten Platine, welche eine Spannungsregelung auf 3.3V hat. > Sollte mein Programmer mal VCC zur Messung des Targets zu nutzen, müsste > ich auf den 3.3V Pin vom µC gehen. Der Vcc-Anschluß am ISP-Steckverbinder muß immer zu Vcc des µC gehen. Denn diese Spannung bestimmt ja letztendlich, welche Pegel der Programmer senden bzw. empfangen muß. > Da mein Programmer momentan aber > konstant 5V an VCC abgibt würde er dann der µC mit 5V braten. Da alle ATMega bis 5.5V vertragen, besteht keine Gefahr des "Bratens". Allerdings kannst du ja andere IC an Vcc hängen haben, für die das nicht gilt. In dem Fall hast du aber so oder so ein Problem. Denn wenn der µC mit 3.3V läuft, der usbasp aber mit 5V, dann sendet der usbasp zu hohen H-Pegel, was hoffentlich dank Serienwiderständen auf dem usbasp und Schutzdioden im Target gut geht. Der µC sendet aber in der Gegenrichtung zu niedrigen H-Pegel, was der usbasp möglicherweise nicht richtig erkennt. Das kann gut gehen, muß aber nicht. Nun ist aber "usbasp" ein weites Feld. Es gibt durchaus Varianten, die per Jumper (oder Lötklecks) zwischen 5V und 3.3V umgeschaltet werden können. Die erkennst du sehr einfach daran, daß ein Spannungsregler für 3.3V auf der Platine sitzt. So ein usbasp liefert dann nicht nur die richtigen Pegel, sondern könnte evtl. auch dein Target mit 3.3V versorgen. > Wäre in dem Fall also die universellste Lösung 3 Pins, rechts 5V, links > 3.3V, Mitte an VCC vom ISP Port? So kann man wahlweise eine der beiden > Spannungen verbinden - oder auch offen lassen. Nein. So niemals. s.o.
Michael W. schrieb: > Der µC sitzt auf einer separaten Platine, Wenn du die runter ziehen kannst, dann kannst du den µC auch separat vom anderen Kram beschreiben. Alternativ: Wie wäre es mit einem Bootloader, dann brauchst du den ISP Adapter nur beim ersten mal.
> Verbinde ich VCC vom Programmer mit VCC der Platine? Normalerweise ja > Wenn die Spannungen hier unterschiedlich sind kommt es zu > Ausgleichsströmen. Normalerweise dient die VCC Leitung dazu, die Ausgangstreiber des Programmieradapters zu versorgen. Damit passt er seine Ausgangsspannungen an die Versorgungsspannugn der Zielschaltung an. Aber es gibt billige Programmieradapter, die das gerade nicht tun. Sie haben dann allerdings zumindest einen Umschalter von 3,3 zu 5V. Stromfluss in die falsche Richtung wird dabei im guten Fall durch Dioden und/oder Spannungsregler verhindert. Die USBASP sind aber noch billiger als billig, da hat man alles weg gelassen, was möglich ist. Wenn du den auf 5V stellst und deine externe Schaltung eine eigene Spannungsversorgung hat, fließt tatsächlich ein Ausgleichsstrom der praktisch nur durch die dünnen Kabel begrenzt wird. Bei 3,3V ist es nicht ganz so schlimm, da der verbaute Spannungsregler kein problem hat, wenn er "hinten herum" eine höhere Spannung ab bekommt. Allerdings sind die Signale trotzdem noch mit 5V Pegel! Der Spannungsregler wird nur zur Versorgung der Zielschaltung verwendet, aber der µC auf dem USBASP und damit auch alle Signale haben fest 5V. Ich habe in diesem Jahr 3 USBASP bei unterschiedlichen Händlern gekauft. Sie sehen auch alle etwas anders aus, entsprechen jedoch exakt diesem idiotischen Schaltplan: http://jimlaurwilliams.org/wordpress/wp-content/uploads/2014/12/AC-PG-USBASP_03_LRG.jpg Mit folgender Ausnahme: Die Sicherung F1 und die Jumper JP2 und JP3 haben sie auch noch weg gespart. Ich halte das für eine Fehlkonstruktion. Um deine Zielschaltung nicht zu zerstören, solltest du beim USBASP in alle Signal-Leitungen 180 Ohm Widerstände einschleifen. Die haben aber auch wieder Nebenwirkungen. Der USBASP ist nicht für Anfänger geeignet - ist meine Meinung.
Michael W. schrieb: > Ich arbeite gerade an einer Platine für einen ATMega mit mehreren > Schieberegistern. Ich möchte auch einen Anschluss zur Programmierung > platzieren. Allerdings sind die Pins, welche für die Programmierung > genutzt werden (MISO, MOSI, SCK) in der Schaltung schon anders belegt. Dann nutze doch JTAG. Das liegt auf anderen Pins. Wäre eine Lösung. Die Alternative wäre ein bidirektionaler Busswitch wie FST3257, 74CBTLV3257 oder ähnliche. Die ISP-Funktionalität ist nur bei !RST=Low aktiv, und dieses Signal kannst Du zum Umschalten des Busswitches benutzen. > Signale bekommt. Eine Lösung wäre VCC der Schieberegister über einen > Jumper zu öffnen, wenn man den µC programmiert. Das ist keine Lösung. Schau mal ins Datenblatt. Die Logikbausteine können nämlich nur Signale von 0V bis Vcc ab, und wenn Vcc auf 0V liegt, müssen alle Eingangssignale auch auf 0V liegen, sonst kann der Chip kaputt gehen. > Eine andere Frage stellt sich mir noch im Zusammenhang mit der > Spannungsversorgung: Verbinde ich VCC vom Programmer mit VCC der > Platine? Wenn die Spannungen hier unterschiedlich sind kommt es zu > Ausgleichsströmen. Sollte ich dann VCC vom Programmer einfach nicht > verbinden? Oder sollte ich besser die externe Versorgung abklemmen und > zur Programmierung den µC über den Programmer versorgen? Oder einfach > einen Widerstand zwischensetzen? Vcc am ISP-Port ist dafür vorgesehen, die (bei vernünftigen Programmern vorhandenen) Pegelwandler zu versorgen. Sonst nichts. Insbesondere ist dieser Pin nicht dafür gedacht, die Schaltung darüber zu versorgen, obwohl viele Leute das machen. Und: Dieser Pin ist erforderlich, also einfach anschließen. Gilt für JTAG genauso. fchk
Michael W. schrieb: > Momentan habe ich einen "USBASP" Programmer, der scheinbar das Target > auch zumindest mit ein bisschen Strom versorgen kann. Ich weiß nicht, ob > es so gedacht ist, aber für Experimente mit u.a. mit 16*2 Display oder > UART-LAN Adapter hat es gereicht. Einen Jumper gibt es nicht. Also Schrott. Das beste wäre dann, einen Pegelwandler mit 4 74LVC1T45 aufzubauen. https://assets.nexperia.com/documents/data-sheet/74LVC_LVCH1T45.pdf VCCA geht dann VCC vom Programmer, VCCB geht an VCC vom Target. Bei guten Programmern sind solche Bausteine auch verbaut. Da Du Dir einen schlechten gekauft hast, musst Du jetzt Geld in die Hand nehmen und das nachrüsten. Das Beste wäre ein ATMEL-ICE. Der kann neben ISP auch PDI und JTAG. fchk
Guten Morgen zusammen! Habe leider jetzt erst die nötige Zeit dazu gefunden hier wieder reinzuschauen und zu antworten. Danke für die vielen Informationen die noch gekommen sind :) Axel S. schrieb: > …Wohl so ein China-Ding… Ja, so ein China Ding :-/ Wurde irgendwo „empfohlen“. Kostet fast nichts, kann auch vielleicht fast nichts. Hat für mich aber bisher gereicht, da es den µC jedes Mal erfolgreich programmiert hat. > ...dann wirst du um so einen Jumper nicht herum kommen... Wie gesagt, eine universelle Lösung fände ich gut, und Platz für eine Jumper ist da. > Die beste Lösung ist aber IMNSHO, beim Target immer Vcc auf den > ISP-Anschluß zu legen und die Speisung des Targets im Fall des Falles am > Programmer abzuschalten. Wenn der Programmer das kann, gerne. Wenn mir meiner nicht mehr reicht hole ich auch gerne etwas Besseres. Bis dahin schadet ein Jumper auf der Platine aber denke ich nicht. Wenn man ihn gebrückt lässt ist es fast so, als wäre er nicht da. > Der Vcc-Anschluß am ISP-Steckverbinder muß immer zu Vcc des µC gehen. > Denn diese Spannung bestimmt ja letztendlich, welche Pegel der > Programmer senden bzw. empfangen muß. Das China Ding ballert denke ich immer mit 5V, da ist nichts mit Pegelanpassung fürchte ich. Aber wenn ich die VCC vom Programmer mit 5V an VCC vom µC lege wird der auch mit 5V gespeist und die Pegel passen. > Da alle ATMega bis 5.5V vertragen, besteht keine Gefahr des "Bratens". Stimmt, habe ich im Datenblatt inzwischen auch nachgelesen. Dachte es gäbe verschiedene (5V, 3.3V) Varianten, aber das ist nur der Spannungsregler. > Allerdings kannst du ja andere IC an Vcc hängen haben, für die das nicht > gilt. An den 3.3V VCC vom µC hängt sonst nichts bisher. > In dem Fall hast du aber so oder so ein Problem. Denn wenn der µC > mit 3.3V läuft, der usbasp aber mit 5V, dann sendet der usbasp zu hohen > H-Pegel, was hoffentlich dank Serienwiderständen auf dem usbasp und > Schutzdioden im Target gut geht. Der µC sendet aber in der Gegenrichtung > zu niedrigen H-Pegel, was der usbasp möglicherweise nicht richtig > erkennt. Das kann gut gehen, muß aber nicht. Wie schon gesagt, bisher geht es gut. Eine gute Lösung ist es aber natürlich nicht. > Nun ist aber "usbasp" ein weites Feld. Es gibt durchaus Varianten, die > per Jumper (oder Lötklecks) zwischen 5V und 3.3V umgeschaltet werden > können. Die erkennst du sehr einfach daran, daß ein Spannungsregler für > 3.3V auf der Platine sitzt. So ein usbasp liefert dann nicht nur die > richtigen Pegel, sondern könnte evtl. auch dein Target mit 3.3V > versorgen. Ich werde die Platine vom Programmer mal genauer anschauen, ob ich einen Regler finde. Ggf. hole ich mir auch mal einen anständigen, wenn es sich lohnt weil ich ihn häufiger brauche. Bisher ist bei mir aber alles erstmal Spielerei und Ausprobiererei. > Nein. So niemals. s.o. Ok, überzeugt, lasse ich ;) Danke für dein ausführliches Feedback :) Arduino F. schrieb: > Wenn du die runter ziehen kannst, dann kannst du den µC auch separat vom > anderen Kram beschreiben. Kann ich abziehen, mache ich im Moment auch so. Ist aber recht aufwendig und auf Dauer auch nicht gut für die Lötaugen, da man immer ein wenig „Gewalt“ anwenden muss. > Alternativ: > Wie wäre es mit einem Bootloader, dann brauchst du den ISP Adapter nur > beim ersten mal. Puh, wieder was, von dem ich keine Ahnung habe :/ Treibt durch die nötige Einarbeitung den Aufwand für mich wahrscheinlich auch erstmal in die Höhe :( So wie ich jetzt beschreibe weiß ich, wie es geht, und das es funktioniert. Stefan U. schrieb: >> Verbinde ich VCC vom Programmer mit VCC der Platine? > Normalerweise ja Normaler Weise, wenn man keinen billigen China USBASP Programmer hat ;) >> Wenn die Spannungen hier unterschiedlich sind kommt es zu >> Ausgleichsströmen. > > Normalerweise dient die VCC Leitung dazu, die Ausgangstreiber des > Programmieradapters zu versorgen. Damit passt er seine > Ausgangsspannungen an die Versorgungsspannugn der Zielschaltung an. Normaler Weise, wenn man keinen billigen China USBASP Programmer hat ;) > Aber es gibt billige Programmieradapter, die das gerade nicht tun. Sie > haben dann allerdings zumindest einen Umschalter von 3,3 zu 5V. > Stromfluss in die falsche Richtung wird dabei im guten Fall durch Dioden > und/oder Spannungsregler verhindert. Dass es sich bei meinem Programmer um einen „guten Fall handelt“, bezweifle ich inzwischen :/ > Die USBASP sind aber noch billiger als billig, da hat man alles weg > gelassen, was möglich ist. Wenn du den auf 5V stellst und deine externe > Schaltung eine eigene Spannungsversorgung hat, fließt tatsächlich ein > Ausgleichsstrom der praktisch nur durch die dünnen Kabel begrenzt wird. Ich denke ich werde noch einen Schalter vorsehen, mit dem ich die externe Spannungsversorgung der Platine abschalten kann. Dann fließt auch nix und ich sollte damit ein Problem weniger haben. > Bei 3,3V ist es nicht ganz so schlimm, da der verbaute Spannungsregler > kein problem hat, wenn er "hinten herum" eine höhere Spannung ab > bekommt. Allerdings sind die Signale trotzdem noch mit 5V Pegel! Der > Spannungsregler wird nur zur Versorgung der Zielschaltung verwendet, > aber der µC auf dem USBASP und damit auch alle Signale haben fest 5V. Wenn der Programmer mit VCC 5V den µC an seinem 3.3V VCC Pin versorgt läuft ja auch der µC auf 5V und die Signalpegel passen. Es ist aber gut zu wissen, dass der Spannungsregler diese 5V „hinten herum“ auch verträgt. > Um deine Zielschaltung nicht zu zerstören, solltest du beim USBASP > in alle Signal-Leitungen 180 Ohm Widerstände einschleifen. Die haben > aber auch wieder Nebenwirkungen. Ja, eine gute oder gar optimale Lösung zu finden gestaltet sich doch recht schwer. Irgendwo geht man doch immer einen Kompromiss ein :( > > Der USBASP ist nicht für Anfänger geeignet - ist meine Meinung. Vom Preis mal abgesehen ;) Frank K. schrieb: > Dann nutze doch JTAG. Das liegt auf anderen Pins. Wäre eine Lösung. > > Die Alternative wäre ein bidirektionaler Busswitch wie FST3257, > 74CBTLV3257 oder ähnliche. Die ISP-Funktionalität ist nur bei !RST=Low > aktiv, und dieses Signal kannst Du zum Umschalten des Busswitches > benutzen. > Danke für die Hinweise, muss ich mir genauer anschauen. >> Eine Lösung wäre VCC der Schieberegister über einen >> Jumper zu öffnen, wenn man den µC programmiert. > > Das ist keine Lösung. Schau mal ins Datenblatt. Danke auch für die Info. Das ist weiter oben schon aufgeklärt worden. Da bin ich zu naiv rangegangen :( > > Vcc am ISP-Port ist dafür vorgesehen, die (bei vernünftigen Programmern > vorhandenen) Pegelwandler zu versorgen. Sonst nichts. Insbesondere ist > dieser Pin nicht dafür gedacht, die Schaltung darüber zu versorgen, > obwohl viele Leute das machen. Und: Dieser Pin ist erforderlich, also > einfach anschließen. Gilt für JTAG genauso. Wie du schon sagst, bei vernünftigen Programmern. Also ist es bei mir anders ;) Frank K. schrieb: > Also Schrott. Kann man natürlich so sagen. Stimmt wahrscheinlich auch objektiv. Ist aber immer von der Perspektive abhängig. Womöglich könnte ich das über dein Fahrrad auch sagen, wenn es kein High End Teil ist. Aber wenn es dich bei gelegentlichen kleinen Ausflügen zum Ziel bringt reicht es vielleicht für dich ;) > Das beste wäre dann, einen Pegelwandler mit 4 74LVC1T45 aufzubauen. > https://assets.nexperia.com/documents/data-sheet/74LVC_LVCH1T45.pdf > > VCCA geht dann VCC vom Programmer, VCCB geht an VCC vom Target. Bei > guten Programmern sind solche Bausteine auch verbaut. Da Du Dir einen > schlechten gekauft hast, musst Du jetzt Geld in die Hand nehmen und das > nachrüsten. > > Das Beste wäre ein ATMEL-ICE. Der kann neben ISP auch PDI und JTAG. Danke für diese Anregungen :) Muss ich mir aber auch erstmal im Detail anschauen :( Danke nochmal an alle für die teils ausführlichen Beiträge und die vielen Hinweise. Ich habe jetzt auf jeden Fall viel Input den ich mir genau anschauen und über den ich nachdenken muss. Viele Grüße, Michael
> Ich denke ich werde noch einen Schalter vorsehen
Ja, mach das. Anstatt bei allen targets einen VCC Jumper einzufügen, der
nicht Standard konform ist, würde ich lieber den Programmer umbauen.
Es kann nicht schwer sein, eine Leiterbahn oder gar das Flachkabel
durchzuschneiden und einen Schalter einzufügen. Bei der Gelegenheit
würde ich auch gleich noch eine Sicherung (400mA PTC) einfügen, falls
der Programmer keine hat.
Ja, da hast du wohl auch recht. Am Kabel anzusetzen habe ich noch gar nicht in Betracht gezogen. So einfach habe ich nicht gedacht. Aber ich schaue auch nachher erstmal ob auf der Platine ein Jumper oder eine Brücke o.ä. sind, wo man vll auch 5V/3.3V umstellen kann.
Stefan U. schrieb: > Ich habe in diesem Jahr 3 USBASP bei unterschiedlichen Händlern gekauft. > Sie sehen auch alle etwas anders aus, entsprechen jedoch exakt diesem > idiotischen Schaltplan: > http://jimlaurwilliams.org/wordpress/wp-content/uploads/2014/12/AC-PG-USBASP_03_LRG.jpg In der Tat idiotisch. Richtig würde man einen ATMega88 verwenden und den per Jumper entweder mit 3.3V oder 5V versorgen. In die Reset, MISO, MOSI und SCK Leitungen zum Target gehören Serienwiderstände ca. 150R. Und für die optionale Versorgung des Targets aus dem Programmer gehört da ein extra Jumper hin. Dann kann der usbasp wahlweise 5V oder 3.3V Pegel liefern, was für 99% der Anwendungen ausreichen dürfte. > Der USBASP ist nicht für Anfänger geeignet - ist meine Meinung. Das Problem ist halt, daß usbasp kein geschützter Begriff ist. So lange so ein Ding sich mit korrekter VID/PID am USB anmeldet und das usbasp Protokoll spricht, sieht es für den Laien und für avrdude wie ein usbasp aus. Die reale Hardware kann dann nochmal heftig differieren. Als Fischl damals (vor über 12 Jahren!) den ersten usbasp zusammengekloppt hat, gab es noch keinen ATMega88 oder überhaupt einen AVR, der bei 3.3V schon mit 12MHz Taktfrequenz gelaufen wäre. Deswegen spricht der Ur-usbasp auch nur fest 5V.
Michael W. schrieb: >> Das beste wäre dann, einen Pegelwandler mit 4 74LVC1T45 aufzubauen. >> https://assets.nexperia.com/documents/data-sheet/74LVC_LVCH1T45.pdf >> >> VCCA geht dann VCC vom Programmer, VCCB geht an VCC vom Target. Bei >> guten Programmern sind solche Bausteine auch verbaut. Da Du Dir einen >> schlechten gekauft hast, musst Du jetzt Geld in die Hand nehmen und das >> nachrüsten. > Danke für diese Anregungen :) Muss ich mir aber auch erstmal im Detail > anschauen :( Und damit Du nicht dumm stirbst, hier der Pegelwandler zum Nachpinseln. Die 74LVC1G125 dienen nur dazu, die Ausgänge hochohmig zu schalten, wenn der Programmer nicht aktiv ist. Die 74LVC1T45 sind die eigentlichen Pegelwandler. Den USBASP kannst Du auf 5V lassen, das Target kann mit einer beliebigen Spannung zwischen 1.65V und 5.5V arbeiten. fchk
Hallo, eine Anmerkung zum Busswitch. Den kann man auch nicht einfach mit Reset verbinden zum automatischen umschalten. Reset zappelt beim flashen. An den Busswitch muss auch ein Jumper oder Schalter zum umschalten.
:
Bearbeitet durch User
Veit D. schrieb: > Hallo, > > eine Anmerkung zum Busswitch und Pegelwandler. Die kann man jedoch auch > nicht einfach alle mit Reset verbinden zum automatischen umschalten. > Reset zappelt beim flashen. An den Busswitch oder Pegelwandler muss auch > ein Jumper oder Schalter zum umschalten. ISP-Befehle können nur und ausschließlich nur bei !RST=Low übertragen werden. !RST=High beendet den ISP-Modus. Immer. In Deinem Beispiel wird ab Anfang sicher die ID abgefragt und die Fuses programmiert. Das sind einzelne, in sich abgeschlossene Transaktionen, und zwischen denen kann der ISP-Modus wieder verlassen werden. Beim Übertragen der Flash-Daten bleibt !RST dauerhaft auf Low. So soll es sein. fchk
Hallo, das Bild zeigt eine normale Programmierung aus Atmel Studio heraus. Fuse ändere ich dabei nicht. Ich hatte wo gelesen bzw. mitgeteilt bekommen das zum löschen Reset zappelt. Deswegen habe ich bei mir noch einen Schalter vorgesehen. Du bist dir sicher das man alles ohne extra Schalter machen kann. Reset überall gemeinsam ran ohne Einschränkungen? Noch ist meine Platine nicht beauftragt. Ich kann es noch ändern.
:
Bearbeitet durch User
Die USBASPs, die ich bisher gesehen habe (und besitze), nutzen den Vcc vom ISP-Anschluss nicht. Da ist ein 3V3-Regler drauf, der per Lötklecks oder Jumper überbrückt wird. Dann hat man 5V-Pegel (direkt vom USB), ohne Klecks (= mit offenem Jumper) hat man 3V3-Pegel auf den Datenleitungen. Fehlt der Regler, hat man immer 5V-Pegel. Wenn du also deinen AVR vom USBASP versorgt hast, dann war das wahrscheinlich eine parasitäre Versorgung durch die Datenleitungen, gestützt durch den Abblockkondensator. Das funktioniert, ist aber nicht gut. Merke: Während du programmierst, sollte das System versorgt sein und Vcc auf dem ISP-Anschluss anliegen. Lass dir nicht die Stimmung vermiesen. Die USBASP sind billig, aber sie programmieren. Was das Ursprungsproblem angeht, ist deine Verdrahtung schlecht. Ich empfehle, den Enable-Eingang vom Register als /CE irgendwo anzuschließen, mit einem externen Pullup. Wenn der AVR im Reset ist (programmiert wird), floatet der Pin und der Pullup deaktiviert das Schieberegister; wenn du aktiv mit dem Chip sprichst, ziehst du den Pin in deiner Software aktiv runter.
Veit D. schrieb: > Ich hatte wo gelesen bzw. mitgeteilt bekommen das zum löschen Reset > zappelt. Ja, aber das macht nichts. Die ISP-Datenübertragung darf nur bei !RST=0 stattfinden. Deswegen darfst Du einfach !RST als ISP-Enable nehmen und damit die Treiber oder Multiplexer steuern. Debugwire ist ein anderes Thema. Da ist der !RST-Pin im dW-Modus eben kein Reset mehr. Bei JTAG sind die LVC1G125 unnötig. Solange die JTAGEN Fuse aktiv ist, sind die JTAG-Pins exklusiv für JTAG reserviert. fchk
Hallo, Danke Frank, verständlich erklärt :-) dann kann ich den Schalter vom Busswitch IC wieder entfernen. Mit SMD ICs kann ich das aktuell nicht testen.
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.