Jak resit bufferovani UARTU v MCU

Jakub Ladman ladmanj@volny.cz
Pátek Březen 24 13:25:34 CET 2006


Pro co to pisete? Asi budu mimo, ale mohl bych vam nabidnout svoji knihovnu 
pro AVR (puvodem od nejakeho fina), kterou jsem si prepsal aby fungovala se 
dvema U(S)ARTy a pridal moznost pouzivat DTR A DSR handshaking (iirc).
Prijem funguje v preruseni, je tam kruhovy buffer o definovatelne velikosti.
Pouziti je pak vice nez snadne. Napriklad to pouzivam i na prenos 800KB dat 
rychlosti 115200Bd a pritom je soucasne vypisovan pocet spravne prijatych 
znaku na lcd (tedy volitelne, protoze to s tim lcdckem desne brzdi :-()
Je to v avr-gcc.
Kdyby nahodou.
Jakub Ladman

Dne čt 23. března 2006 14:27 Dusan Dolezal napsal(a):
> Ja jsem to onehda resil taky, nejdriv jsem se tam implementoval s klasickym
> kruhovym bufferem, ale nakonec jsem se na to vyprdnul a mam tam buffery
> dva. Do jednoho se zapisuji prijate znaky v preruseni, pokud prijde znak
> konce protokolu, jeste v tom preruseni se cely buffer zkopiruje do toho
> druheho (to je bleskove) a nastavi se priznak prijateho protokolu. A nekde
> v hlavni smycce se potom tento priznak testuje a pokud je nastaven, zavola
> se podprogram pro jeho vyhodnoceni. A mezitim se muze v preruseni opet
> znovu psat do prvniho bufferu. Je ale treba podotknout, ze ja tam neposilam
> zadna dlouha data, ale jenom prikazy s nejakymi parametry, takze ten buffer
> ma tusim jenom 8 znaku, a navic to mam v 18F452, kde ja RAMky habakuk...
> :-)) Zatim to funguje bez problemu.
>
> Tohle ovsem neresi ten problem s pomalym zapisem do displeje, tam asi jine
> reseni nez kruhovy (a co nejvetsi) buffer nevymyslite. Proste ty data nekde
> schovat musite.
>
> Dusan Dolezal
>
> > -----Original Message-----
> > From: hw-list-bounces@list.hw.cz
> > [mailto:hw-list-bounces@list.hw.cz] On Behalf Of RV
> > Sent: Thursday, March 23, 2006 9:43 AM
> > To: HW-news
> > Subject: Jak resit bufferovani UARTU v MCU
> >
> > Zdravim,
> >
> > vcera jsem dopsal prvni pouzitelnou verzi serioveho
> > RS232->LCD s tim, ze
> > jsou implementovany zatim tri prikazy:
> >
> > 1C;  = vykonej prikaz urceny parametrem C seznam zde:
> >           '1':Lcd_Cmd(LCD_FIRST_ROW);
> >           '2':Lcd_Cmd(LCD_SECOND_ROW);
> >           '3':Lcd_Cmd(LCD_THIRD_ROW);
> >           '4':Lcd_Cmd(LCD_FOURTH_ROW);
> >           '5':Lcd_Cmd(LCD_CLEAR);
> >           '6':Lcd_Cmd(LCD_RETURN_HOME);
> >           '7':Lcd_Cmd(LCD_CURSOR_OFF);
> >           '8':Lcd_Cmd(LCD_UNDERLINE_ON);
> >           '9':Lcd_Cmd(LCD_BLINK_CURSOR_ON);
> >          '10':Lcd_Cmd(LCD_MOVE_CURSOR_LEFT);
> >          '11':Lcd_Cmd(LCD_MOVE_CURSOR_RIGHT);
> >          '12':Lcd_Cmd(LCD_TURN_ON);
> >          '13':Lcd_Cmd(LCD_TURN_OFF);
> >          '14':Lcd_Cmd(LCD_SHIFT_LEFT);
> >          '15':Lcd_Cmd(LCD_SHIFT_RIGHT);
> >
> > 2RSxx....x;  = vypis znaky x na radek R a od sloupce S
> > 3xx....x;  = vypis znaky x od aktualni pozice kurzoru
> >
> > chci jeste implementovat prikaz pro ovladani pipaku a zhasinani
> > podsvetleni displeje a hlavne jako prvni ridici znak adresu
> > displeje aby
> > slo vice displeju ovladat po jednom dratu.
> > **************************************
> > Kazdy prikaz je ukoncen znakem ; a zpracovan okamzite po
> > prenosu tohoto
> > znaku.
> >
> > S tim souvisi jedna nepekna vec, na kterou jsem prisel az
> > kdyz jsem psal
> > obsluhu displeje do programu k meteostanici. Kdyz poslu totiz
> > prikazy do
> > displeje hned po sobe tak o ten druhej prikaz prijdu, protoze v tu
> > chvili zpracovavam 24 bajtovy buffer (4 parametry a 20znaku) a nemuzu
> > cist UART.
> >
> > Premyslim jak to lze vyresit - zatim me napadla jen jedina vec -
> > rozsirit buffer na celej zbytek RAM (asi jeste 150B) s tim, ze tohle
> > proste nesmi pretect a implementovat jeste prikaz pro zpracovani
> > bufferu. Nechci totiz pouzit zadnou zpetnou linku z displeje.
> > Je jeste
> > nejake jine reseni? At dumam jak dumam nic me nenapadlo.
> >
> > RadekCX
> >
> >
> >
> >
> > _______________________________________________
> > HW-list mailing list  -  sponsored by www.HW.cz
> > Hw-list@list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> >
> >
> > ----------
> > www.icewarp.cz - Merak Mail Server
> > Zabezpeceny mail server pro Windows a Linux s Groupware.
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list