Hier mal ein echter "Hack" für Leute die sich gerne mit Low-Level Programmierung auf dem AVR beschäftigen: Um das USB-Protokoll und V-USB besser zu verstehen, habe ich eine mini-USB Anwendung auf einem ATtiny10 implementiert. Anbei ein Bild. Der Mikrocontroller gibt sich dem Rechner gegenüber als Little-Wire Device aus und steuert über das Protokoll eine WS2811/WS2812 LED an. https://github.com/cpldcpu/u-wire Little-Wire: http://littlewire.cc/ V-USB belegt selbst in der kleinsten Implementierung noch ca. 1.5kb Flash und benötigt ca. 40 bytes RAM. Der ATtiny10 hat aber nur 1kb flash, 32 bytes RAM und 16 statt 32 Register. Es waren also einige Tricks notwendig, um den Code klein genug zu bekommen. Ein zentraler Punkt war die Implementierung von V-USB ohne Interrupts (siehe auch http://cpldcpu.wordpress.com/2014/03/02/interrupt-free-v-usb/). Dadurch konnte die Stacknutzung und die Menge der nötigen USB-Buffer reduziert werden. Nervig ist, dass der ATtiny10 immer noch nicht richtig von AVR-GCC unterstützt wird. Ich musste LDS/STS über Macros erzeugen. Ein Ticket dafür ist bei Atmel seit Monaten offen.
:
Bearbeitet durch User
16f1455 http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en556969 14K FLASH 1K RAM USB 14 pins ca. 1.50 Euro USB Stack fertig vorhanden
Takao K. schrieb: > 16f1455 Und? Was hat das damit zu tun? Der ATtiny10 kostet <0.40EUR und kommt im SOT23 Gehäuse. Ich bin mir ziemlich sicher, dass die äquivalenten SOT23 PIC-Typen kein Software USB können. Du kannst ja gerne das Gegenteil beweisen :) Alternativen mit Hardware-USB gibt es viele. Das ist aber nicht Sinn der Sache. Am interessantesten unter den Low-cost Devices sind im Moment die neuen STM32F0 mit USB ohne Quarz. Die haben einen Cortex M0 core. Einen 70er Jahre PIC muss man sich wirklich nicht mehr antun.
:
Bearbeitet durch User
Wow! Hut ab. Ich hätte nicht gedacht, dass USB auf einen tiny10 passt.
Tolle Sache und meinen Respekt dafür! Im Moment habe ich zwar keine richtige Zeit für uC's, aber ich bin auch ein Tiny10 Fan. Ich habe einen Universalprogrammadapter gebaut, mit dem du den Reset zurück setzen kannst und ein Sockel ist auch drauf, damit man die vorm löten schon programmieren kann. Wir können ja hier eine Fan Gemeinde gründen. ;-)
Max D. schrieb: Danke! F. Fo schrieb: > Ich habe einen Universalprogrammadapter gebaut, mit dem du den Reset > zurück setzen kannst und ein Sockel ist auch drauf, damit man die vorm > löten schon programmieren kann. So etwas werde ich brauchen. Ich habe eine Platine für µ-Wire designed. Auf der ist leider kein Platz mehr für einen ISP connector (Bild). Meine Idee war bisher, zum programmieren einfach ein Device auf ein SOT23 Breakout Board zu kleben.
:
Bearbeitet durch User
Tim schrieb: > Takao K. schrieb: >> 16f1455 > > Und? Was hat das damit zu tun? > Der ATtiny10 kostet <0.40EUR und kommt im SOT23 Gehäuse. Ich bin mir > ziemlich sicher, dass die äquivalenten SOT23 PIC-Typen kein Software USB > können. Du kannst ja gerne das Gegenteil beweisen :) > > Alternativen mit Hardware-USB gibt es viele. Das ist aber nicht Sinn der > Sache. > > Am interessantesten unter den Low-cost Devices sind im Moment die neuen > STM32F0 mit USB ohne Quarz. Die haben einen Cortex M0 core. Einen 70er > Jahre PIC muss man sich wirklich nicht mehr antun. Was deine email soll ist mir nicht klar. 70er Jahre PIC? Was bringt dass denn wenn du das USB protokoll so weit verstuemmelst dass du nicht mal enumerieren kannst, die Datenrate nur 10% im Control mode ist, und der Flash 95% voll ist? Nur um zu beweisen dass es mit Ach und Krach geradeso geht. Viel Spass. Fuer den 16F1455 brauchste auch keinen Quartz.
> Was bringt dass denn wenn du das USB protokoll so weit verstuemmelst > dass du nicht mal enumerieren kannst, die Datenrate nur 10% im Control Natürlich funktioniert das Enumerieren, sonst würde das Device gar nicht erkannt werden. > Nur um zu beweisen dass es mit Ach und Krach geradeso geht. Ich glaube Du hast nicht verstanden was ein "Hack" ist. :) Es geht tatsächlich darum, zu zeigen was auf einem ATtiny10 möglich ist.
:
Bearbeitet durch User
Tim schrieb: > Max D. schrieb: > > Danke! > > F. Fo schrieb: >> Ich habe einen Universalprogrammadapter gebaut, mit dem du den Reset >> zurück setzen kannst und ein Sockel ist auch drauf, damit man die vorm >> löten schon programmieren kann. > > So etwas werde ich brauchen. Ich habe eine Platine für µ-Wire designed. > Auf der ist leider kein Platz mehr für einen ISP connector (Bild). Meine > Idee war bisher, zum programmieren einfach ein Device auf ein SOT23 > Breakout Board zu kleben. Weil es das ist und man ja so einen kleinen, wenig leistungsfähigen uC nur für Aufgaben nimmt, die nur wenig Raum zur Verfügung stellen, ist das der einzige Weg, das gescheit zu machen. Den Sockel gibt es für ca. 21 Euro bei ebay. 12 Volt auf dem Reset habe ich einfach mit einem Umschalter belegt. Das ist nicht zeitkritisch.
@cpldcpu Richtig geil! In Verbindung mit den 8mm WS2812 LEDs gibt das Blink(1) den Todesstoss ;) Ich frage mich gerade, ob man das ganze so konzipieren könnte, dass ausser der LED nichts aus der USB Buchse rausschaut? Bei USB Stecker als Leiterbahn muss die Platine ja 2mm dick sein, jetzt könnte man ja aber stattdessen die Platine 0.6mm dick machen und unten alle Teile drauf, und dann eine zweite Platine mit Aussparungen unten draufleimen. Dann sieht es aus, als ob es nur eine 8mm LED in einer USB Buchse wäre...
Sean Goff schrieb: > @cpldcpu > Richtig geil! In Verbindung mit den 8mm WS2812 LEDs gibt das Blink(1) > den Todesstoss ;) Ich frage mich gerade, ob man das ganze so konzipieren > könnte, dass ausser der LED nichts aus der USB Buchse rausschaut? > > Bei USB Stecker als Leiterbahn muss die Platine ja 2mm dick sein, jetzt > könnte man ja aber stattdessen die Platine 0.6mm dick machen und unten > alle Teile drauf, und dann eine zweite Platine mit Aussparungen unten > draufleimen. Dann sieht es aus, als ob es nur eine 8mm LED in einer USB > Buchse wäre... Wäre sogar eine Anwendung zum Test des USB Anschlusses möglich. Womit auch der "angebliche Unsinn" sinnig wird.
Takao K. schrieb: > Muss ich nicht toll finden und das ist halt meine Meinung. Dein Kommentar ist überflüssig! Du hast nicht verstanden was Tim uns da präsentiert! Als "Nicht-Golf-Spieler" finde ich Golf auch nicht toll, aber in nem Golf-Forum wäre so ein Kommentar genauso überflüssig! Ist halt meine Meinung!
Sean Goff schrieb: > @cpldcpu > Richtig geil! In Verbindung mit den 8mm WS2812 LEDs gibt das Blink(1) > den Todesstoss ;) Ich frage mich gerade, ob man das ganze so konzipieren > könnte, dass ausser der LED nichts aus der USB Buchse rausschaut? > > Bei USB Stecker als Leiterbahn muss die Platine ja 2mm dick sein, jetzt > könnte man ja aber stattdessen die Platine 0.6mm dick machen und unten > alle Teile drauf, und dann eine zweite Platine mit Aussparungen unten > draufleimen. Dann sieht es aus, als ob es nur eine 8mm LED in einer USB > Buchse wäre... Das müsste eigentlich möglich sein. Vielleicht werde ich noch einmal eine Variante mit PCB-Stecker designen. Die 0.6 mm Platinen kann man leider nicht bei OSH Park bestellen.
F. Fo schrieb: > Weil es das ist und man ja so einen kleinen, wenig leistungsfähigen uC > nur für Aufgaben nimmt, die nur wenig Raum zur Verfügung stellen, ist > das der einzige Weg, das gescheit zu machen. > Den Sockel gibt es für ca. 21 Euro bei ebay. > 12 Volt auf dem Reset habe ich einfach mit einem Umschalter belegt. > Das ist nicht zeitkritisch. Ich werde mein Glück erst einmal mit einer Frickellösung probieren. Die Platinen kommen in ca. 2 Wochen - mal schauen.
Bei Atmel hat man die Probleme mit AVR-GCC einfach totgeschwiegen :) http://atmelcorporation.wordpress.com/2014/03/20/how-far-can-you-take-the-attiny10%E2%80%A8%E2%80%A8/
Tim, ich habe das auch nur auf Lochraster. Habe wohl schon Platinen gemacht, aber für THT ist mir das, wenn es Einzellösungen sind (was ja meistens der Fall ist), einfach zu viel Aufwand. Jetzt fange ich so allmählich an auf SMD umzusteigen und da sieht es schon wieder anders aus. Lochraster, ich nehme fast nur noch Streifenraster, ist schnell gemacht und da kommt es auf die Funkion an.
Es ist VERDAMMT faszinierend, was selbst auf allerkleinsten System zum laufen gebracht werden kann. Fettes Respekt, werd ich mir auch mal anschauen was du da verzapfst hast.
Jetzt wird auch die Hardware optimiert. Schaltung anbei. - Der Controller wird mit 3.3V betrieben dadurch entfallen die Zener-Dioden. - Zur Spannungsregelung wird eine LED verwendet. Rote Low-Current LEDs liefern den richtigen Spannungsabfall. - Die Serienwiderstände kann man bei Low-Speed USB weglassen. Bei der niedrigen Bitrate sind Reflektionen noch kein Problem. Damit passt die Schaltung auf eine 0.3" x 0.4" Platine.
:
Bearbeitet durch User
Den Angstkondensator kann man auch weg lassen oder zumindest direkt an den Tiny klemmen.
Marius S. schrieb: > Den Angstkondensator kann man auch weg lassen oder zumindest direkt an > den Tiny klemmen. Interessanterweise ist die LED am kritischsten, daher hängt der KOndensator dort.
Respekt! Wusste doch gleich, dass ich dich "provozieren" kann :) Beitrag "Re: Micronucleus - USB-Bootloader für ATtiny"
Davis schrieb: > Beitrag "Re: Micronucleus - USB-Bootloader für ATtiny" Da habe ich allerdings versagt, denn der Bootloader-Teil fehlt noch :)
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.