Moin zusammen...
Ich habe hier schon mal einiges gefunden, aber die frage, die ich mir
eigentlich stelle.
Kann ich eine Geräde ID wie die z.B. bei einem FTDI verwendet wird
direkt in meinem ATMEGA16 einbrennen?
Wenn ja, wo wäre es eine Empfehlung diese zu einzutragen, damit ich
A) den EEPROM nicht unnötig fülle, da dieser mit 512byte voll ist und
B) via Lunix schnellen Zugriff auf die Daten habe, damit dieser mir z.B.
als ttyS40, ttyUSB2 bzw ttyAMC1 angezeigt wird.
Warum ich keinen FTDI verwende?
die Beispielschaltung auf welcher ich aufbaue, arbeitet ohne.
Im Zweifelsfall werde ich wohl doch auf einen FDTI erweitern müssen,
dies wollte ich aber vermeiden wenn es geht, da ich sonst gleich alles
in SMD machen kann und damit soll gewartet werden, bis ich auf das GROßE
projekt umsteige (in 4 bis 6 Monaten)
Was ich z.Z. via Console erhalte ist nur folgendes...
1
[125944.029360] usb 3-1: device descriptor read/64, error -71
2
[125944.245322] usb 3-1: new full-speed USB device number 26 using xhci_hcd
3
[125944.247802] usb 3-1: Device not responding to setup address.
4
[125944.451833] usb 3-1: Device not responding to setup address.
5
[125944.653237] usb 3-1: device not accepting address 26, error -71
6
[125944.765419] usb 3-1: new full-speed USB device number 27 using xhci_hcd
7
[125944.767923] usb 3-1: Device not responding to setup address.
8
[125944.971856] usb 3-1: Device not responding to setup address.
9
[125945.173301] usb 3-1: device not accepting address 27, error -71
10
[125945.173458] usb usb3-port1: unable to enumerate USB device
würde mir aber eine aussage wie
1
[127216.498470] usb 1-1.1: USB disconnect, device number 13
2
[127309.646124] usb 1-1.1: new full-speed USB device number 14 using ehci-pci
3
[127309.761459] usb 1-1.1: New USB device found, idVendor=16c0, idProduct=2a9b
4
[127309.761473] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
5
[127309.761480] usb 1-1.1: Product: AVR-ISP
6
[127309.761486] usb 1-1.1: Manufacturer: ERFOS
7
[127309.762924] cdc_acm 1-1.1:1.0: This device cannot do calls on its own. It is not a modem.
8
[127309.762994] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
Maik G. schrieb:> damit dieser mir z.B.> als ttyS40, ttyUSB2 bzw ttyAMC1 angezeigt wird.
Das hängt davon ab, wie sich dein Device unter Linux meldet.
Ein Arduino meldet sich standardmäßig als ttyACM unter Linux, eine
vernünftige USB-UART Bridge wie die hier (
http://shop.in-circuit.de/product_info.php?cPath=38&products_id=80 )
meldet sich als ttyUSB
Maik G. schrieb:> Warum ich keinen FTDI verwende?
Du kannst einen FTDI nehmen, oder einen SiLab CP2102, oder einen ATMega
32u4 (so wie die Arduinos das machen), oder... doer... oder...
Maik G. schrieb:> Kann ich eine Geräde ID wie die z.B. bei einem FTDI verwendet wird> direkt in meinem ATMEGA16 einbrennen?
Ja
Maik G. schrieb:> den EEPROM nicht unnötig fülle, da dieser mit 512byte voll ist
Wenn der EEPROM voll ist, bleibt dir nur eine Konstante im Flash
abzulegen.
Maik G. schrieb:> [127309.762994]
Warum ist dein PC seit mehr als 35 Tagen am Stück an?...
Maik G. schrieb:> Was ich z.Z. via Console erhalte ist nur folgendes...> würde mir aber eine aussage wie [...] wünschen
Dann sorg dafür, das sich dein Gerät ordentlich beim System meldet...
> Device not responding to setup address.
USB braucht nicht nur die ID sondern auch noch passende Discriptoren.
Der Code für den Verbindungsaufbau ist auch nicht so einfach zu debuggen
- brauchen die Debuggingausgaben zu lange, bricht der PC mit einem
Timeout ab.
Besser wäre, du nimmst zunächst eine USB-CDC-Demo ohne jede Änderung.
Wenn Verbindungsaufbau und Echo klappen, ganz langsam einen Punkt nach
dem anderen anpassen.
Kaj schrieb:> Maik G. schrieb:>> damit dieser mir z.B.>> als ttyS40, ttyUSB2 bzw ttyAMC1 angezeigt wird.> Das hängt davon ab, wie sich dein Device unter Linux meldet.> Ein Arduino meldet sich standardmäßig als ttyACM unter Linux, eine> vernünftige USB-UART Bridge wie die hier (> http://shop.in-circuit.de/product_info.php?cPath=38&products_id=80 )> meldet sich als ttyUSB
und wie machen es welche in Code::Blocks mit AVRDUDE
> Maik G. schrieb:>> Warum ich keinen FTDI verwende?> Du kannst einen FTDI nehmen, oder einen SiLab CP2102, oder einen ATMega> 32u4 (so wie die Arduinos das machen), oder... doer... oder...
Will aber alle meiden, da ich mir einer Schaltung arbeite, welche ich
von hier als forlage habe nur an stelle eines m8 einen m16 verwende
> Maik G. schrieb:>> Kann ich eine Geräde ID wie die z.B. bei einem FTDI verwendet wird>> direkt in meinem ATMEGA16 einbrennen?> Ja>> Maik G. schrieb:>> den EEPROM nicht unnötig fülle, da dieser mit 512byte voll ist> Wenn der EEPROM voll ist, bleibt dir nur eine Konstante im Flash> abzulegen.
Ok...
Da weiß ich schon, wo ich platz machen kann und muß.
> Maik G. schrieb:>> [127309.762994]> Warum ist dein PC seit mehr als 35 Tagen am Stück an?...>> Maik G. schrieb:>> Was ich z.Z. via Console erhalte ist nur folgendes...>> würde mir aber eine aussage wie [...] wünschen> Dann sorg dafür, das sich dein Gerät ordentlich beim System meldet...>> Device not responding to setup address.
Genau aus dem Grund frage ich ja, damit dich das Teil richtig anmelden
kann...
Noch einer schrieb:> USB braucht nicht nur die ID sondern auch noch passende Discriptoren.
Welche ID ich verwende weiß ich schon. Habe ja noch ein alten defekten
USB Stick da liegen...
> Der Code für den Verbindungsaufbau ist auch nicht so einfach zu debuggen> - brauchen die Debuggingausgaben zu lange, bricht der PC mit einem> Timeout ab.
Danke für die Vorwarnung. Ehrlich gemeint.
> Besser wäre, du nimmst zunächst eine USB-CDC-Demo ohne jede Änderung.
hast du da ggf ein echt gutes Tut welches Plattformübergreifend arbeitet
und nicht nur auf Windows ausgelegt ist?
Ich finde nur welche für Win :@
> Wenn Verbindungsaufbau und Echo klappen, ganz langsam einen Punkt nach> dem anderen anpassen.
Der atmega16 hat aber kein usb-interface, folglich brauchst du einen
chip der das kann, oder du brauchst an deinem pc eine serielle
schnittstelle und einen rs232 wandler. Um einen extra chip kommst du
nicht wirklich rum.
Maik G. schrieb:> Noch einer schrieb:>> USB braucht nicht nur die ID sondern auch noch passende Discriptoren.>> Welche ID ich verwende weiß ich schon. Habe ja noch ein alten defekten> USB Stick da liegen...
Du hast nicht verstanden was gesagt/geschrieben wurde. Schau dir erstmal
an, wie usb funktioniert...
Maik G. schrieb:> und wie machen es welche in Code::Blocks mit AVRDUDE
Hä? Was hat eine IDE und avrdude damit zu tun, wie sich dein Device beim
OS meldet?
Du nimmst die ID aus einem USB-Stick? Das würde ja schon mal erklären,
warum Linux den Festplattentreiber statt dem Serial-Treiber startet.
Ich bleibe bei meiner Einschätzung. Die Zigtausend Seiten
USB-Spezifikation ignorieren. Gar nicht erst versuchen die Details
selbst zusammen zu puzzln.
Mit irgendeiner Demo anfangen, die Windows und Linux erzählt, sie wäre
ein "communications device class". Ganz egal, ob es exakt zu deinem
Problem passt. Hauptsache Windows und Linux machen eine serielle
Verbindung auf.
>Der atmega16 hat aber kein usb-interface
Gibt zwar eine V-USB Library. Aber damit bekommst du so viele
zusätzliche Probleme - einfache wäre du nimmst einen AVR mit
USB-Hardware.
Kaj schrieb:> Der atmega16 hat aber kein usb-interface, folglich brauchst du einen> chip der das kann, oder du brauchst an deinem pc eine serielle> schnittstelle und einen rs232 wandler. Um einen extra chip kommst du> nicht wirklich rum.
der m8 hat meiner meinung nach auch kein USB-Interface. oder lieg ich da
falsch??? Dennoch wird hier
https://www.mikrocontroller.net/attachment/65329/usb-io.png eine version
OHNE FTDI vorgeschlagen.
> Maik G. schrieb:>> Noch einer schrieb:>>> USB braucht nicht nur die ID sondern auch noch passende Discriptoren.>>>> Welche ID ich verwende weiß ich schon. Habe ja noch ein alten defekten>> USB Stick da liegen...> Du hast nicht verstanden was gesagt/geschrieben wurde. Schau dir erstmal> an, wie usb funktioniert...
noch habe ich diese nicht ausgelesen. war auch nur ein gedanke.
kann auch die eines ttyUSB0 gerätes verwenden, habe hier auch noch 2
oder 3 ttyUSB0 rumliegen...
> Maik G. schrieb:>> und wie machen es welche in Code::Blocks mit AVRDUDE> Hä? Was hat eine IDE und avrdude damit zu tun, wie sich dein Device beim> OS meldet?
Nun... nicht böse gemeint, aber deine Aussage
>> so wie die Arduinos das machen
deutet an, das jeder mit Arduino arbeitet.
wenn ich das falsch verstehe, dann sry.
Noch einer schrieb:> Du nimmst die ID aus einem USB-Stick? Das würde ja schon mal erklären,> warum Linux den Festplattentreiber statt dem Serial-Treiber startet.
s.o.
> Ich bleibe bei meiner Einschätzung. Die Zigtausend Seiten> USB-Spezifikation ignorieren. Gar nicht erst versuchen die Details> selbst zusammen zu puzzln.>> Mit irgendeiner Demo anfangen, die Windows und Linux erzählt, sie wäre> ein "communications device class". Ganz egal, ob es exakt zu deinem> Problem passt. Hauptsache Windows und Linux machen eine serielle> Verbindung auf.
finde nur nix sinnvollen, was Step-by-Step erklärt wird.
das was man findet liest sich so, als wäre es das leichteste der Welt.
>>Der atmega16 hat aber kein usb-interface>> Gibt zwar eine V-USB Library. Aber damit bekommst du so viele> zusätzliche Probleme - einfache wäre du nimmst einen AVR mit> USB-Hardware.
also 120 € einmal in die E-Tonne werfen.
i love it...