www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91sam7x: usb verwenden


Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einen schönen freitag morgen,

ich möchte die usb schnittstelle des at91sam7x als verbindung zu meinem 
pc verwenden. fullspeed wäre mein ziel, ein virtueller com port tuts 
aber auch (muss aber usb sein). leider tue ich mich sehr schwer damit 
auch nur einen einstieg zu finden. die dokumentationen (usb in a 
nutshell, atmel doku, div. foren & pages) hab ich durch, weis aber immer 
noch nicht wie ich die usb/ udp register zu beschreiben habe.

auch habe ich versuch mich in das usb framework von atmel ein zulesen 
aber auch hiermit komme ich nicht klar.

gibt es einen beispiel code oder ein usb programm das die grundlegenden 
eigenschaften hat & funktioniert?

danke

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo constantin,
du findest unter folgendem link ein beispiel-programm für einen 
seriell-usb umsetzer:

http://www.at91.com/package_patch_driver/at91sam7s...

und daraus das beispiel AT91SAM7S-USART_USB_SAM7S

gruss
gerhard

Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leider kann ich iar compalierte programme nicht lesen bzw in keil 
umsetzen; mir fehlt dazu die programmiererfahrung. trozdem danke für die 
antwort und den link.

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo constantin,
dann würde ich vorschlagen du siehst dir mal das beispeil-projekt von 
www.freertos.org an:

FreeRTOS\Demo\lwIP_Demo_Rowley_ARM7

Dieses examples setzt gcc voraus (wird meines wissens auch bei keil 
verwendet).
bei diesem example ist im gegensatz zum atmel code die usb-schnittstelle 
interrupt basierend.
desweiteren hast du gleich ein einfaches betriebssystem zur verfügung.

gruss
gerhard

Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi gerhard,

da fehlen mir drei header files:
/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"

die find ich grad in dem zipfile (FreeRTOSV4.1.3.exe) nicht.

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
in der .zip datei sind sie enthelnte und zwar im verzeichnis:
FreeRTOS\Source\include\

gruss
gerhard

Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jupp, hab ich gefunden. habs übersehen.
das programm läuft aber nicht wegen jeder menge fehlern( zB C25, C42 
usw) bzw warnungen.


Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also mit dem beispiel von iar mach ich nicht weiter; ist mir zu 
undurchsichtig. habe auf der atmel seite nach langem suchen nach dem 
passenden endlich etwas vielversprechendes gefunden...
http://www.atmel.com/dyn/products/product_card.asp...
 ist der link zur usb programmierung des SAM7SE. Das beispiel muss 
natürlich noch auf meinen sam7X abgeändert werden aber das compaliert 
(nach der änderung) schon fehlerfrei im  KEIL. muss jetzt nur noch den 
richtigen treiber für meinen pc finden... hoffe ich =)

Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab das programm soweit auf keil fehlerfrei laufen, mein pc erkennt aber 
leider nicht das "neue" usb device. laut programm sollte es als 
virtueller com port am pc sofort nach start des programms erscheinen und 
auch so genutzt werden können. die usb-treiber dafür sollten ab win98 
schon aufgespielt sein. sicherheitshalber hatte ich aber noch die 
aktuellsten treiber (atmusb6124.inf und -.sys) zusätzlich ein kopiert. 
im gerätemanager wird es aber weiterhin als fehlerhaft installiertes usb 
device amarkiert (mit und ohne (mit dem programm laufendem) 
eval.-board).

ist noch ein wenig seltsam, habt ihr noch tipps für mich?


mein pc: win2000 mit SP4, P4 (3,2GHz)

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo constantin,
wenn du das framework verwendest solltest du vielleicht mal die 
richtige.inf datei verwenden (6119.inf).

gruss
gerhard

Autor: constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da zu diesem beispiel die dokumentation fehlt bin ich von 
basicUSB-programm ausgegangen und dabei ist die 6124.inf/-.sys nötig. 
wusste nicht das dies beispiel auf dem framework basiert bzw. basieren 
soll; so weit gut, ich hatte in meinem inf verzeichnis auch noch die 
6119.inf die du meinst aber auch mit dieser kann ich das device nicht 
installieren.

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich kann das framework nicht erzeugen da ich nicht über die entspr. 
tools verfüge.
dem beispiel liegen aber binary dateien für alle at91samx-ek 
bei(verzeichnis: USBFramework-Core1.0+CDC1.0.zip\AT91 USB Framework - 
Core 1.0 + CDC 1.0\bin\).
wenn ich das für mich passende (AT91SAM7SEK_CDC.bin) in mein board lade 
(mittels sam-ba) und danach starte erkennt windows das board und 
verlangt nach einer .inf datei und danach nach dem passenden treiber 
(usbser.sys, ist der windoof standard treiber). danach wird das board im 
geräte manager unter den anschlüssen gelistet.

ich würde dir daher empfehlen mal mit dem fertigen binary zu beginnen.

betreffend doku: in doc6269.pdf findest du alle notw. infos.


gruss
gerhard

Autor: Constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,

also es war ein größeres problem; was mir bisher nicht aufgefallen war, 
ist dass das board selbst (nicht der JTAG) nicht vom gerätemanager als 
usb device erkannt worden war. kann nur vermuten das es am "swinging 
led" programm lag welches man beim "getting started" über samba ins 
flash spielt. aber nur ne vermutung. nun auch egal das das board mittels 
des programms (geändertes sam7SE prog) im flash und mit den treibern 
atm6124 endlich erkannt wird... juhu

nun die nächste frage: gibt es ein passendes terminalprogramm dafür? 
soll heissen auf meinem pc schreib ich werte in eine maske, die sendet 
diese an den controller und zeigt mir an welche daten der controller für 
mich am PC bereitstellt.

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und welches usb "packet" hast du jetzt eingesetzt?
das frameweork oder basicusb?

zu deiner frage:
wenn dein board sich richtig anmeldet, dann simuliert es jetzt eine com 
schnittstelle, an welceh du mittels terminal programm daten senden bzw 
empfangen kannst.

gruss
gerhard

Autor: Constantin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich nutze das basicUSB "paket"; mein board meldet sich einwandfrei als 
usb device (nicht als com port) an und ich kann auch ohne weiteres die 
AT91xxxBasicUSB.exe starten. bei der werden doch so weit wie ichs 
verstehe nur daten hinundher gesendet. wenn du diese exe meinst wie kann 
ich da daten gezielt senden? ist doch ne endlos funktion,oder? wo hol 
ich die daten am pc ab? wohin muss ich daten schreiben die ich an den 
controller senden will?

Autor: gerhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich habe die beiden usb examples vertauscht.

1) AT91SAM7S64-BasicUSART_USB-IAR4_30A-1_21:
simuliert eine com schnittstelle und setzt den windows standard treiber 
usbser.sys ein


2) AT91SAM7S64-BasicUSB-IAR4_30A-1_21:
bei diesem projekt wird eine com schnittstelle simuliert wenn du 
atm6124ser.inf einsetzt.

wenn du die atm6124.inf einsetzt dann wird eine spezieller atmel treiber 
(atm6124.sys) installier tund du kannst aus deiner appliation über die 
usblibrary.dll auf die usb schnittstelle zugriefen.

die ganze info dazu findest du im dokument doc6213.pdf (lesen bildet!).

um die sache ein bischen zu erschweren würde ich dir aber von diesen 
beiden examples abraten und dir das neue framework ans herz legen.

grund:
1) atmel hat sich von den beiden examples schon verabschiedet (sind auf 
der atmel homepage nicht mehr zu finden)
2) die beispiele sind device-seitig (am at91sam7) nicht 
interrupt-basierend sondern die usb schnittstelle wird gepollt. wenn du 
eine ernsthafte datenrate auf der usb schnittstelle erreichen möchtest 
und der at91sam7 außer ubs auch noch was anderes zu tun hat dann ist 
eine interrupt basierende lösung (wie das framework ein ist) notwendig.
3) alle lösungen, die auf usbser.sys aufbauen kannst du vergessen sobald 
du höhere datenraten erreichen möchtest. such im google mal nach dem 
treiber und du wirst wissen warum.


gruss
gerhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.