Forum: Mikrocontroller und Digitale Elektronik ATTINY45 - Mein 1. Projekt - Fragen über Fuses & mehr


von harru12 (Gast)



Lesenswert?

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?

von Jonas H. (fujitsu313)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von harru12 (Gast)


Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Alexander S. (esko) Benutzerseite


Lesenswert?

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.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

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

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.