Hallo!
Ich beschäftige mich schon seit längerem mit Mikrocontrollern und
Elektronik. Hab auch schon Erfahrung mit Arduino, aber jetzt wollte ich
mal richtig etwas eigenes bauen. Zufällig hab ich den ATTiny45-20pu
gefunden... Ich benutze den mySmartUSB light und eine selbstgebaute
Platine mit IC-Sockel und 6 pins wo ich den 6-poligen Stecker des
ISP-Programmers dranstecke und den ATTiny einsetze... Als Programm
benutze ich AVRFuses mit avrdude auf dem Mac. (Bild vom Programmer und
der Platine sind angehängt.)
Tja warum mach ich eigentlich das ganze? Ich bin auf
http://macetech.com/blog/?q=node/46 gestoßen, ein kleines USB Gerät
welches zw. 30 sec und 8 Minuten die Caps-Lock Taste emuliert... Also
hab ich die .hex Datei die dort verlinkt ist auf den ATTiny
raufgeladen... Als Programmer hab ich den stk500v2 eingestellt, die
baud-rate ist auf 115200 gesetzt. Wenn ich die hex Datei auswähle und
auf Program drücke, fangt der ISP-Programmer wild zu blinken an, dann
sagt mir das Programm "Success". Scheint also irgendwie zu klappen. So
und dann noch die Fuses.... Naja gut so ganz versteh ich das noch nicht,
aber ich hab das mal so eingestellt:
Häkchen bei:
- Serial program downloading enabled
- Brown-out detection level at VCC = 4.3 V
- PLL-Clock; Startup time PWRDWN/reset: 1K CK/14 CK + 6
Auf program gedrückt, "Success"...
Dann habe ich eben die Schaltung am Breadboard aufgebaut (ohne SMD)...
Hab anstelle des 2k Widerstandes 2 mal 1k benutzt, statt des 68 ohm
Widerstandes 78 ohm und 170 ohm, und einen 0.1uF Keramikkondensator (104
steht drauf). Und dann einen USB Stecker von irgendeinem Kabel das herum
lag... So weit, so gut die Schaltung aufgebaut, aber es tut sich
nichts... Der Mac erkennt irgendwie keine neue USB Tastatur und es macht
anscheinend garnichts... Habs auch bei Windows probiert, normalerweise
kommt ja ein Benachrichtigungston wenn man ein neues Gerät einsteckt -
nichts! Tja nur wo liegt der Fehler?
Bevor dir irgendjemand helfen kann, lade die Bilder erstmal in einem
passenden Format hoch. So tust du niemandem einen Gefallen. Dauert ja
ewig. die anzuzeigen...
Das erste, was ich sehe ist, das die USB Norm insoweit verletzt wird,
als das der 2k eigentlich ein 1k5 sein muss. Dann ist V-USB dafür
bekannt, das es nicht immer gut funktioniert, vor allem, wenn der MC mit
dem internen RC Oszillator läuft. Ausserdem darf auf den USB Leitungen
eigentlich nur 3,3 Volt liegen, deswegen gibts bei
http://www.obdev.at/products/vusb/index-de.html
Vorschläge, wie das hinzukriegen ist. Für dich kommt eigentlch nur die
Lösung mit den Zenerdioden an den Datenleitungen in Betracht, da die PLL
Clock vermutlich mit 3,3V nicht gut läuft.
Jonas H. schrieb:> Bevor dir irgendjemand helfen kann, lade die Bilder erstmal in einem> passenden Format hoch. So tust du niemandem einen Gefallen. Dauert ja> ewig. die anzuzeigen...
Bestimmt wollte er, dass jeder sehen kann, wie sehr seine Kamera
rauscht. :-/ Hab' sie verkleinert. ==> Bildformate!
Matthias Sch. schrieb:> Dann ist V-USB dafür> bekannt, das es nicht immer gut funktioniert, vor allem, wenn der MC mit> dem internen RC Oszillator läuft.
Internen Oszillator kann man für USB an sich vergessen, nicht nur
bei V-USB. Mindestens ein Keramikresonator sollte es schon sein.
Ok, danke erstmal für die Antworten, nur warum funktioniert das dann bei
dem Tutorial-Schreiber? Der verwendet doch auch keinen
Keramikresonator... Hab da noch einen 8mHz Quarzresonator herumliegen,
aber der bringt mir nicht viel oder? Gibt es irgendwas was ich
ausprobieren könnte damit es funktioniert?
Sorry wegen den Bildern und danke fürs verkleinern...
harru12 schrieb:> Hab da noch einen 8mHz Quarzresonator herumliegen,> aber der bringt mir nicht viel oder?
So isses. Wie auf der V-USB Homepage bereits erwähnt, geht 12, 15, 16
oder 20MHz, wobei ich die besten Erfahrungen mit einem 16 MHz
TTL-Oszillator am Tiny45/85 gemacht habe. Der Oszillator ist für dein
Ich-Nerve-Leute-Keyboard-Stöpsel aber vermutlich zu gross. Bleibt also
nur ein Quarz/Resonator mit der richtigen Frequenz. Das bedeutet aber
auch, das du das Programm mit der richtigen Frequenz neu kompilieren
musst.
harru12 schrieb:> nur warum funktioniert das dann bei> dem Tutorial-Schreiber?
Tja, das ist eben Glückssache, prüf aber mal, ob du nicht aus Versehen
noch eine CLKDIV8 Fuse gesetzt hast.
Der 2k (besser 1k5) Widerstand soll jedenfalls dem Rechner
signalisieren, das da ein USB 1.0 Gerät angeschlossen wird. Sollte das
schon nicht gehen, ist was an den USB Pins nicht richtig, z.B. D- und D+
vertauscht.
Jörg Wunsch schrieb:> Internen Oszillator kann man für USB an sich vergessen, nicht nur> bei V-USB. Mindestens ein Keramikresonator sollte es schon sein.
Bis auf V-USB habe ich noch nie ein USB Gerät ohne Resonator/Quarz
gesehen, das würde beim Hersteller auch vermutlich Rückläufer ohne Ende
geben.
Matthias Sch. schrieb:> Bis auf V-USB habe ich noch nie ein USB Gerät ohne Resonator/Quarz> gesehen, das würde beim Hersteller auch vermutlich Rückläufer ohne Ende> geben.
Neuere FTDI-ICs können sowas. ;-) Vermutlich haben sie eine
Testprozedur, die die Kalibrierdaten im EEPROM ablegt, sodass
der Oszillator dann ausreichend in der Toleranz liegt.
Jörg Wunsch schrieb:> Neuere FTDI-ICs können sowas. ;-) Vermutlich haben sie eine> Testprozedur, die die Kalibrierdaten im EEPROM ablegt, sodass> der Oszillator dann ausreichend in der Toleranz liegt.
So macht es der V-USB auch. Er kalibriert den internen Oszillator am
Anfang der Verbindung anhand des USB-Datenstroms. Ob er auch im Betrieb
nachkalibriert, weiß ich nicht.
Alexander Schmidt schrieb:> So macht es der V-USB auch. Er kalibriert den internen Oszillator am> Anfang der Verbindung anhand des USB-Datenstroms. Ob er auch im Betrieb> nachkalibriert, weiß ich nicht.
Ich kenn nur Software, die am Anfang kalibriert. Trotzdem gibts kleine
Unterschiede: Das Referenzprojekt "EasyLogger" von obdev.at kalibriert
beim der ersten Inbetriebnahme und schreibt den Kalibrierungswert ins
EPROM. Der Programmer "guloprog" kalibriert bei jedem Anschließen an die
USB-Schnittstelle neu und speichert den Wert nicht.
harru12:
Schau dir mal dieses Projekt an:
http://www.obdev.at/products/vusb/hidkeys.html
Dürfte dem, was du vorhast, recht nahe kommen. Dort wird allerdings ein
ATmega8 eingesetzt. Du kannst sicher auch einen ATtiny45 einsetzen, wie
das geht, siehst du hier:
http://www.obdev.at/products/vusb/easylogger.html
Ein Quarz wird dabei nicht benötigt. Eine verbesserte
Kalibrierungsprozedur findest du in den Quellen von "guloprog". Das Zeug
ist alles Open Source, schaus dir ruhig mal näher an.
Bei der Entwicklung des Programmers stellte sich übrigens heraus, dass
der ATtiny45 vom Speicher her doch etwas zu knapp war, deswegen bist du
mit dem ATtiny85 eventuell besser dran.
Grüße
Markus