Forum: Mikrocontroller und Digitale Elektronik Sinnlosprojekt: Micro-USBasp


von Tim  . (cpldcpu)



Lesenswert?

Um mich während einer Erkältung zu bschäftigen, habe ich angefangen den 
allseits bekannten USBasp zu schrumpfen. Dazu habe ich die Firmware auf 
den ATtiny85 portiert und dazu eine entsprechende Platine designed.

Bevor ich die Platine zum Fertiger schicke - gibt es noch Ideen und 
Vorschläge? Alle Daten liegen hier:

https://github.com/cpldcpu/USBasp-t

von uwegw (Gast)


Lesenswert?

Wie soll das ISP-Kabel angeschlossen werden? Flachbandkabel direkt 
aufgelötet? Einreihiger Stecker am Rand?
Ich persönlich würde da eher einen sechspoligen Pfostenstecker (gibts 
auch als SMD) nehmen...

von Tim  . (cpldcpu)


Lesenswert?

uwegw schrieb:
> Wie soll das ISP-Kabel angeschlossen werden? Flachbandkabel direkt

Über eine 5x2 Pfostenleiste, die an den Platinenrand angelötet wird. 
Dazu sind die Pads auf Vorder- und Rückseite.

von Thomas T. (knibbel)


Lesenswert?

* Alles SMD und die USB-Buchse bedrahtet?

* Bei einer Pfostenfeldbuchse, die seitlich an die Platine angelötet 
wird, wirst Du die Lötpins leicht biegen müssen. Das sieht nicht so toll 
aus.


Ich würde, wie schon mein Vorgänger sagte, eine sechspolige 
Pfostenfeldbuchse montieren, allerdings in einer 90 Grad-THT-Ausführung. 
Die USB-Buchse würde ich auch (zum Rest passend) als SMD-Version 
verwenden...

Gruß,
Thomas

von Verwirrter Anfänger (Gast)


Lesenswert?

Wie dick sind die Verbindungen zwischen z.B. D1 und R2? Ich denke die 
kann man ein bischen dicker machen, das freut den Hersteller und 
reduziert Fehler.

Ansonsten sieht das ganz gut aus.

Ich würde dir empfehlen mal Little wire anzuschauen:
http://littlewire.cc/
Das hat noch einige zusätzliche Funktionen dabei.

Und hier noch ein schamloser Verweis auf meinen eigenen Versuch einen 
mininmalen Programmer zu bauen:
http://www.justgeek.de/avr-programming-cable/

von Ärger (Gast)


Lesenswert?

Tim .  schrieb:
> Um mich während einer Erkältung zu bschäftigen,
Man soll im Fieberwahn keinen Schaltungen bauen

von Tim  . (cpldcpu)


Lesenswert?

Danke an alle für das Feedback!

Thomas T. schrieb:
> Ich würde, wie schon mein Vorgänger sagte, eine sechspolige
> Pfostenfeldbuchse montieren, allerdings in einer 90 Grad-THT-Ausführung.

Das vergrößert die Platine aber signifikant. Das Anlöten an der kante 
funktioniert bei den China-Clones auch ganz gut. Bei 1.6mm Platinen gibt 
es vielleicht 200-300µm Spiel.

> Die USB-Buchse würde ich auch (zum Rest passend) als SMD-Version
> verwenden...

Habe mal geschaut: Das Pinlayout ist für SMD und THT gleich. Werde es so 
lassen und dann einlöten, was mir in die Finger kommt.

von Tim  . (cpldcpu)


Lesenswert?

> Wie dick sind die Verbindungen zwischen z.B. D1 und R2? Ich denke die
> kann man ein bischen dicker machen, das freut den Hersteller und
> reduziert Fehler.

War alles noch in der Spec - 6 mil. Allerdings ist noch genug Platz da. 
Habe alle Leitungen auf 8 mil verbreitert.

> Ansonsten sieht das ganz gut aus.
>
> Ich würde dir empfehlen mal Little wire anzuschauen:
> http://littlewire.cc/
> Das hat noch einige zusätzliche Funktionen dabei.

Ja, ich habe mich beim Pinout nicht umsonst an Littlewire orientiert :)

> Und hier noch ein schamloser Verweis auf meinen eigenen Versuch einen
> mininmalen Programmer zu bauen:
> http://www.justgeek.de/avr-programming-cable/

Sehr schön! Den USB-Stecker wegzulassen ist allerdings Geschummel :)

Mein USBasp Port müsste eigentlich auch auf Deinem Programmer 
funktionieren. Wenn Du Lust hast, kannst Du ihn ja mal testen:

https://github.com/cpldcpu/USBasp-t/blob/master/Firmware%202013-06-29.hex

Ich muss noch warten, bis die HW fertig ist...

von Tim  . (cpldcpu)


Lesenswert?

Ärger schrieb:
> Tim .  schrieb:
>> Um mich während einer Erkältung zu bschäftigen,
> Man soll im Fieberwahn keinen Schaltungen bauen

Warum? Scheint ganz gut zu klappen...

von Detlev T. (detlevt)


Lesenswert?

PB2 geht an die Schnittstelle (SCK) UND treibt die LED2. Das könnte 
Probleme machen.
Den TINY85 kann man nur einmal programmieren, da man für den Betrieb den 
Reset-Pin per Fuse deaktivieren muss.
Das Ganze ist natürlich eine Folge von zu wenig Pins. Warum muss es denn 
unbedingt ein 8-Beiner sein?
Problematisch ist auch das Anschließen der USB-5V an den ISP-Anschluss. 
Soll das Zielsystem vom USB mitversorgt werden? Das wird nicht immer 
möglich sein. Und dann die Stromversorgung des Zielsystems mit dem des 
USB verbinden? Keine gute Idee.
Wie wäre es, stattdessen die Spannung des Zielsystems für eine 
automatische Pegelanpassung zu verwenden? Immer mehr Systeme arbeiten 
mit 3.3V. Statt des X-ten Inkarnation des USBAsp wäre das IMO eine 
sinnvolle Verbesserung.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Tim .  schrieb:
> Um mich während einer Erkältung zu bschäftigen, habe ich angefangen den
> allseits bekannten USBasp zu schrumpfen. Dazu habe ich die Firmware auf
> den ATtiny85 portiert und dazu eine entsprechende Platine designed.

Hallo!
Will dich in deiner Bastellust nicht bremsen, aber das alles gibt es 
schon. ;-)

Trotzdem ein paar Gedanken zur Schaltung:

Der Pullup R3 ist mit 1,5 kOhm für 3,6 Volt Betriebsspannung 
dimensioniert. Du verwendest aber 5 Volt. Vielleicht wär es besser, den 
Widerstand auch etwas zu erhöhen.

Ein 100n reicht, zwei brauchst du wahrscheinlich nicht. Falls du Angst 
hast, dass die USB-Versorgungsspannung gelegentlich einbricht, nimm 
lieber einen Elko mit z.B. 4,7µ. Notwendig ist das aber eher nicht, denn 
der Programmer zieht kaum Strom.

An den Leitungen von MOSI, SCK und RESET sollten besser 
Schutzwiderstände hängen, sonst zerschießt du dir den Programmer, wenn 
du das Target falsch anschließt oder wenn sich das Target in einer 
Schaltung befindet, die nicht so recht für ISP passt.

Hier findest du die Schaltung von mir: Bierdeckel-Programmer

Nach dem gleichen Schema ist auch die Platine des Programmers "guloprog" 
aufgebaut.

von Karl Meiser (Gast)


Lesenswert?

Detlev T. schrieb:
> Den TINY85 kann man nur einmal programmieren, da man für den Betrieb den
> Reset-Pin per Fuse deaktivieren muss.

Gewagte Aussage. Für den Fall gibts HV-Programmer.

von Jan (Gast)


Lesenswert?

Lass den Bestückungsdruck weg, kostet nur Geld und brauchen tut man den 
nicht.

von Uwe (de0508)


Lesenswert?

Guten Morgen,

nur ein kleiner Tipp,

ich hatte auch einen ISP Programmer für meine Steckbretter mit einem 
attiny85 aufgebaut:

Beitrag "AVR USBtinyISP Programmer mit atTiny85"

Man kann auf einen Pin (z.B. Reset) den One-Wire Bootloader von Peda 
legen, dann ist per UART Seriell Bridge und einem Adapter mit 
Widerständen und Dioden das Programmieren möglich.

Zur Schaltung: wichtig ist das C-L-C Glied an der Versorgungsspannung, 
schau dir mal bei deinem PC mit einem Oszi das Vcc=+5V Signal an.

Zu dieser Zeit hatte ich gerade kein 2,2kOhm Widerstand da, so habe ich 
einen 1,8kOhm Widerstand verbaut.

Edit

Link: http://www.recursion.jp/avrcdc/cdc-232.html

von Tim  . (cpldcpu)


Lesenswert?

Detlev T. schrieb:
> PB2 geht an die Schnittstelle (SCK) UND treibt die LED2. Das könnte
> Probleme machen.

Ist nur ein Ausgang, sollte eigentlich funktionieren.

> Den TINY85 kann man nur einmal programmieren, da man für den Betrieb den
> Reset-Pin per Fuse deaktivieren muss.
> Das Ganze ist natürlich eine Folge von zu wenig Pins. Warum muss es denn
> unbedingt ein 8-Beiner sein?

Auf den MCU kommt ein USB-Bootloader. Dann kann man bequem vom PC aus 
neue Firmware aufspielen.

> Problematisch ist auch das Anschließen der USB-5V an den ISP-Anschluss.
> Soll das Zielsystem vom USB mitversorgt werden? Das wird nicht immer
> möglich sein. Und dann die Stromversorgung des Zielsystems mit dem des
> USB verbinden? Keine gute Idee.
> Wie wäre es, stattdessen die Spannung des Zielsystems für eine
> automatische Pegelanpassung zu verwenden? Immer mehr Systeme arbeiten
> mit 3.3V. Statt des X-ten Inkarnation des USBAsp wäre das IMO eine
> sinnvolle Verbesserung.

Das stimmt, aber leider ist es nur eine neue Inkarnation :)

Interessant wäre ein programmer mit debugwire. Eigentlich sollte das 
auch mit vertretbarem Aufwand hinzubekommen sein. Da ist nur die 
Software das Problem...

von Tim  . (cpldcpu)


Lesenswert?

Markus Weber schrieb:
> Tim .  schrieb:
>> Um mich während einer Erkältung zu bschäftigen, habe ich angefangen den
>> allseits bekannten USBasp zu schrumpfen. Dazu habe ich die Firmware auf
>> den ATtiny85 portiert und dazu eine entsprechende Platine designed.
>
> Hallo!
> Will dich in deiner Bastellust nicht bremsen, aber das alles gibt es
> schon. ;-)

Siehe Titel :)

> Trotzdem ein paar Gedanken zur Schaltung:
>
> Der Pullup R3 ist mit 1,5 kOhm für 3,6 Volt Betriebsspannung
> dimensioniert. Du verwendest aber 5 Volt. Vielleicht wär es besser, den
> Widerstand auch etwas zu erhöhen.

Hm. Ist das die offizielle USB-Spezifikation? Auf den V-USB Seiten 
findet sich auch ein 1.5kOhm Widerstand:

http://vusb.wikidot.com/hardware

> Ein 100n reicht, zwei brauchst du wahrscheinlich nicht. Falls du Angst
> hast, dass die USB-Versorgungsspannung gelegentlich einbricht, nimm
> lieber einen Elko mit z.B. 4,7µ. Notwendig ist das aber eher nicht, denn
> der Programmer zieht kaum Strom.

Stimmt. Eigentlich war einer für die Entkopplung des Target-MCUs 
gedacht. Aber bei dem Layout ist es obselet.


> An den Leitungen von MOSI, SCK und RESET sollten besser
> Schutzwiderstände hängen, sonst zerschießt du dir den Programmer, wenn
> du das Target falsch anschließt oder wenn sich das Target in einer
> Schaltung befindet, die nicht so recht für ISP passt.

Gute Idee.

> Hier findest du die Schaltung von mir: Bierdeckel-Programmer
>
> Nach dem gleichen Schema ist auch die Platine des Programmers "guloprog"
> aufgebaut.


Ah, und drei Links weiter findet man auch einen Port von USBasp auf 
ATtiny85. Nur warum es der nicht von der Offiziellen Page verlinkt oder 
in die Distribution eingepflegt? Da hatte ich wirklich etwas Arbeit 
sparen können. Die offizielle Version kompiliert nicht einmel mehr auf 
der aktuellen Toolchain...

Thomas Fischl sollte ein Offizielles Repository erstellen. Es gibt noch 
etliches Verbesserungspotential:

- Ports auf andere Devices
- Integriertes Firmware-Update
- Serielle Schnittstelle
- Bessere Software SPI.

von Tim  . (cpldcpu)


Lesenswert?

Jan schrieb:
> Lass den Bestückungsdruck weg, kostet nur Geld und brauchen tut man den
> nicht.

Also mich kostet er kein Geld.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Tim .  schrieb:
> Hm. Ist das die offizielle USB-Spezifikation? Auf den V-USB Seiten
> findet sich auch ein 1.5kOhm Widerstand:
>
> http://vusb.wikidot.com/hardware

Du hast Recht. Ich kenn den Pullup aus anderen Schaltplänen, dort geht 
er gegen 3,6 Volt. Und manche mit 5 Volt haben dann 2,2 kOhm. Egal, wird 
funktionieren. Mein guloprog läuft mit 2,2 kOhm auch, wahrscheinlich ist 
der Wert nicht wirklich kritisch.

> Ah, und drei Links weiter findet man auch einen Port von USBasp auf
> ATtiny85. Nur warum es der nicht von der Offiziellen Page verlinkt oder
> in die Distribution eingepflegt? Da hatte ich wirklich etwas Arbeit
> sparen können. Die offizielle Version kompiliert nicht einmel mehr auf
> der aktuellen Toolchain...

Ja, wär wirklich praktisch, aber ich bin nicht sicher, ob Thomas Fischl 
seine USBasp-Projektseiten noch pflegt. Ich hatte ihn deswegen vor etwa 
einem halben Jahr angeschrieben und bekam keine Reaktion. :-(

> Thomas Fischl sollte ein Offizielles Repository erstellen. Es gibt noch
> etliches Verbesserungspotential:

"Sollte" ist richtig, aber wir dürfen nicht vergessen, dass das alles 
freiwillig ist. Was Thomas Fischl bisher geleistet hat, verdient unseren 
Respekt; es sind mehrere geniale und gleichzeitig einfache Schaltungen 
entstanden. Ich würde mich auch freuen, wenn er sich weiter darum 
kümmert, aber ich kann ihm nicht böse sein, wenn er seine Freizeit 
anders verbringt.

> - Ports auf andere Devices
> - Integriertes Firmware-Update
> - Serielle Schnittstelle
> - Bessere Software SPI.

Gute Ideen. Vielleicht finden sich Leute, die Lust haben, ein Stück 
freie Software zu schreiben, würde mich freuen. Ich hab mich neulich um 
eine Signalwandler-Funktion für den USBasp gekümmert, die jetzt auch 
open Source verfügbar ist:
https://guloshop.de/shop/USB-TTL-ADC-PWM-Signalwandler:::10.html

von Hans J. (step_up_mosfet)


Lesenswert?

Tim .  schrieb:
> Bevor ich die Platine zum Fertiger schicke - gibt es noch Ideen und
> Vorschläge? Alle Daten liegen hier:

Das schaut so gut aus.

Ich nutze aber immer den "Slow Clock" Schalter um einen AVR der einen 
Takt von 1MHz hat programmieren zu können oder auch wenn das ISP-Kabel 
recht lang ist und ich die Daten lieber etwas langsamer in den 
Flash-Speicher schreiben will.

Es ist gut dass du eine THT-USB-Buchse/Stecker gewählt hast, bei 
mechanischen Belastungen reißen die Pads von SMD-USB-Buchsen leicht ab, 
die THT-Versionen sind dafür besser.

Ich würde einen 3.3V Spannungsregler drauf bauen und die Z-Dioden 
weglassen.

von Andreas B. (andreasb)


Lesenswert?

Noch einen Vorschlag: Kein USB Stecker, sondern direkt USB Anschlüsse 
auf die Platine, dann wirds noch kleiner;-)

Funktioniert zumindest mit USB Sticks... Da hab ich das schon öfters 
gesehen, z.B. sowas: 
http://www.memory-king.info/bilder/XT/750_0_PICO5.jpg

Hab nicht alles durchgelesen, sorry falls dieser Vorschlag schon mal 
genannt wurde...

Tim .  schrieb:
> Thomas Fischl sollte ein Offizielles Repository erstellen. Es gibt noch
> etliches Verbesserungspotential:
>
> - Serielle Schnittstelle

Habe ich mal umgesetzt... Hab ich auch an Fishl gesendet, sollte hier 
jemand Interesse haben kann ich das nochmals suchen (einfach PN 
schreiben...)


mfg Andreas

von Markus W. (Firma: guloshop.de) (m-w)


Angehängte Dateien:

Lesenswert?

Hans Jelt schrieb:
> Ich nutze aber immer den "Slow Clock" Schalter um einen AVR der einen
> Takt von 1MHz hat programmieren zu können oder auch wenn das ISP-Kabel
> recht lang ist und ich die Daten lieber etwas langsamer in den
> Flash-Speicher schreiben will.

Ja, ist wichtig, aber bei den neueren USBasp-Firmwareversionen nicht 
mehr notwendig, dort kann man mit der avrdude-Option "-B" die 
Geschwindigkeit in feinen Stufen einstellen.

> Es ist gut dass du eine THT-USB-Buchse/Stecker gewählt hast, bei
> mechanischen Belastungen reißen die Pads von SMD-USB-Buchsen leicht ab,
> die THT-Versionen sind dafür besser.

Richtig! Als Alternative könnte man auch SMD-Varianten nehmen, die 
zusätzlich mechanisch per THT befestigt werden.

Andreas B. schrieb:
> Noch einen Vorschlag: Kein USB Stecker, sondern direkt USB Anschlüsse
> auf die Platine, dann wirds noch kleiner;-)
>
> Funktioniert zumindest mit USB Sticks... Da hab ich das schon öfters
> gesehen, z.B. sowas:
> http://www.memory-king.info/bilder/XT/750_0_PICO5.jpg

Du meinst so einen Programmer wie auf dem angehängten Bild? ;-)

>> - Serielle Schnittstelle
> Habe ich mal umgesetzt... Hab ich auch an Fishl gesendet, sollte hier
> jemand Interesse haben kann ich das nochmals suchen (einfach PN
> schreiben...)

Super Sache. :-)

von Andreas B. (andreasb)


Lesenswert?

Markus Weber schrieb:
> Andreas B. schrieb:
>> Noch einen Vorschlag: Kein USB Stecker, sondern direkt USB Anschlüsse
>> auf die Platine, dann wirds noch kleiner;-)
>>
>> Funktioniert zumindest mit USB Sticks... Da hab ich das schon öfters
>> gesehen, z.B. sowas:
>> http://www.memory-king.info/bilder/XT/750_0_PICO5.jpg
>
> Du meinst so einen Programmer wie auf dem angehängten Bild? ;-)

Ähm ja, genau das... :-)

Sowas wollte ich auch machen, hab sogar angefangen zu designen, aber 
dann kam der Sommer doch noch;-)


mfg Andreas

von Andreas E. (studioworxx)


Lesenswert?

Direkter USB im Layout ist möglich, aber bedenkt, daß die Platine in der 
Buchse total schlabbert.
Ich habe das Problem letztes Jahr gelöst durch rückseitiges Aufkleben 
eines passenden PVC-Rechtecks, wodurch Platine + PVC eben die 
entsprechende Stärke wie bei industriellen Sticks usw. bekam.
Grüße !!!

von Tim  . (cpldcpu)


Lesenswert?

Andreas B. schrieb:
> Noch einen Vorschlag: Kein USB Stecker, sondern direkt USB Anschlüsse
> auf die Platine, dann wirds noch kleiner;-)
>
> Funktioniert zumindest mit USB Sticks... Da hab ich das schon öfters
> gesehen, z.B. sowas:
> http://www.memory-king.info/bilder/XT/750_0_PICO5.jpg

Das ist am Ende aber Teurer und funktioniert nur sehr mässig (habe ich 
auch schon ausprobiert). Die USB Stecker gibts auf ebay für 0.1-0.2 EUR.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Andreas Ehrlich schrieb:
> Ich habe das Problem letztes Jahr gelöst durch rückseitiges Aufkleben
> eines passenden PVC-Rechtecks, wodurch Platine + PVC eben die
> entsprechende Stärke wie bei industriellen Sticks usw. bekam.

Diese Platinenstecker – auch die von den beliebten Mini-Memorysticks – 
entsprechen natürlich nicht der USB-Norm. Meistens passen sie aber 
trotzdem. Nicht ohne Grund sind die kleinen Sticks so erfolgreich.

Trotzdem ist dein Hinweis mit der Platinenstärke wichtig, danke!
Die üblichen Leiterplatten sind nur 1,0 oder 1,5 mm dick und damit 
deutlich dünner als der USB-Standard vorgibt. Man muss dickeres 
Platinenmaterial verwenden. Die genaue Stärke habe ich gerade nicht im 
Kopf, ich glaube, es waren 1,85 mm oder sowas um den Dreh.

von Tim  . (cpldcpu)


Lesenswert?

Markus Weber schrieb:
> Hans Jelt schrieb:
>> Ich nutze aber immer den "Slow Clock" Schalter um einen AVR der einen
>> Takt von 1MHz hat programmieren zu können oder auch wenn das ISP-Kabel
>> recht lang ist und ich die Daten lieber etwas langsamer in den
>> Flash-Speicher schreiben will.
>
> Ja, ist wichtig, aber bei den neueren USBasp-Firmwareversionen nicht
> mehr notwendig, dort kann man mit der avrdude-Option "-B" die
> Geschwindigkeit in feinen Stufen einstellen.

Eigentlich könnte man ja auch eine Automatische Erkennung der 
Geschwindigkeit einbauen. Ein weiterer Punkt für die (nicht 
existierende) TODO Liste?

von Tim  . (cpldcpu)


Lesenswert?

Markus Weber schrieb:
> Ja, wär wirklich praktisch, aber ich bin nicht sicher, ob Thomas Fischl
> seine USBasp-Projektseiten noch pflegt. Ich hatte ihn deswegen vor etwa
> einem halben Jahr angeschrieben und bekam keine Reaktion. :-(

Da USBasp unter GPL2 steht, gäbe es natürlich die Möglichkeit eines 
Forks. Ich würde mich sogar bereits erklären, bei so etwas 
mitzumachen...

von Andreas B. (andreasb)


Lesenswert?

Tim .  schrieb:
> Markus Weber schrieb:
>> Ja, wär wirklich praktisch, aber ich bin nicht sicher, ob Thomas Fischl
>> seine USBasp-Projektseiten noch pflegt. Ich hatte ihn deswegen vor etwa
>> einem halben Jahr angeschrieben und bekam keine Reaktion. :-(
>
> Da USBasp unter GPL2 steht, gäbe es natürlich die Möglichkeit eines
> Forks. Ich würde mich sogar bereits erklären, bei so etwas
> mitzumachen...

Ich steure eine UART Implementierung bei...

Man müsste einfach das ganze so Modular machen, dass man alles mit 
Defines deaktivieren kann, weil das ganze ggf. auch noch mit einem 
ATMega48 laufen soll...

Entweder Github oder SVN hier auf MC.net?


mfg Andreas

von Tim  . (cpldcpu)


Angehängte Dateien:

Lesenswert?

So, die Hardware ist fertig. Soweit scheint alles zu funktionieren.
Jetzt wird die Software getestet und aufgeräumt...

Die SOD-232 Zener-Dioden lassen sich übrigens extrem schlecht löten. Ich 
werde wohl wieder auf die SOD-Variante umsteigen.

von Tim  . (cpldcpu)


Lesenswert?

Hard- und Software sind jetzt erfolgreich getestet. Alles funktioniert!

Alle Daten gibt es hier:

https://github.com/cpldcpu/USBasp-t

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.