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.
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.
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.
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).
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.
Suche nach FT232, den kannste auch in Verbindung mit Deinem langsamen Tiny verwenden, der wird normal per USART angesteuert.
>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 ?
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.
@ 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
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.
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.
obdev.at die haben jetzt auch eine anpassung für die tinys mit interner pll.
>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.
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
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
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.
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.
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..
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.
@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
@ 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 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.
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.
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.
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.
@ 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
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.
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
@ 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
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 ?
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)
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...
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...
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.