Forum: Mikrocontroller und Digitale Elektronik Geräde ID ohne FDTI


von Maik G. (maik_l)


Angehängte Dateien:

Lesenswert?

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
wünschen

: Bearbeitet durch User
von Kaj (Gast)


Lesenswert?

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.

von Noch einer (Gast)


Lesenswert?

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.

von Maik G. (maik_l)


Lesenswert?

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.

von Kaj (Gast)


Lesenswert?

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?

von Noch einer (Gast)


Lesenswert?

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.

von Maik G. (maik_l)


Lesenswert?

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

: Bearbeitet durch User
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.