Jak naprogramovat jeste jednu RS232 u AT89C2051

Jan Pruha Jan.Pruha
Středa Březen 17 12:02:44 CET 2004


Trochu jsem nad tim premyslel. Myslim ze by to slo. Pri rychlosti 9.6 kbit
trva jedem bit cca 104us, takze dost casu. Problem je, ze to urcite sezere
druhy casovac a jedno externi preruseni, takze toho z 2051 moc nezbyde.
Taky by to chtelo pohrat si s prioritama.
Resil bych to asi takhle:
- druhy RxD na INT0 (druhy TxD kdekoli)
- povolene preruseni od INT0, casovac 0 v autoreload modu TL0 = (255-104)
TH0 = (255-208) /*predpokladam  24MHz krystal*/
- casovac zastaveny (TR0 = 0)
- pri prichodu startbitu (generuje se preruseni 0) spustim casovac (TR0 =
1) a zakazu preruseni (EX0 = 0)
-prvni preruseni od casovace se mi generuje zhruba v polovine startbitu a
kazde dalsi pak v polovine jednotlivych bitu, cili do obsluhy preruseni si
hodim nejaky citac (bitorder) a pak pokud 0 < bitorder < 9 tak nasouvam
jednotive bity do bufferu.
-pri bitorder = 9 mam hotovo, tak si nastavim nejaky priznakovy bit o
prijatem znaku a vsechno uvedu do puvodniho stavu (bod 1-3)

Vysilani by melo byt jasne. Mozna by slo udelat aby to bylo i full duplex,
ale to uz by chtelo trochu se nad tim zamyslet.
Pokud se doberes nejakych vysledku, dej vedet. Docela by me to zajimalo.

Honza






Další informace o konferenci Hw-list