Frage zur read-Funktion (USB) beim Atmel Software Framework

Gast #2842359
Lesenswert?

Hallo,
ich habe eine kleine Frage zur Funktion
"udi_cdc_read_buf(int* buf,iram_size_t size)" des USB services beim 
Atmel Software Framwork.
Liest diese Funktion so lange auf dem USB-Bus bis sie "size" Zeichen 
gelesen hat und blockiert solange. Oder liest diese Beim Aufruf die 
vorhandenen Zeichen im Puffer bis maximal der Anzahl "size" bzw. wenn 
weniger vorhanden sind, dann eben weniger und beendet den Lesevorgang 
danach sofort?

Wäre nett, wenn mir weiterhelfen kann.

Gruß Kevin
Gast #2842364
Lesenswert?

Timmo H. schrieb:
> Guckst du Quellcode:
> 
http://asf.atmel.com/docs/2.6.1/common/services/usb/class/cdc/device/example/atxmega256a3bu_xmega_a3bu_xplained/doxygen/html/a00124.html#gaa7374616de8bc3a83de3f1884b56fa39

Danke für den Link! Also so wie ich das verstanden habe wartet er in 
einer Schleife so lange, bis genügend Zeichen da sind, die er lesen 
kann, die Funktion blockiert also!
Gast #2842382
Lesenswert?

Wenn ich noch kurz eine Frage anhängen dürfte: gibt es im ASF eigentlich 
eine definierte Funktion für eine "Pause" also etwas wo der 
Mikrocontroller einfach nur Zeit verschwendet, aber Interrupts aktiviert 
bleiben. Ich weiß man könnte auch einfach eine Schleife programmieren, 
aber ich weiß nicht ob die vllt vom Compiler wegoptimiert wird und eine 
genaue Zeitspanne ist damit auch schwierig zu definieren...
Gast #2842431
Lesenswert?

Kevin M. schrieb:
> Wenn ich noch kurz eine Frage anhängen dürfte: gibt es im ASF eigentlich
> eine definierte Funktion für eine "Pause" also etwas wo der
> Mikrocontroller einfach nur Zeit verschwendet, aber Interrupts aktiviert
> bleiben. Ich weiß man könnte auch einfach eine Schleife programmieren,
> aber ich weiß nicht ob die vllt vom Compiler wegoptimiert wird und eine
> genaue Zeitspanne ist damit auch schwierig zu definieren...


Falls noch jemand danach suchen sollte, ich habe gerade gesehen, dass 
das ASF dafür einen eigenen Service namens "Delay routines" 
bereitstellt. :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren