AVR a dva seriaky

Jan Waclawek konfera@efton.sk
Čtvrtek Prosinec 11 23:24:13 CET 2008


>>> Ten sw uart na ktery jsem posilal odkaz je v C.
>
>>No a?
>>To musite vsetko kopirovat z netu?
>>Ziadna vlastna iniciativa?
>
>Krivdite mi. To ze se na neco ptam jeste nemusi apriori znamenat ze s tim 
>nic nedelam.

No a kde su teda vysledky?


>Ptam se proto, ze se chci vyvarovat "zbytecnych" slepych ulicek. Tedy presne 
>receno
>nechci travit cas tim ze to budu muset cele predelavat. Volneho casu mam 
>malo a toto je vec pro volny cas.

Ak sa chcete nieco naucit, tak bohuzial, musite obetovat cas.


>Myslim ze vite, ze jsem se tu pred par dny ptal na linkovani asaku k C
>a to bylo prave pro prepsani sw uartu :-) Takze snaha byla a stale je.
>Prace je na projektu spousty, takze uarty jsem zatim "neresil" a jedu s tim 
>co jsem nasel.
>Nechat to tak nechci, chystam se to resit, tak si rikam "zeptam se 
>zkusenych", nic vic v tom nehledejte.
>A sup, dostanu za ucho. :-) Nechci od nikoho aby mi poslal hotovy ASM 
>zdrojak. :-)

No, dakujem pekne! ;-)

Pozrite, na vojne dostali bazanti (za mojich cias sa hovorilo "mysi") vzdy na zaciatku poriadne nalozene. Ono to ma nieco do seba, aj ked nic horsieho som zatial nezazil (teda parkrat mi este trhali zuby... ;-) )


>
>>Kam to spejeme...
>
>Ja se ucim, je to muj prvni vetsi projekt s Atmega. Speju k tomu, ze musim 
>uspokojive vyresit 2. uart
>a to bez minulych zkusenosti.  :-)
>


Nikto z nas mudry z neba nespadol. Ti, co spadli, uz tazko podaju o svojej mudrosti dokaz...


>>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?
>
>Dobre. Diky za radu.
>Beru a pisu si to za usi. Jen poznamenam, ze jednu z prvnich veci co jsem 
>zkusil je, ze jsem
>kouknul jak to gcc ten kod vygeneroval. Cekal jsem toho tam mnohem vic, 
>nebyla to takova hruza.

Nejde o to. Ide o to, ze to neovplyvnite. Zmeni sa nieco uplne ine, a vsetko je inak. Typicky problemy nastavaju, ked sa meni verzia kompilatora, napriklad. Kolega kvoli tomu udrziava avr-gcc prehistorickej verzie 3.volaco; 4.volaco totiz generuje pri vsetkych moznych nastaveniach vsetkych moznych prepinacov z toho isteho zdrojaku o 10% vacsi kod, co by nevadilo, keby to nebolo treba ako upgrade do existujuceho produktu.

A ani o toto az tak velmi nejde. Ide najma o princip. To je presne ako ten nas DVD prehravac (podotykam, znackovy a drahy - kupovala ho manzelka, je by som za to tie peniaze nedal ani nahodou ;-) ), na ktorom stlacim tlacitko OPEN, sekundu sa NIC nedeje, potom sa rozblika na displeji OPEN a dalsie tri sekundy sa nic nedeje, ani ked tam nie je disk alebo tam je a stoji (t.j. sa neda vyhovarat, ze treba brzdit). Tipujem, ze niekto napisal:

for (i = 0; i < 100; i++) {
  printf('O P E N');
  delayms(100);
  printf('       ');
  delayms(100);
}
a potom nasleduje otvorenie dvierok.


A ide o ucel. Kebyze sa jedna o nejaky diagnosticky port, na ktory sa raz za rok pripoji clovek s laptopom, aby zmenil nejaky parameter, Boh s nim, nech je aky chce, "na 19200 staci aj C" ako tuna pan kolega napisal. Ale ak to ma byt akotak seriozne, tak to treba spravit dobre a punktum.

>Je mi ale jasne ze asm je asm a pokud se rozhodnu to s sw uartem udelat, 
>prepisu to do nej.
>


>>No ak mate problem s tym konkretnym asemblerom, tak si to napiste *cele* v 
>>nejakom asembleri ktory Vam >je pristupnejsi. Co je konkretne ta aplikacia?
>
>Tak do toho uz nejdu. Dekuji, nechci. Par vetsich veci jsem psal na '51 (8KB 
>v asm je pro mne dost),
>a ted, kdyz jsem si cuchnul k cecku, jiz nikdy jinak. Chci jedine C + nutne 
>veci v ASM.


Mno, mozno robite chybu.

---

Takze moznosti su: http://www.8052.com/faqs/124758 (je to '51 ale podstata je ta ista)

Najlepsie je ucit sa od majstrov: http://home.tiscali.de/peterd/avr/soft/uart/index.htm (toto je varianta s jedinym casovacom, ktory vzorkuje na 4x baudrate - je tam aj uvedena "spotreba zdrojov": "The software UART need 7 register and 30% of CPU time on 38.4kBaud at 11.0592MHz." Toto je fullduplex. Ak mozete obetovat aj externe prerusenie na spustanie Rx, a naviac staci halfduplex, tak tie naroky pochopitelne klesaju.

Asembler, ktory ide linkovat ku gcc je ten, ktory gcc pouziva: avr-as , derivat as (gas): http://sourceware.org/binutils/docs-2.19/as/index.html http://sourceware.org/binutils/docs-2.19/as/AVR_002dDependent.html#AVR_002dDependent

-----

V tom povodnom maili pisete, ze chcete hw uart na tu stranu '485, kvoli casovaniu. Ta strana bude aj vysielat, alebo len prijimat? Ako to uz viaceri kolegovia pisali, je vhodnejsie dat hw uart na tu rychlejsiu stranu. Ak ten sw napisete v asm, casovanie bude urcite dostatocne presne.

wek




Další informace o konferenci Hw-list