Forum: Mikrocontroller und Digitale Elektronik Attiny 1MHz als USB Device ?


von Gast (Gast)


Lesenswert?

Hallo,

ich möchte einen langsamen Attiny an den PC über das USB Interface 
anschliessen. Langsam ist deshalb erwähnt, weil ich mir schon 
verschiedene USB Softwareemulatoren angeschaut habe die einen Takt von 
ca. 12 MHz voraussetzten. Diese kommen bei 1 MHz Takt wohl nicht in 
Frage.

Auf dem PC soll auch kein Treiber benötigt werden. Deshalb dachte ich, 
dass ich meine Schaltung einfach als Maus oder Tastatur laufen lasse. 
Die Frage ist nun, gibt es einen IC der meinen uC an den USB anschliesst 
und wenn ja, wie kann ich die Klassifizierung als Eingabegerät erwirken?

Danke.

von Andreas K. (a-k)


Lesenswert?

USB direkt und in Software geht nicht bei 1MHz CPU-Takt.

Die langsamste Version von USB arbeitet mit 1,5Mbps. Das schafft ein AVR 
per Software nur mit entsprechender Rechenleistung.

von Gast (Gast)


Lesenswert?

Dass die Geschwindigkeit nicht reicht ist klar.
Die Frage ist welcher IC empfängt die Signale vom uC und gibt sie dann 
gebündelt an den USB Bus/PC weiter ? Und wie sage ich dem IC dass mein 
uC eine Maus oder Tastatur spielen will ?

Danke.

von Philipp B. (philipp_burch)


Lesenswert?

Bei Software-USB ist es ja eben gerade der Witz, dass du keine externen 
Bauteile (Abgesehen von den Serienwiderständen zur Terminierung und dem 
Pull-Up) benötigst. Da macht der AVR das Timing mit den 1.5Mb/s selbst. 
12MHz ist dazu wohl die unterste Grenze (8 Takte pro Bit).

von Gast (Gast)


Lesenswert?

Da ich leider nur 1 MHz habe bleiben mir 2 Moeglichkeiten:

1. Veränderung des uC Taktteilers wenn die Schaltung an USB 
angeschlossen wird, dann geht SW-USB
2. USB Interface chip.

Gibt es zu einer der beiden Möglichkeiten bereits Erfahrungen ?

Danke.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Suche nach FT232, den kannste auch in Verbindung mit Deinem langsamen 
Tiny verwenden, der wird normal per USART angesteuert.

von holger (Gast)


Lesenswert?

>Suche nach FT232

Ist dann aber virtueller COM-Port. Braucht auch den Treiber von FTDI.
Maus könnte man evtl. wohl machen. Tastatur eher nicht.

Was willst du eigentlich machen ?

von Gast (Gast)


Lesenswert?

Was ich machen will:

Ein low-power Schock-Logger wird mit einem Packet verschickt dessen 
Inhalt empfindlich ist. Der Empfänger entnimmt den Logger, steckt ihn an 
den USB Port und empfängt die Aufzeichnungen. Der Logger ist billig, 
klein und sparsam. Ein Auswerteprogramm wird als Web-API oder ähnlichem 
bereitgestellt. Ein Installation von Treibern ist nicht erwünscht. 
Virtueller COM-Port wäre ok, aber nicht mit extra Treiber.

Danke.

von Falk B. (falk)


Lesenswert?

@ Gast (Gast)

>klein und sparsam. Ein Auswerteprogramm wird als Web-API oder ähnlichem
>bereitgestellt. Ein Installation von Treibern ist nicht erwünscht.

Um die wirst du so oder so nicht wirklich rundrum kommen. Denn das kann 
man nur, wenn man auf ein absolutes Standardgerät aufsetzt, was Windows 
schon an Bord hat. Also z.B. ein USB-Storage Device (USB-Stick) etc.

>Virtueller COM-Port wäre ok, aber nicht mit extra Treiber.

Die haben/brauchen aber alle einen Treiber, der auf den jeweiligen IC 
abgestimmt ist. Einen einfachen Standardtreiber gibt es AFAIK nicht.

MFG
Falk

von Rudolph R. (rudolph)


Lesenswert?

Warum dann nicht per Software den Takt runterdrehen solange der USB 
nicht dran ist?

Im Tiny84 zum Beispiel kann man per CLKPR den Takt bis Faktor 256 
runterdrehen.

Allerdings wirst Du einen Quarz/Resonator brauchen, um überhaupt auf 12 
MHz zu kommen.
Leider hat ja bisher nur der Tiny25/45/85 eine PLL mit an Board.

Stromsparen geht ja auch vor allem gut über die Absenkung der 
Versorgung.
Dann muss man nur wieder sehen, ob der Quarz/Resonator auch schwingt.


Edit: Virtueller COM:, sprich CDC, braucht im einfachsten Fall nur einen 
Eintrag in einer .ini.
Aber auch das ist meisten schon zuviel.

von Bastler (Gast)


Lesenswert?

Als "Eingabegerät" taucht dat nix...wie willst Du das auslesen ?

AFAIK kannst Du aber "Mass Storage Device" nehmen, da haben die meisten 
Betriebssysteme Treiber eingebaut. Also wie ein USB-Stick.

von cguru (Gast)


Lesenswert?

Wie wärs denn einfach als HID ;)

von asfd (Gast)


Lesenswert?

obdev.at

die haben jetzt auch eine anpassung für die tinys mit interner pll.

von holger (Gast)


Lesenswert?

>AFAIK kannst Du aber "Mass Storage Device" nehmen, da haben die meisten
>Betriebssysteme Treiber eingebaut. Also wie ein USB-Stick.

Erkläre mal dem kleinen ATTiny wie er zum "Mass Storage Device"
werden soll ;) Ich schmeiss mich weg !

Die ganze Aufgabenstellung zeugt von einem nicht
vorhandenen Wissen um USB.

CDC (virtual COM Port) ist am einfachsten. Da braucht man aber
einen Treiber oder eine INF Datei die installiert werden muss.
Und ein Programm was den COM Port auch korrekt behandelt.

HID könnte auch gehen. Ist die Frage wie er die Daten
aus dem HID Device rauspopelt. Ohne eigenes Programm
geht da auch nix.

von Philipp B. (philipp_burch)


Lesenswert?

Bastler wrote:
> Als "Eingabegerät" taucht dat nix...wie willst Du das auslesen ?
>
> AFAIK kannst Du aber "Mass Storage Device" nehmen, da haben die meisten
> Betriebssysteme Treiber eingebaut. Also wie ein USB-Stick.

Siehe hier: Beitrag "Software-USB (obdev) als Massenspeicher"

Mittlerweile wird es erkannt, aber bis die Zugriffe darauf wirklich 
laufen, ist es noch ein weiter Weg. Ausserdem ist es platzmässig nicht 
sehr klein, ich rechne für meinem Bootloader mit knapp 4kiB, hoffentlich 
nicht mehr.

Wenn du aber eh eine Software brauchst, dann nimm HID, das entspricht 
dann auch der Spezifikation, ist nicht so kompliziert und benötigt auch 
keinen Treiber, wenn es mit einem gewöhnlichen Gerät geht. Wenn du das 
Ding als Tastatur anmeldest, wird auch die Programmierung am PC recht 
simpel.


@holger:

Vom Programmspeicher her müsste ein Massenspeicher sogar mit einem Tiny 
machbar sein (Tiny45 oder 85 z.B.), beim RAM könnte es allerdings etwas 
schwerer werden. Mit einigen Hacks wäre das aber wohl möglich. 
Allerdings stösst man dann natürlich auf die Probleme mit der Verletzung 
der USB-Spec (Keine Bulk-Endpoints für Low-Speed-Geräte) und die 
CPU-Auslastung von ca. 90%.

http://forums.obdev.at/viewtopic.php?p=3691

von Stefan O. (stefano)


Lesenswert?

Hallo,

Sieh dich mal auf der Seite http://www.codemercs.com/ um.

Eventuell passt der IO-Warrior für deinen Anwendungsfall.
Der meldet sich als USB-HI(D) Device an. Zum ansprechen des Chip's wird 
(unter Windows) eine DLL genutzt, die du mit deinem Programm mitliefern 
musst.

Auch eine möglichkeit vom selben Hersteller wäre der KeyWarrior (HID 
Tastatur) Ich kenne deinen konkreten Anwendugnsfall nicht, allerdings 
könntest du damit eventuell wirklich gänzlich ohne Softwareinstallation 
auf dem PC auskommen.
Ich dachte dabei an folgende Lösung: du startest ein 
Textverarbeitungsprogramm (notepad, etc...) und stellst den Cursor ins 
Eingabefeld. Anschließend aktivierst du die Ausgabe auf deiner HArdware 
(zB per Taster) und dein kleines Device gibt einen lesbaren Report aus. 
So eine ähnliche Technick wird auch bei Hardware Keyloggern verwendet.

Sind beides eigene Chip's, aber das ein Software USB mit 1Mhz Takt nicht 
geht wurde ja weiter oben schon erwähnt.

lg Stefan

von Gast (Gast)


Lesenswert?

Wir wären somit wieder am Anfang. Ich will ein USB Device welches von 
Windows ohne extra Treiber unterstützt wird: HID = Maus oder Tastatur. 
Und dies ohne SW-USB. Ich habe schon befürchtet, dass das Problem etwas 
grösser wird, hatte aber gehofft dass es USB Interface-ICs gibt die für 
die HID Class keinen Treiber auf dem PC brauchen.

Meine Attinys lassen sich nur über Lockbits dazu überreden die 
Taktfrequenz zu ändern. Soweit ich weiss lässt sich ein Lockbit nicht 
während des Programmablaufs verändern.

Danke.

von Philipp B. (philipp_burch)


Lesenswert?

Gast wrote:
> Wir wären somit wieder am Anfang. Ich will ein USB Device welches von
> Windows ohne extra Treiber unterstützt wird: HID = Maus oder Tastatur.
> Und dies ohne SW-USB. Ich habe schon befürchtet, dass das Problem etwas
> grösser wird, hatte aber gehofft dass es USB Interface-ICs gibt die für
> die HID Class keinen Treiber auf dem PC brauchen.
>
> Meine Attinys lassen sich nur über Lockbits dazu überreden die
> Taktfrequenz zu ändern. Soweit ich weiss lässt sich ein Lockbit nicht
> während des Programmablaufs verändern.
>
> Danke.

Was heisst "meine Tinys"? Um welche Typen geht es denn konkret? Die 
neueren Typen haben ein Teilerregister um das Ding zur Laufzeit 
runtertakten zu können. Bei denen mit interner PLL und dem Treiber von 
obdev geht's auch komplett ohne Quarz/Resonator. Das kann sogar der 
bereits veraltete Tiny26 und die Frequenz ist auch da zur Laufzeit 
änderbar.

von Bastler (Gast)


Lesenswert?

Nimm halt keinen Tiny sondern was anderes... mit einem einzelnem Tiny 
bekommst Du das sowieso nicht hin, da reicht der Flash nichtmal, wenn Du 
Software-USB machst, ist das Ding so gut wie voll (tiny2313). Und Ohne 
Quartz kann man das ganze gleich vergessen.

Tastatur ??? Ich schmeiss mich weg :-)) Beim einstöpseln Buchstabenmüll 
in Word und der Rechner stürzt ab ? Rofl..

von Philipp B. (philipp_burch)


Lesenswert?

Bastler wrote:
> Tastatur ??? Ich schmeiss mich weg :-)) Beim einstöpseln Buchstabenmüll
> in Word und der Rechner stürzt ab ? Rofl..

Auch Barcodeleser melden sich vielfach als Tastatur an. Es reicht ja, 
wenn der Vorgang durch eine Taste an dem Logger gestartet werden kann. 
Natürlich ist es nicht die optimalste Lösung, aber es wäre bestimmt 
ziemlich einfach und mehr oder minder zuverlässig.

von Stefan O. (stefano)


Lesenswert?

@Bastler:

So wie ich das sehe erfüllt mein Vorschlag die geforderten Parameter:

- Keine Treiber erforderlich da eine Tastatur sowieso funktioniert.
- Kein Programm nötig, da Textverarbeitung standardmässig installiert.

Davon das Text gesendet wird sobald man das Device einsteckt habe ich 
nichts geschrieben, sondern das man die Ausgabe durch Tastendruck oÄ 
aktivieren muss.

Wenn ihr Rechner durch blose Tastatureingaben abstürzt würde ich mir 
Gedanken machen. Dann schmeissen Sie lieber ihren Rechner anstatt sich 
selbst weg.

lg Stefan

von holger (Gast)


Lesenswert?

@ Stefan Oberpeilsteiner
>Zum ansprechen des Chip's wird
>(unter Windows) eine DLL genutzt, die du mit deinem Programm mitliefern
>musst.

Da ist er wieder der unerwünschte Treiber ;)

von Bastler (Gast)


Lesenswert?

Von Tastatur halt ich nach wie vor nichts.

Da wird ein beliebiges gestartetes Programm mit irgendwelchen 
Tastendrücken versorgt.
Rate mal wie schnell Du Klagen wegen gelöschter Daten am Hals hast...

Andere Idee: Eine SD-Karten-Interface "Rückwärts" :-)

Der Anwender nutzt einen Kartenleser (Kann man ja notfalls mitschicken),
Dafür gibt es in Windows auch mitgelieferte Treiber.
Den Tiny packst Du auf eine Platine die in den SD-Slot passt.

Der Tiny spielt dann "SD-Karte" und gibt als einzige "Datei" seine Daten 
aus.
Fertisch.
Das ist fast ne reine Softwarelösung.

von Gast (Gast)


Lesenswert?

Ich hatte den Tiny13 im Visier. Ich werde den Hinweis mit Obdev 
aufgreifen. Für SW-USB reicht ein Tiny13 dann speichermässig eh nicht 
mehr aus. Aber wenn es einen USB IC spart - warum nicht.

Im übrigen zeigt das Gelächter über Tastatureingaben einiges an 
Unwissen. Bereits über den Zustand der Shift und Ctrl Taste kann man 
problemlos Daten austauschen ohne etwas in Word reingeschrieben zu 
bekommen.

Danke für alle Hinweise.

von Philipp B. (philipp_burch)


Lesenswert?

Bastler wrote:
> Von Tastatur halt ich nach wie vor nichts.
>
> Da wird ein beliebiges gestartetes Programm mit irgendwelchen
> Tastendrücken versorgt.
> Rate mal wie schnell Du Klagen wegen gelöschter Daten am Hals hast...

Gegen unfähige Benutzer wirst du wohl nix machen können ;)

> Andere Idee: Eine SD-Karten-Interface "Rückwärts" :-)
>
> [...]
>
> Der Tiny spielt dann "SD-Karte" und gibt als einzige "Datei" seine Daten
> aus.
> Fertisch.
> Das ist fast ne reine Softwarelösung.

Und der Tiny sollte dann auf die Daten antworten, die mit einigen MHz im 
SD-Format ankommen. Na bravo. Da dürfte USB noch besser implementierbar 
sein, davon gibt's wenigstens auch eine mehr oder weniger komplett 
offene Spezifikation. Ausserdem hast du auch hier wieder ein ähnliches 
Problem wie beim Massenspeicher am USB: Der Tiny muss dem PC ein 
komplettes Dateisystem vorgaukeln.

von Bastler (Gast)


Lesenswert?

Meinst Du.

Hau mal ein paar mal auf Shift, und schau was passiert.

Wenn der Anwender im aufpoppenden Dialog falsch Antwortet, weil er es 
nicht besser weiss, Dokus liest ja niemand, gibts anschliessund auch 
Unmut.

von Falk B. (falk)


Lesenswert?

@ Philipp Burch (philipp_burch)

>Problem wie beim Massenspeicher am USB: Der Tiny muss dem PC ein
>komplettes Dateisystem vorgaukeln.

Dann machts doch einfach so. Der Logger schreibt die Daten auf einen 
normale SD-karte. Zum Auslesen einfach die SD-Karte rausnehmen und in 
den PC stecken. Fertig. Alles Standard, alles einfach. uNd wenn mans 
ganz clever macht, schreibt der Logger bereits eine standardmässig 
lesbare Datei, z.B. Excel CSV oder so. Dann braucht man nicht mal extra 
Auswerungssoftware.

MFG
Falk

von Philipp B. (philipp_burch)


Lesenswert?

Falk Brunner wrote:
> @ Philipp Burch (philipp_burch)
>
>>Problem wie beim Massenspeicher am USB: Der Tiny muss dem PC ein
>>komplettes Dateisystem vorgaukeln.
>
> Dann machts doch einfach so. Der Logger schreibt die Daten auf einen
> normale SD-karte. Zum Auslesen einfach die SD-Karte rausnehmen und in
> den PC stecken. Fertig. Alles Standard, alles einfach. uNd wenn mans
> ganz clever macht, schreibt der Logger bereits eine standardmässig
> lesbare Datei, z.B. Excel CSV oder so. Dann braucht man nicht mal extra
> Auswerungssoftware.

Korrekt. Wenn es sich beim Speicher um eine SD-Karte handelt und diese 
auch entfernt werden kann (Gesockelt), dann ist das natürlich die 
sinnvollste Lösung. Meistens jedenfalls.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Gast wrote:
> Was ich machen will:
> bereitgestellt. Ein Installation von Treibern ist nicht erwünscht.
> Virtueller COM-Port wäre ok, aber nicht mit extra Treiber.
>
> Danke.

Unter Windows muss man wahrscheinlich den entsprechenden Treiber 
installieren, der ftdi_sio hat es allerdings unlaengst in die 
Standard-Linux-Kernel-Distro geschafft so dass zumindest dort eine 
Treiberinstallation nicht erforderlich ist. Der Treiber erzeugt dann 
einen "virtuellen COM Port" wie Du das nennst, also ein serielles 
Device.

Michael

von Falk B. (falk)


Lesenswert?

@ Philipp Burch (philipp_burch)

>Korrekt. Wenn es sich beim Speicher um eine SD-Karte handelt und diese
>auch entfernt werden kann (Gesockelt),

Hast du schon mal fest verlötete SD-Karten gesehen? ;-)

MFG
Falk

von Gast (Gast)


Lesenswert?

Also nach ca. 500 mal Shift drücken kommt bei mir immer noch kein 
Dialog...  Kann es sein dass ich nicht die Behindertenhilfen installiert 
habe ?

von Bastler (Gast)


Lesenswert?

Möglich.

Die Anwender haben sie auch nicht installiert ?

von Gast (Gast)


Lesenswert?

Kommt der Dialog sonst auch bei Alt und Ctrl ?

von Philipp B. (philipp_burch)


Lesenswert?

Falk Brunner wrote:
> @ Philipp Burch (philipp_burch)
>
>>Korrekt. Wenn es sich beim Speicher um eine SD-Karte handelt und diese
>>auch entfernt werden kann (Gesockelt),
>
> Hast du schon mal fest verlötete SD-Karten gesehen? ;-)

Gesehen? Du bist gut. Ich mache das andauernd mit microSD-Karten. 
Billiger kommt man kaum an derart simpel anzusprechenden Speicher in so 
einer Grössenordnung. Das sieht dann etwa so aus: 
http://mobifiles.bytefox.de/viewtopic.php?t=897&postdays=0&postorder=asc&start=240 
(Etwas runterscrollen)

von Bastler (Gast)


Lesenswert?

Klar, und der Anwender ist noch in einerm anderem Programm, steckt den 
Stick ein, will das Programm mit ner Tastenkombination (oder auch Maus!- 
kommt auf das Programm an) beenden, dein ALT oder STRG haut dazwischen 
und löst was ganz anderes aus. Lecker...

HID ISS NIX in diesem Fall. Ist für Dummuser (und das sind 98%!! aus 
eigener Erfahrung, bin Softwareentwickler) einfach nicht geeignet.

Die Sache mit der SD-Karte hört sich schon besser an... da kann nichts 
"kaputt" gehen. Abgesehen davon kommt zumindest bei mir auch ein Dialog 
zur Treiberinstallation, wenn ich eine zweite Maus anklemme... Der kommt 
aber auch, wenn man zum ersten mal einen Kartenleser anklemmt. Daran 
kommt man ncht vorbei...

von Philipp B. (philipp_burch)


Lesenswert?

Bastler wrote:
> Klar, und der Anwender ist noch in einerm anderem Programm, steckt den
> Stick ein, will das Programm mit ner Tastenkombination (oder auch Maus!-
> kommt auf das Programm an) beenden, dein ALT oder STRG haut dazwischen
> und löst was ganz anderes aus. Lecker...
>
> HID ISS NIX in diesem Fall. Ist für Dummuser (und das sind 98%!! aus
> eigener Erfahrung, bin Softwareentwickler) einfach nicht geeignet.
>
> Die Sache mit der SD-Karte hört sich schon besser an... da kann nichts
> "kaputt" gehen. Abgesehen davon kommt zumindest bei mir auch ein Dialog
> zur Treiberinstallation, wenn ich eine zweite Maus anklemme... Der kommt
> aber auch, wenn man zum ersten mal einen Kartenleser anklemmt. Daran
> kommt man ncht vorbei...

Der Taster zum Starten der Übertragung soll sich ja auch auf dem Modul 
befinden und nicht am PC. Dass man einer Tastatur Kommandos schicken 
kann, wäre mir auch irgendwie neu...

von Bastler (Gast)


Lesenswert?

Lies nochmal.

von Philipp B. (philipp_burch)


Lesenswert?

Wenn sich der Starttaster auf dem Modul befindet, dann hat da gefälligst 
nix dazwischenzuhauen. Das Modul soll überhaupt nix tun, bis es dazu 
aufgefordert wird. Ich sehe dein Problem nicht so recht. Ausserdem: Ist 
doch praktisch, wenn ich den Cursor in eine Tabellenzelle platzieren 
kann, Start drücke und die Tabelle gleich ausgefüllt wird. Was willst du 
mehr? Einfach, zuverlässig, relativ idiotensicher. Von der 
Datenübertragung per Pseudo-Tastendrücken halte ich aber auch nix, 
deswegen brauchst du jedoch nicht gleich die ganze HID-Klasse als 
ungeeignet zu erklären.

von Stefan O. (stefano)


Lesenswert?

Bastler wrote:

> HID ISS NIX in diesem Fall. Ist für Dummuser (und das sind 98%!! aus
> eigener Erfahrung, bin Softwareentwickler) einfach nicht geeignet.

Das kann man eventuell im Vorfeld klaeren, aber die Anforderung das dass 
ganze ohne Treiber und Programminstallation gehen soll laesst in der Tat 
darauf schliessen, dass den Anwendern in diesem Fall in EDV technischer 
Hinsicht nicht viel zugetraut wird.

Aber wenn ihr hier über Lösungen mit Speicherkarten nachdenkt, dann 
weichen wir von der im Anfangspost genannten USB Lösung ab.

lg Stefan

von Bastler (Gast)


Lesenswert?

Naja, da fehlen halt noch Infos.
Es ist jedenfalls alles nicht so einfach wie es sich anhört.
Taste am Modul drücken, wenn die einzigen USB-Anschlüsse hinterm Rechner 
unterm Schreibtisch sind, ist auch nicht so einfach. Da muss man dann 
ein langes Kabel einplanen.

So ganz Treiberlos ist es jedenfalls nicht einfach.

Allenfalls...wenn eine Webanwendung oder ähnliches die Eingaben 
annimmt...könnte man Mausbewegungen benutzen. Die dürften halbwegs 
ungefährlich sein, und sind abfragbar.

von Bastler (Gast)


Lesenswert?

Jedenfalls wenn javascript auch eingeschaltet ist.
Sonst muss der Anwender das erst einschalten.

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.