Hallo, Ich steuere einen USBN9604 mit einem ATmega16 an. Lesen und schreiben der Register vom USBN geht soweit ganz gut, nur die Kommunikation mit dem Host klappt nicht. Zur Zeit lese ich in einer Schleife das MAEV-Register aus. Nach dem Anschließen an den Bus wird nach kurzer Zeit ein Reset vom Host erkannt (RST-Bit in MAEV gesetzt + entsprechende ALTEV-Bits gesetzt), nach dem Reset kommen aber keine Setup-Pakete an. Nur das FRAME-Bit (MAEV) ist ständig gesetzt. Weiß da vielleicht jemand weiter? Ich sitze seit mehreren Tagen davor und kann absolut keinen Fehler finden. Gruß, Markus
Hallo Markus, ich habe eine dynamische Schnittstelle für den USBN9604 geschrieben. Schau doch mal rein vielleicht hilfts was. http://developer.berlios.de/projects/usbn2mc/ Gruss Bene
Kriegst du RESET vom Host oder setzt du deinen Controller in NodeReset ? "This bit is set when 2.5 µS of SEO is detected on the upstream port. In response, the functional state should be reset (NFS in the NFSR register is set to RESET), where it must remain for at least 100 µS. The functional state can then return to Op- erational state. This bit is cleared when the register is read." Sprich: Wenn Du Reset vom Host bekommst und Reset in ALTEV gesetzt ist, musst du: 1) Im NFSR-Register NodeReset setzen 2) Mindestens 100 µS warten 3) Die "Function Adress" auf 0 setzen (FAR-Register) und Address Enable (auch FAR-Register) setzen. 4) Wieder nach NodeOperational wechseln (NFSR-Register) So hab ich das in nem anderen Source gesehen, allerdings wartet der Schreiber da 200ms statt 100 µS... Ein wenig Source, den man zum schlau werden verwenden kann, findet man hier bei den Weblinks und dem Projekt: [url=http://www.mikrocontroller.net/articles/USBN960x]http://www.mikrocontroller.net/articles/USBN960x[/url]
Hallo, Nach langer Zeit hab ich das Projekt mal wieder reaktiviert und dabei ist mir auch das usbn2mc-Projekt über den Weg gelaufen (hatte die Antworten damals gar nicht mehr bemerkt). Wie zu erwarten war, funktioniert meine Firmware immer noch nicht. Jetzt hab ich aber in einem anderen Thread etwas über die Geschichte mit den Quarzen gelesen. Der USBN9604 will ja bekanntlich einen Grundwellenquarz. Da ich meinen Quarz damals bei Reichelt gekauft habe (in der Annahme, einen Grundwellenquarz zu erhalten), muss ich wohl davon ausgehen, dass ich zur Zeit einen Oberwellenquarz in meiner Schaltung habe. Das werde ich wohl ändern müssen. Was mich aber sehr wundert ist, dass der Host mit meiner Firmware zumindest ein neues USB-Gerät erkennt (er versucht dann, die Adresse zu setzen, was fehlschlägt), wenn ich die Firmware des von usbn2mc verwende, bemerkt der PC aber überhaupt nichts. Kann sich das jemand erklären? Gruß, Markus
Was hast Du denn am Taktausgang des USBN. Wenn Du dort 4 MHz hast sollte alles ok sein. Ich hatte dort 1,33 MHz und vermute daher, dass ich einen Oberwellenquarz habe. Habe die Platine daher erstmal weggelegt. Der Host merkt schon, dass ein neues Gerät am Bus hängt, wenn D+ bzw. D- auf 3,3 V liegt -- also auch ohne funktionierende Kommunikation. Gruß Stefan Salewski
Die Frequenz am Taktausgang kann ich zur Zeit leider nicht messen, deshalb konzentriere ich mich momentan auf die Geschichte mit usbn2mc. Und da hab ich eben das Problem, dass der Host überhaupt nichts merkt, also der 3,3V-Spannungsregler anscheinend nicht eingeschaltet wird. Und was wundert mich etwas. Gruß, Markus
Ist die Pinzuordnung Deiner Platine denn exakt so wie bei der von Benedikt? Wenn nicht musst Du eventuell einige Dateien anpassen. Du kannst ja mal mit meiner Platine vergleichen -- ich hatte zwar versucht Benedikts Platine nachzubauen, aber so ganz sicher war ich mir bei der Pinzuordnung auch nicht. http://www.ssalewski.de/AVR_USB_gEDA.html.de
Hallo Markus, das beste ist du baust mal eine UART Verbindung vom Recher zum AVR auf. Dann klemmst du den USBN9604 dran und fragst mal die Version oder so ab ist Register 0x02 oder 0x03. Im Datenblatt steht was du da genau kriegst. Es gibt in usbn2mc auch ein "Terminal" bei dem muss du nur UARTWrite und die USBN lese und schreib funktion anpassen. Lauft den AVR schnell gennung? Ich arbeite meist mit 16 MHz. Es kann sein wenn du langsamer drauf zugreifst, dass die Timings in meiner Lese und Schreibfunktion nicht stimmen. Gruss Bene
Mein AVR läuft zur Zeit mit dem internen RC-Oszillator bei 4MHz, Was das Timing betrifft, habe ich in deinen Schreib- und Lesefunktionen nichts gefunden, was über ein asm("nop") hinausgeht. Ich habe auch mal meine funktionierenden Schreib-/Leseroutinen da eingesetzt und es hat sich nichts geändert. Ich sollte aber erst mal die Sache mit dem Quarz vernünftig hinbekommen - der schwingt nämlich nur mit 8MHz. Gruß, Markus
Ah ok, dass ist natuerlich das erste mal was du schaffen musst. Ich hab meine bei csd-electronic gekauft. Die haben normale Grundton Quarze da. Beim bestellen sollte 24.000 MHz in der Artikel beschreibung stehen. Gruss Bene
Bei Reichelt gibt's nen smd-quarz als 24mhz grundton... den verwend ich zumindest. die von segor gehen auch... bei national kriegst du übrigens nach ner registrierung democode dafür...
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.