AVR a dva seriaky

Lukáš Grepl L.Grepl@sh.cvut.cz
Pátek Prosinec 12 09:59:05 CET 2008


> To je dobra blbost s tym vobec nieco robit. Este raz opakujem, v C sa
> o SW UART pokusaju len diletanti. Ak pisete nejaku hracku na vlastne
> potesenie, no prosim; ale ak to ma byt produkt predavany za peniaze,
> tak to snad bude lepsie urobit poriadne, nie?

Nějak mi není jasné, proč by to nemohlo být v C a zároveň pořádně. Možná 
to bude o 10 nebo 20% pomalejší (ve smyslu maximální dosažitelné 
rychlosti), ale jinak v tom nevidím větší problém. Jde o to JAK to 
člověk napíše a ne v čem.

V C se to dá asi snadněji zprznit, když člověk neví co dělá. Pokud někde 
vidím

void delay()
{
	int i;
	for (i = 0; i < 100; i++)
		;
}


tak mi taky vstávají vlasy na hlavě. (Když už pro nic jiného, tak tam 
chybí dost podstatné klíčové slovo volatile - takhle napsáno to nemusí 
čekat ani instrukci, pokud je překladač dostatečně optimalizující). Ale 
když napíšu ten SW UART v C s využitím přerušení, časovačů, SPI nebo 
všeho možného co už tu zaznělo, proč by to mělo být apriori diletantské 
řešení?

Psal jsem např. nedávno principiálně obdobnou aplikaci - přesné měření 
malých frekvencí pro PIC. Je to kompletně v C (důležitá část asi 
20řádků), ale využívá to samozřejmě pro primární měření patřičný HW, 
takže při 5MIPS to funguje v rozsahu nějakých 0.1Hz (nebo i méně) do 
50kHz s časových rozlišením 200ns. Možná by to v ASM měřilo do 70 (a 
možná bych to psal dvakrát tak dlouho), ale proč, když potřeba bylo 
řekněme 10 a řešení v C plně vyhovuje?

Lukáš Grepl



Další informace o konferenci Hw-list