www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CDC USB Echo Programm für AT91Sam7s


Autor: Matze Müller (Firma: Student Informatik) (maze)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe das CDC beispiel aus dem USB Framework so umgestellt das man 
jetzt mit den Terminal von pc aus genau das zurück bekommt was man 
absendet!
1.)
Das Problem ist aber noch, dass ich immer eine feste länge von 10 bytes 
zurückgebe, und ich einfach nicht weiß wie ich herausbekomme wie viele 
zeichnen gesendet wurden (von terminal aus).

der main loop sieht jetzt so aus!
    // Main loop
    while (1) {
      
       bStatus = SER_Read(&sSer,pUsbBuffer,USB_BUFFER_SIZE,0,0);

              if ( pUsbBuffer[0] !=0x00 && bStatus != SER_STATUS_SUCCESS){
                        bStatus = SER_Write(&sSer, pUsbBuffer, 10, 0, 0);
                 
                        //echo complete set buffer back to default state
                        clearBuffer(pUsbBuffer,USB_BUFFER_SIZE);
                 }
    }
2.)
des weiteren verstehe ich nicht wirklich was mir  "bStatus" sagen soll.
Ich dachte das bei einem erfolgreichen Transfer (zb. es wurde etwas 
gelesen) diese gleich "SER_STATUS_SUCCESS" =0x00 sein müsste??
dann wäre die if Bedingung aber falsch und müsste dann heißen
 if (bStatus == SER_STATUS_SUCCESS)

und man müsste den Buffer nicht löschen .
Es passiert aber Garnichts, wenn ich es ändere, ausserden kann ich auch 
nicht verstehen warum das feld "pUsbBuffer" static sein muss!!
static unsigned char pUsbBuffer[50];

vielleicht hat jemand sowas ähnliches schon mal gemacht und könne mir 
sagen  was ich ihr nicht verstehe???? wäre unheimlich nett

Autor: Potter S. (potter68)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matze,

eine Möglichkeit, die Datenlänge zu bestimmen ist die, daß Du ganz 
einfach im ersten übertragenen Byte die Datenlänge sendest.

Der Buffer muss static oder global sein, da ansonsten der Speicher nur 
temporär reserviert wird und die Daten deshalb verloren gehen.

Gruß Ralf

Autor: maze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort,
ich habe noch eine variable gefunden die mir sagt wie lang der 
empfangende Datensatz ist in der udp.c aber wie gelesen wird ist mir 
noch nicht ganz klar, wahrscheinlich durch ein Interrupt, weil wenn ich 
die Funktion USB_read() aufrufe sind die Daten immer erst nach (zweiten 
durchlauf) zu sehen in buffer

vielen dank

Autor: Al pacino Deniro (bigmicro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello friends,

Can you send me an example if your usb project?
I compiled USB framework-CDC and flashed it to my micrcocontroller 
(AT91SAM7A3) and it works al fine. I use Hyperterminal to send data via 
Virtual COM to my microcontroller with USB connection. And my 
microcontroller sends it to my pc and with another terminal I can see 
the received data.

But when I try to use those usb framework files in my own project, it 
hangs. When I connect the usb to my pc, I get the following result:

Main CDC Serial
Init()
Attach(1) Connecting ... Hlr Susp
OK
Hlr Res
Hlr EoBRes CfgEpt0
Hlr Res
Hlr EoBRes CfgEpt0
Hlr EoBRes CfgEpt0
Hlr EoBRes CfgEpt0

I've checked everywhere in the sources to find something missing, but 
couldn't find a bug or something.

So if somebody is using IAR EWARM 4.41A with USB for the SAM7 serie. 
Please tell me how you do that. I guess I'm not so experienced like you 
guys, so please help me if you can.

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.