ATmega32U4, CDC a maximální rychlost

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

ATmega32U4, CDC a maximální rychlost

Příspěvek od Dex » 24 črc 2019, 13:39

Zdravím,

měl bych tu ke konzultaci jednu takovou věc :-)

ATmega32U4 (na 16 MHz), která je použitá např. v Arduino Leonardo, podporuje CDC (sériák "zapouzdřený" do USB).

Jakou rychlostí to může běžet respektive jak to pak funguje s nastavením rychlosti přenosu?

Pročítám různé diskuze a moc moudrý z toho nejsem. V podstatě mi jde jen o to, jak prostřednictvím CDC komunikovat s Arduinem z nadřízeného systému (např. PC) rychleji než klasických 115k2 a navíc se i vyhnout nutnosti instalovat ovladače na PC (to elegantně řeší to CDC).

Máte s tím někdo nějakou praktickou zkušenost? ;)

Díky!
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Uživatelský avatar
fulda
Příspěvky: 1033
Registrován: 04 led 2016, 17:18

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od fulda » 24 črc 2019, 15:26

takhle - pokud z toho nemáš potřebu dostat ten sériák, tak CDC ti tam nasype data až 12mbps.
Používám to u vláčků celkem často - PC si myslí, že komunikuje do sériového portu, ale nic ho nenutí dodržovat nějakou konkrétní rychlost - vhodí znak do bufferu a když je v bufferu volno, přidá další. Na druhé straně je aplikace, která si odebírá znaky - jak rychle to dělá je každému jedno.
Ty příkazy pro nastavení přenosové rychlosti jsou v případě CDC jen něco jako "pro pobavení veřejnosti".
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od Dex » 24 črc 2019, 15:37

Mno vlastně sériák asi nepotřebuju respektive v PC se to tak asi bude předpokládám tvářit, ale není mi jasné jak nastavit rychlost na neurčito :-)

Co jsem se koukal, tak inicializace v Arduinu v tomto konkrétním případě postrádá definici rychlosti, ale co tedy nastavit na PC, aby to bylo správně?

Je to prostě takové matoucí :)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Uživatelský avatar
gilhad
Příspěvky: 204
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od gilhad » 24 črc 2019, 16:04

IMHO to nastaveni rychlosti, parity a tak je tam kvuli spravnemu nastaveni HW, aby se domluvil se stejne nastavenym HW na druhe strane (pokud by se to nedelalo bit bangem, tedy SW posilanim nul a jednicek na nejake piny, tam by to pak nastavovalo tu SW vrstvu).

Jelikoz USB na takoveto veci nehraje a prenasi packety jak se mu zamane, tak kdyz to jde prez USB, tak je na kazde strane buffer a ten je bud prazdny, nebo plny, nebo je v nem nejake misto a na prenosove rychlosti kasle. Takze i na PC by ovladac takovehoto seriaku mel na nejake rychlosti kaslat a proste se ridit aktualnim stavem bufferu. Cili bud by nemel vubec mit moznost tu rychlost a spol nastavit (neni policko, kam to napsat), nebo pokud policko/parametr je, tak by ho mel ignorovat, protoze ten HW uz stejne vic nenastavi a stim na druhe strane se domluvi. Takze pokud to chce zadat nejake hodnoty, tak by melo byt jedno, jake konkretni tam zadas, protoze je ovladac stejne zahodi, neb je nema kam dat.

Uživatelský avatar
fulda
Příspěvky: 1033
Registrován: 04 led 2016, 17:18

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od fulda » 24 črc 2019, 16:50

Dex píše:
24 črc 2019, 15:37
Co jsem se koukal, tak inicializace v Arduinu v tomto konkrétním případě postrádá definici rychlosti, ale co tedy nastavit na PC, aby to bylo správně?
Budeš se divit, ale klidně si tam nastav co chceš. Prostě: program něco nastaví, USB to pošle do CDC a tam se to zahodí. Celá komunikace pojede na rychlosti "jak to USB zvládne" a nebo "jak bude aplikace v MCU odebírat data". Ten znak má pro CDC jen informativní charakter a slouží pro to, aby jsi si nastavil správnou rychlost na modemu.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od Dex » 24 črc 2019, 21:46

Hmm tak jak mi přijde hardware, vyzkouším, je-li to opravdu tak snadné :) Zatím díky!
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Uživatelský avatar
fulda
Příspěvky: 1033
Registrován: 04 led 2016, 17:18

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od fulda » 25 črc 2019, 08:25

Kdyby jsi to chtěl zkoušet na nějakém opravdickém procesoru, tak mám celou řadu realizací na PIC18F14K55 (prodává se zlevněná verze pod označením MCP2200)
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od Dex » 25 črc 2019, 08:41

Když já se té mimozemské techniky, což PICky jsou, bojím ;)

V čem se to vlastně dnes programuje? Dřív (více jak 10 let) byl potřeba programátor a ASM. C bylo jen za těžké prachy ;)
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Uživatelský avatar
fulda
Příspěvky: 1033
Registrován: 04 led 2016, 17:18

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od fulda » 25 črc 2019, 09:59

Programuje se normálně, existuje několik verzí C, některé zadarmo, jiné za peníze, existuje na to micro pascal a micro basic, ale nemám ani tušení, jestli jsou použitelné.
Nevím, jestli existuje gcc, to jsem nezkoumal
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

Uživatelský avatar
Dex
Administrátor
Příspěvky: 1263
Registrován: 16 úno 2013, 14:26

Re: ATmega32U4, CDC a maximální rychlost

Příspěvek od Dex » 25 črc 2019, 18:47

V čem to programuješ ty? ;) A jsou k dispozici knihovny na základní věci? Tohle je asi na jinou diskuzi, ale budu si o tom muset něco načíst, protože doba asi dost pokročila :D
"all your robots are belong to us"
robodoupe.cz | rxd.cz | codetory.cz

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host