Hallo zusammen, gibt es eine Möglichkeit, einen AVR controller in der fertigen Schaltung via ISP zu programmieren? Ich habe die entsprechenden Pins für LEDs etc. verwendet sodass hierbei mein AVRDragon die Periepherie und nicht den Controller treibt. Ich hatte vor, mir mehrere Platinen bestücken zu lassen und wollte mir die Programmierkosten für die Controller ersparen indem ich sie selber programmiere. MfG Rush
http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_applicationnote_avr042.pdf Seite 7. Für größere Lasten müssten dann Fets oder Transistoren eingesetzt werden.
Rush .. schrieb: > Ich habe die entsprechenden Pins für LEDs etc. verwendet sodass hierbei > mein AVRDragon die Periepherie und nicht den Controller treibt. Man kann die ISP Pins mitnutzen, dabei muss man nur darauf achten, dass die Peripherie nicht zu niederohmig ist und auch keinen Schaden davonträgt. LEDs leuchten halt beim Programmieren, ein Motor hingegen könnte schon mehr Probleme machen wenn der unkontrolliert anläuft.
Auf Seite 7 steht nichts von FETs.... Dort geht es doch nur darum dass der Programmer von der restlichen Peripherie geschützt wird...
Warum sollte ich den Inhalt des Datenblattes hier nochmals wiedergeben?
Sollst du nicht! Verlangt ja auch keiner! Aber ich glaube nicht dass Widerstände in den ISP-Leitungen mein Problem lösen!
Jan H. hat es bereits geschrieben. Es hängt vom zu treibenden Strom ab. Eine LED mit einem 470 Ohm Widerstand sollte für den Programmer nicht das große Problem sein. Und bei größeren Lasten eben einen Transistor/Fet zum Entkoppelon der großen Last vom AVR.
Also einen NPN der einen PNP steuert? Ist es das was du meinst ?
Bitte einmal den Schaltplan posten, bzw. den Teil, der mit den SPI-Pins bzw. den Progpins des AVR verdrahtet ist. So scheint das vom Verständnis her in beide Richtungen nix nichts zu werden. Und wieso ein NPN, der einen PNP treibt?
:
Bearbeitet durch User
Welchen Programmer nutzt du für dein Projekt? Beim mkII brauchst dir da wenig sorgen machen, der schaft es die Leitung entsprechend hoch/runterzuziehen. Hingegen bei den alternativen Programmern (meist der Ebay-Ramsch aus Fernost) kann es zu Problemen kommen. Wenn du die Portpins nicht übermäßig belastet, sollte alles ohne Widerstände funktionieren. Auch wenn die Portpins eines AVRs deutlich mehr als 4mA treiben können, so folge ich dem Leitsatz, sobald mehr gebraucht wird, dann kommt dort ein DarlingtonArray/Transistor zum Einsatz.
Zum NPN/PNP: Wenn mein Dragon ein High-pegel rausgibt muss der doch auch an dem Controller anliegen und nicht invertiert.
Rush .. schrieb: > gibt es eine Möglichkeit, einen AVR controller in der fertigen > Schaltung via ISP zu programmieren? Auch weniger erfahrene Anwender wissen, das "ISP" die Abkürzung von "In System Programming" ist. Und wenn man das übersetzt ist es genau das wonach du fragst: den µC in der fertigen Anwendungsschaltung zu programmieren. > Ich habe die entsprechenden Pins für LEDs etc. > verwendet sodass hierbei mein AVRDragon die Periepherie und nicht den > Controller treibt. Erfahrene Anwender denken vorher nach, was sie an die ISP-Pins des µC anschließen und wählen irgendwas, das dann nicht stört. Klassiker sind low-current LED (die kann auch der ISP-Adapter mit treiben) oder Taster gegen GND (die darf man dann halt beim ISP-Vorgang nicht drücken). Oder wenn es gar nicht anders dann eben Jumper die man für ISP anders setzt als für den Normalbetrieb.
Grrrrr... ganz blöd bin ich nun auch nicht, obwohl es für dich so aussehen mag ;-) Was ISP bedeutet ist mir durchaus bewusst... deswegen poste ich ja hier weil es eben nicht in allen Fällen das ist was es zu sein scheint sondern nur dann wenn man eben Peripherie dranhängt welche von dem Programmer getrieben werden können. Du schreist ich soll LowCurrent LEDs nehmen. Die sind allerdings teurer, deswegen möchte ich keine! Mein Ansatz war eben, dass ich einen Treiber brauche welcher einfach mehr Strom liefert als das Dragon.
Nein, nicht PNP vom ISP an den Controller. In diesem Fall wird der Programmer direkt über die ISP-Stifte an den Controller gehängt. AVR - ISP - Peripherie In diesem Fall nimmst du zwei PNP-Transistoren mit z. B. 3k3 Ohm Widerständen an der Basis. Diese an ISP. Und am Collector der Transistoren dann die beiden LEDs und die Mosfets.
:
Bearbeitet durch User
Leider kann der Controller aber trotzdem nicht mehr Strom ausgeben. Also ist der Ansatz "mehr Strom vom Dragon" leider so nicht "sinnvoll" machbar.
Ich verstehe was du meinst, du aber scheinbar nicht. Ich möchte bzw. kann nicht mehr die Schaltung ändern, deswegen suche ich ja was was ich an den Programmer hängen kann. Transistoren zum Ansteuern der LED und es FETs will ich nicht mehr hinzufügen. Was spricht denn gegen meine Variante ?
Aha, das die bereits fertig vor dir liegt, ist eine wichtige Info. Dein Text klang nach ich wollte (im Sinne von "in der Zukunft", aber du bist dir bislang unsicher) Dann brauchst du vielleicht einen Komparator an PB1 (MISO), dort gibt der Atmel Daten aus. Wenn der durch die LED zu stark belastet wird, erkennt der Dragon das nicht mehr sauber. Für die anderen beiden Pins nimm einen Treiberbaustein, zum Beispiel mehrere Ausgänge eines TTL-Hex-Treibers oder vielleicht auch Mosfet-Treiber. Und die Datenrate reduzieren. Vermutlich unter 50kHz, aber das lässt sich ausprobieren.
:
Bearbeitet durch User
Oh sorry... in der Tat hatte ich mich falsch ausgedrückt... Der hier dürfte es doch tun oder ? http://www.ti.com/lit/ds/symlink/sn74lv125a.pdf
Das könnte klappen. Zwei Gatter parallel vom Dragon in Richtung uC an PB0 (MOSI) und ein Gatter von PB1 (MISO) in Richtung Dragon sollten tun. Allerdings gilt für PB1, dass die LED mit 150 Ohm Vorwiderstand den ATtiny-Pin derart belasten kann, dass die Spannung kleiner wird als 0,7*Vcc und das Gatter dann auch nicht mehr sicher einen Highpegel erkennt. Welcher LED-Strom wird denn eigentlich gezogen? Und welche Vf hat die LED bei Nennstrom? Im Datenblatt vom ATtiny25/45/85 findet man im Abschnitt "Pin Driver Strength" Figure 22-22 ein Diagramm, welches zeigt, welche Spannung bei welchem Strom am Pin anliegt. Hier ist aber auch bei 20mA schluss. Mit 150 Ohm sind etwa 33mA maximal möglich (LED kurzgeschlossen, also safe).
Hi, die LEDs haben ein Vf=2,2V und If=20mA. Ich kann sie auch nur mit der halben Helligkeit leuchten lassen, dann wäre ich bei 10mA. "Das könnte klappen. Zwei Gatter parallel vom Dragon in Richtung uC an PB0 (MOSI) und ein Gatter von PB1 (MISO) in Richtung Dragon sollten tun." Soweit hört sich das gut an, dann wäre ich bei 32mA. Sollte reichen bei 10mA LED Strom. Aber ich habe ja MOSI und SCK. Also bräuchte ich hierfür insgesamt 4 Gatter + ein Gatter für MISO und brüchte ich nicht für den RESET auch noch eins? Oder wird der dauerhaft auf einen Pegel gelegt ? Was hälst du denn von der Lösung in dem Simulationsfile welches ich drangehängt habe?
Rush .. schrieb:
Du verwendest offenbar einen Tiny 25/45/85. Korrekt? Wo liegt denn das
Problem darin, statt eines 8-Pinners einen 14-Pinner wie zB Tiny
24/44/84/441/841 zu verwenden. Dann hast Du die ISP-Pins frei.
fchk
Ich würde normalerweise heute noch ausführlich antworten, bin aber den ganzen Tag unterwegs gewesen. Ich antworte dir morgen ausführlich. Etwas jedoch schon vorweg: Wegen der LED werden zwei parallel geschaltete Gatter benötigt -> Ausgangsstrom max. 70mA. Dann muss die LED nicht gedimmt werden. An MISO ist das eine Gatter nur als Pegelanheber gedacht, sprich: falls die Spannung nur 4,3V statt 5V beträgt, würden am Programmer wieder 5V ankommen. 4,3V reichen vielleicht nicht. An SCK habe ich nur PPM gelesen und hielt den Pin für unbelastet. Falls der doch belastet wird, nimm hier ein Gatter vom Dragon Richtung ATtiny. Ist er stark belastet, dann nimm das Gatter von MISO nach Dragon eben zusätzlich vom Dragon nach SCK. Ob der MISO-Pegel ausreicht, ist dann schnell getestet. Reset sollte nicht stark belastet sein. Ein Pullup (10k .. 100k) nach VCC. Hier ist dann nichts weiter nötig. Ergo: es ist nur ein Baustein mit 4 Gattern vonnöten. Aber Achtung! Vor dem Zusammen stecken prüfen, ob Ausgang an Eingang und andersrum. Hierbei könnten Schäden entstehen. Am besten die Platine mit angestecktem Logikbaustein zunächst mit Labornetzteil mit Strombegrenzung ausprobieren.
Ich habe das Datenblatt nochmal angesehen. Tabelle 7.3 gilt. Da steht 16mA je Gatter bei 5V. Ich denke daher, wie beschrieben ist es das beste: Zwei Gatter parallel vom Dragon Richtung PB0 (MOSI) wegen der LED (20mA), ein Gatter Dragon Richtung PB2 (SCK), scheinbar nicht belastet, und das verbleibende Gatter Tiny PB1 (MISO) Richtung Dragon. Das Gatter an die 5V Versorgung. Die Enable-Leitungen gemeinsam an RESET. Dann kann der Controller nach Rückkehr zum Highpegel des Reset wieder normal weiterarbeiten, ohne dass die Treiber dann einen Einfluss haben. Die Wahl eines Gatters mit Tristatefunktion ist da eine wirklich gute Idee.
Das ist doch alles albern. 1. warum müssen die LED mit 20mA betrieben werden? Weil 20mA im Datenblatt stehen? Das ist der Maximalstrom den die LED aushalten. Leuchten tun sie auch mit viel weniger. LED sind über die letzten 10 Jahre viel effizienter geworden. Die leuchten heute mit 2mA heller als damals mit 20mA. 2. low current LED sind zu teuer? Blödsinn. Der Preisunterschied ist nahezu nicht existent. Dazu kommt, daß low current LED auch nichts anderes sind als normale LED. Der Unterschied ist lediglich, daß für low current LED die Helligkeit bei kleinem Strom spezifiziert ist und für normale LED halt bei größerem Strom. 3. eine LED geht von MISO nach GND, die andere von MOSI. Das bedeutet, daß ein Treiber auf der Seite des ISP-Adapters allein nicht reicht. Denn der eine Pin wird während des ISP-Vorgangs vom Adapter getrieben, der andere vom µC. Falls(!) die LED also wirklich eine zu große Last darstellen, dann müßte man auf beiden Seiten Treiber vorsehen. Ergo die Platine ändern. 4. Ist denn überhaupt klar, daß die LED eine zu große Last sind? Man könnte ja mal den H-Pegel messen den ISP-Adapter und µC an MOSI resp. MISO erreichen. Und dann mit dem Datenblatt abgleichen ob das reicht um von der jeweils anderen Seite sicher als H-Pegel erkannt zu werden. PS: meine Schätzung(!) - mit 20mA wird es grenzwertig sein (also geht in der Praxis obwohl es das Datenblatt nicht hergibt). Mit 10mA wird es vermutlich schon sicher gehen. Aber vermuten ist nicht wissen. Messen!
:
Bearbeitet durch User
Wie geschrieben kann der Tiny laut Datenblatt 20mA treiben. Die Ausgangsspannung fällt dann um etwa 0,3 bis 0,5V ab. Hier ein Gatter zum Regenerieren nutzen, ist nicht verkehrt. Dem TA geht es darum, den Programmer nicht zu beschädigen/zerstören. So auf Nummer sicher zu gehen, ist auch nicht verkehrt.
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.