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
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.
>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
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.