Hallo,
versuche einen USB-UART Umsetzer mit einem Attiny85 ohne Kristall zu
realisieren.
Nach langem herumprobieren ohne Reaktion auf dem Computer habe ich
diesen Thread gefunden:
Beitrag "ATtiny45 + VUSB -> gerät wird nicht erkannt"
Habe dann die Schaltung nachgebaut, die dort als Schematic gepostet ist,
und die dortige Software kompiliert (scriptkiddy hat ja festgestellt,
dass eine Zeile in usbconfig.h einkommentiert werden muss; usbdrvasm.S
habe ich nicht veraendert).
Geflasht, und der Aufbau ruft jetzt wenigstens eine Reaktion am Computer
hervor. Allerdings bekomme ich so etwas:
Kann jemand an dem Aufbau einen Fehler erkennen? Kabel ist nur ~10 cm
kurz. Windows funktioniert das Geraet auch nicht. Habe drei verschiedene
Computer versucht.
Gleicher Fehler... Koennte aber wirklich ein Signalqualitaetsproblem
sein... Habe woanders gelesen, dass Leute Elko's benutzt haben, um VCC
zu stabilisieren. Hat bei mir nicht gebracht (6u8, 100u, 1000u)
Aber bevor es auf dem Steckbrett tut werde ich das nicht zusammenloeten.
Herman schrieb:> Marek S. schrieb:>> Koennte aber wirklich ein Signalqualitaetsproblem>> sein...> mit einem Scope verfiziert?
Ich koennte fuer kurze Zeit an ein Oszi, aber nach was soll ich schauen?
Es besteht ja keine stabile Verbindung. Schickt der Computer einen
konstanten Datenstrom ueber die Leitungen egal was dranhaengt?
Oder hoch frequente Stoerung auf VCC?
Mir sind zwei Tools für Windows bekannt, mit denen du den Trafik
kontrollieren könntest: USBlyzer und USBTrace. Vielleicht kannst du
damit herausfinden, wo es klemmt.
Der Weise schrieb:> Ohne Quarz? Bei ner ollen UART-Übertragung klappt das ja schon nicht,> und bei V-Usb? oje :D
Bei V-USB gibt es AFAIK eine Art Auto-Konfiguration des internen
Oszillators über USB.
Was für ein Clock hast du gewählt?
Bei V-USB den gleichen Clock eingestellt?
Lass mal eine LED blinken, dann siehst du ob du nicht doch ein Problem
mit dem Clock hast.
Pullup hast du korrekt angehängt, sonst würde "new low speed USB device
number 31 using ohci_hcd" nicht erscheinen.
mfg Andreas
Marek S. schrieb:> [20738.140113] usb 5-1: new low speed USB device number 33 using ohci_hcd
Wie schon mal erwähnt, bedeutet das nur, das der 1k5 pullup Widerstand
am USB gefunden wurde.
Wenn du wirklich die Quarzlose Version von V-USB zum Laufen bekommen
willst, musst du zwingend die 16,5 Mhz Variante wählen und auch den
Autocalibration Code in dein Projekt einbauen und starten.
Ich habe mich wirklich viel mit V-USB beschäftigt und dabei für mich
hearausgefunden, das die ohne-Quarz Variante nicht wirklich zuverlässig
funktioniert, vor allem, wenn dann auch noch die 2-Dioden
Spannungsversorgung benutzt wird. Mal gings, aber meistens nicht.
Deswegen benutze ich für meine Tinys einen externen 16Mhz Oszillator und
damit läufts richtig gut und zuverlässig. Externen Oszillator, weil ich
damit nur einen Pin verbrate. Wenn beide Portpins noch frei sind,
kannste auch einen normalen Quarz nehmen. Übrigens sind 16,5 Mhz und 3,3
Volt Versorgung bei den meisten AVRs im grenzwertigen Bereich.
Andreas B. schrieb:> Was für ein Clock hast du gewählt?
16,5 MHz
> Bei V-USB den gleichen Clock eingestellt?
Im Makefile steht "-DF_CPU=16500000UL" (genau der gleiche Makefile, wie
in dem .zip aus dem am Anfang erwaehnten Thread)
http://www.mikrocontroller.net/attachment/103732/USB-Controll.zipMatthias Sch. schrieb:> Übrigens sind 16,5 Mhz und 3,3> Volt Versorgung bei den meisten AVRs im grenzwertigen Bereich.
Sind 3,3V (2 Dioden) und ein externer 16MHz Quartz (+2x 22pF) auch
grenzwertig? Oder stabil?
Marek S. schrieb:> Jetzt wo ich darueber nachdenke: Fuer was steht eigentlich das UL im> Makefile nach der Frequenz? Muss man das vielleicht weglassen?
Unsigned Long?
Ich kenne nur das L für Long...
mfg Andreas
Marek S. schrieb:> Sind 3,3V (2 Dioden) und ein externer 16MHz Quartz (+2x 22pF) auch> grenzwertig? Oder stabil?
Es geht um die Grafik 'Safe Operating Area' auf Seite 168 des
ATTiny25/45/85 Datenblattes . Die Grafik ist nicht wirklich genau, aber
man kann sehen , das 20Mhz erst ab 4,5 Volt Vcc 'Safe' sind. 16,5 Mhz
und 3,3 Volt muss man mal abmessen, sind aber hart an der Grenze der
'Safe Operation'
Ob Quarz oder PLL spielt dabei erstmal keine Rolle, mit ein bisschen
Pech arbeitet die PLL aber nicht genau genug. Quarz ist auf jeden Fall
die beste Lösung für ein USB Device, vor allem, wenns an mehreren
Rechnern laufen soll. Meine Projekte jedenfalls laufen an diversen Macs,
Windoof Grotten und Linuxboxen.
http://www.schoeldgen.de/avr/
Und ja, UL steht für unsigned long und ist da richtig.
Ich koennte den uC mit 5 Volt betreiben, aber ich habe keine 3,6 oder
3,3 V Z-Dioden hier (um die Datenleitungen runterzuziehen).
http://www.rn-wissen.de/index.php/V-USB:_Ein_Firmware_USB-Treiber_für_AVR
Pullup sollte dann 2k2 sein.
In dem verlinkten Wiki steht "Es werden 3,6V Low-Power Zenerdioden (wie
1N4148, 500mW oder weniger) empfohlen, ...".
Aber 1N4148 ist doch keine 3,6 V Zenerdiode?
Nein Opfer, es gibt nur unterschiedliche Methoden bei V-USB, um die für
USB notwendigen 3,3 Volt auf den Datenleitungen zu erzeugen. Beide
werden bei obdev.at beschrieben.
Die eine Methode ist, den MC über zwei Si-Dioden aus den 5Volt des USB
zu betreiben, gibt, wie du weisst, so ca 3,4-3,6 Volt. In dem Fall
werden die USB Datenleitungen direkt an den MC angeschlossen.
Die andere Methode ist, den MC direkt mit den 5 Volt zu speisen und die
Datenleitungen per Widerstand und 3,6 Volt Zenerdioden auf den Pegel zu
drücken.
Hi
>> Aber 1N4148 ist doch keine 3,6 V Zenerdiode?>Mir scheint, dir fehlen die Grundlagen.
Ihm oder dir? Wenigstens hat er bemerkt das dort Müll steht.
MfG Spess
spess53 schrieb:> Ihm oder dir? Wenigstens hat er bemerkt das dort Müll steht.
Es steht ausser Frage, dass er es bemerkt hat, aber das öffentlich in
Frage zu stellen, zeugt auch nicht von Erfahrung.
Werde das mal ruhen lassen bis ich mir irgendwo 3,6 V Zenerdioden
besorgt habe. Und probiere das ganze dann mit +5V.
Alternative waere ein AtMega32u2 mit integriertem USB. 3,40 Euro bei R.
Dann haette ich das Interface, das auf den Arduino's realisiert ist.
Aber Tiny ist eigentlich genug fuer mich.
Marek S. schrieb:> Werde das mal ruhen lassen bis ich mir irgendwo 3,6 V Zenerdioden> besorgt habe. Und probiere das ganze dann mit +5V.
Die dritte lösung ist übrigens vermutlich die beste: Speise den Tiny mit
einem 3,3 Volt LowDrop Regler, dann ist er stabil und braucht gar kein
Gedöns in den USB Leitungen. Allerdings ist er immer noch am Rande der
'Safe Operating Area'. Da die Arduinos aber genauso laufen, stellt das
vermutlich das kleinere Problem dar.
Matthias Sch. schrieb:> Die dritte lösung ist übrigens vermutlich die beste: Speise den Tiny mit> einem 3,3 Volt LowDrop Regler, dann ist er stabil und braucht gar kein> Gedöns in den USB Leitungen.
Was die Schaltung aber auch nicht kompakter macht... Ich werde es mal
mit einem Labornetzteil versuchen, oder LM317.
Die meisten Dreibein Regler ( und der LM317 ist da keine Ausnahme)
benötigen allerdings eine grössere Spannung zwischen Ein- und Ausgang
als 5 Volt auf 3,3 Volt, deswegen mein Rat mit dem LowDrop Regler. Die
gibt es übrigens auch als SMD...
Labornetzteil geht natürlich, nur speise die 5 Volt nicht in den Rechner
zurück, hehehe.
Hilft nicht.
Habe mit einem Labornetzteil 3,3 und 3,6 V versucht (VCC vom USB nicht
angeschlossen), aber wird immer noch nicht erkannt.
Mit einem Oszi sehe ich, dass ueber die Leitungen Digitalsignale
versendet werden mit ~3,5V Amplitude (alle 10 sekunden).
VCC pendelt um die 50 mV.
Hat jemand ein fertig kompiliertes .hex und einen dazugehoerigen
Schaltplan rumliegen, das mit einem Attiny85 funktioniert?