Chtěl bych se naučit programovat uC

31250 na PC nespravis, aspon nie na beznej RS232 a to z toho dovodu, ze
max. rychlost 115200Bd vznika celociselnym delenim preddelica v UARTe PC. Kedze 115200/31250 nie je cele cislo, nie si schopny v PC prednastavit taky deliaci pomer, ktory by ti generoval rychlost 31250.
Komunikacne rychlosti sa od seba nemaju lisit o viac ako o +/-1(2)% A inu taku blizku prenosovu rychlost sa Ti nepodari nastavit. Mozno, ak by si mal port s max prenosovou rychlostou 921600Bd (mozno nejaky prevodnik USB/RS232 ) a tu by si vedel vydelit cislom 30 (30720Bd), tak sa dostanes na vzdialenost okolo 2% k Tebou pozadovanej rychlosti.

Martin

Ten prevodnik, co doporucoval Jan16, by som ani neskusal. Za urcitych okolnosti a pre niektore RS232 fungovat moze, ale absolutne nedodrzuje normu, ktora hovori, ze napatie na RS232 ma mat hodnoty +/-3V az +/-12V. Prevodnik podla Jan16 zabezpecuje na strane RS232 napatie iba v rozsahu 0 az 5V. Kladna hodnota je OK, ale kedze na vstupe RS232 nie je zaporne napatie, nemusia s tymto zapojenim pracovat vsetky RS232.
Ta MAX232ACPE stoji v TME 18.31Ck bez dane a to iste pod nazvom ICL232 len 7.28Ck bez dane v TME. Oba typy v DIL puzdre. A to fakt nestoji za problemy oproti scheme, kde ani nie su odpory medzi bazou a emitorom.

Martin

Martin: Jsem konzervativní a mám své hardwary rád a tak jsem vzal radu o zkoušce přes COM port ale převodník udělal z MAXe (MAX232). Pro monitorování MIDI teď používám MIDIOX ale třeba narazím (nebo někdo jiný a sem to napíše) na soft, co by MIDI linku dokázal monitorovat ale zobrazovat veškerou komunikaci, nejen tu korektní. Pavel

jj, ten soft umí (měl by) umět jakoukoliv baudrate. Nevim jak si přišel na výpočet 115000/ něčim. Kde by se pak vzaly rychlosti 128000, 256000 a podobně??

To moje tzapojení jsem úspěšně vyzkoušel na: mym PC (deska p5kr asus), na noťasu, na stááárym noťasu, na mym bejvalym PC (deska asus, typ nevim), na 4 starých kompech (~ pentium I), a na jednom školnim PC, kde jediný co vim je že procík má celeron. Všude bez problémů. Vím že má nedostatky, ale zřejmě to nevadí. SPíš bych byl rád, kdybyste někdo přinesl zprávu, že na tomto “stroji” to nefachá a podobně. Aspoň budu moct upozornit včas předem.

Je sice hezký vymlouvat se cenama na tme, ale kolik to vyjde i s poštou? To si pro toho maxe radši dojdu do gme, za mnohonásobně vyší cenu. Navíc ten MAX232 prý selhává při rychlostech nad 115kbps. A já používám rychlosti 19200 (u x51 kontrolérů, tam to stejně o moc víc nejde) a u AVR jsem již zkoušel rychlosti mnohonásobně vyšší, i přes 115kbps. - mám pro to využití.

Ak nevies, ako som prisiel na podiel 115200/n, kde n je cele cislo

pozri si popis nastavovania UARTU v PC

lammertbies.nl/comm/info/serial-uart.html

tam sa tiez uvadza, ze aj v sucanych kompoch pri lepsej suciastkovej zakladni sa dodrzuje kompatibila s 8250.

Nestretol som sa a ani o tom neviem, ze by nejaky bezny komp vedel generovat ine Bd rychlosti ako 115200/n kde n je cele cislo.
To na vsetkych tvojich strojoch vies generovat taketo exoticke frekvencie?

K zapojeniu. Ako som uviedol, netvrdim, ze to nebude fungovat. Ale nie je to v sulade s normou a preto nie je garantovane, ze to bude fungovat vzdy.

popis definicii najdes

rs232.hw.cz/#UART

S tym postovnym mas samozrejme pravdu.
Ak uz z tohto dovodu trvas na zapojeni s tranzistormi, existuje take, ze z RTS a DTR sa spravi cez odpor zaporne napatie pre RX RS232 a tranzistor ovladany inverzne z TX od TTL casti spina k +5V. Tym je norma dodrzana a prevodnik bude fungovat s kazdym zaraidenim, ktore ma RS232 implementovanu. Nemusi sa vzdy jednat o PC, ale aj o rozne specializovane zariadenia.

Kedze vacsina prenosov su typu halfduplex, ako zdroj zaporneho napatia pre RX RS232 sa da vyuzit samotny TX z RS232, ktory cez diodu nabija kondenzator (1-10uF). Zaporne napatie na tomto kondenzatore potom sluzi ako hore spomenute DTR, pripadne RTS a netreba sa bat, ze linka nepojde, lebo sa zabudli nastavit spravne urovne tychto signalov.

Obe zapojenia mam vyskusane.

Tranzistorove zapojenia vsak maju este nevyhodu v relativnej pomalosti, respektive cena za vyssiu prenosovu rychlost je vo vacsej spotrebe. Ak tranzistor zopne, hrana je strma. Pri jeho vypnuti sa musia nabyt parazitne kapacity cez kolektorovy odpor tranzistora. Aby sa to stihlo vcas, musi byt hodnota tohto odporu nizka. Cim vyssie prenosove rychlosti, tym nizsi odpor. Ale to pre prenosove rychlosti do 19200Bd nemusi byt velmi obmedzujuce ak zariadenie nie je dlhoodobo napajane z baterii.

Tento problem sa da obist v scheme uvedenej od Jan16 pouzitim dvoch invertorov a na vstup pre TX z PC staci dat cez 100R odpor zenerovu diodu 5V1 (4V3). Prenosova rychlost bude omnoho vyssia pri nizsej spotrebe. Zapojenie s tranzistormi vsak na prvy pohlad budi dojem jednoduchosti pre bastlenie, tak proti gustu ziaden disputat. :slight_smile:

Martin

Kdyz napisu programek v C#, muzu si na uartu nastavit libovolnou rychlost, otazkou ovsem je, zda ji to bude skutecne vyuzivat…

Tyhle exotismy jsem zkoušel akorát na novějšim noťasu (13 let styrý ;-P) a na mym kompu - na tomhletom, kde tedka sedim. Úplně bez problému. KDyž už mluvíš o strmosti hran, tak ne, fakt neni problem. Oproti těm tranzistorum je ten MAXik pomaly. Tyhle BCčka jedou bez problému na desítkách až stovce a o něco víc MHz, a hrany jsou celkem snesitelně “ostré”. Řikal si připojit před to invertor? Zkoušel si se někdy podívat na to, co leze za zákmity třeba z 74HC00, když na vstup přivedeš třeba 1MHz z generátoru? No FUJ… To radši ten tranzistor…

Ad ta spoecifikace UARTu - ta je pěkně sjetá a stará. Mluví se tam o AT počítačích, kdo má tenhle vynález ještě doma, a používá ho? (já mám, a o víkendu vyzkoušim, a vsadim se, že půjde nastavit rychlost jakákoliv, a půjde nastavit i víc než 115kbps) Navíc popis je zaměřený na nějaký konkrétní obvod 16550, který pochybuju, že bych ho v nějakym PC dneska vůbec našel.
Kompatibilita se sice zaručuje (staré se zachovává), ale nic nebrání tomu, dělat rozšíření (vylepšuje se), používat vyšší rychlosti, lépe rychlost měnit, a podobně.

EDIT: Tak jsem to prohlédnul pořádněji, a :
četl si například tuhletu větu?
“Modern UARTS like the 16550 are capable of handling higher input frequencies up to 24 MHz which makes it possible to communicate with a maximum speed of 1.5 Mbps.”
A zdá se že ten “16550” neni zas až tak starej obvod…
Na jednom elektro webu měl kdosi konstrukci, která s kompem přes RS232 táhla data rychlostí 2Mbps - jakási externí zvukovka… Takže je vidět, že dneska ty rychlosti jsou ještě výš…

EDIT 2: Věnuji se taky programování na PC, mám tu knihovnu pro práci s RS232 na kompu - SYNASER, rozpitval jsem zdrojáky knhovny, a rychlost lze zvolit až do 4MBps…

EDIT 3: Tahle věta taky vypovídá za vše:
“Note that these values only hold for a PC compatible system where a clock frequency of 1.8432 MHz is used.”
Dneska tam máš 133MHz (i víc) :wink:

JJ, to jsme na tom stejně, akorát já nedělám v C#, začínám s klasickym C, ale jinak programuju ve FPC.
J, tu rychlost by to mělo dodržet…

Taky myslim, ze to chodi bez problemu, mel jsem uz problem s komunikaci (a na docela nizky rychlosti - spatnej kabel) a musel jsem PC oproti MCU zpomalit asi o 5%… Nevim, co slo sejdrem, ale kdyz byl PC pomalejsi nez mcu, tak to bylo bez chyb. tohle jsem provadel jeste na Thunderbirdovi 1,2GHz.

Pisu ve visual studiu… Je to jedna z mala veci, za kterou muzu MS pochvalit. Ma to tradicne vybornej debuger. Doplnovani kodu v C# je proste parada. Express verze jsou dokonce zadarmo, u MS neuveritelna vec :wink:
microsoft.com/express/download/

FPC (FreePascal.org) taky neni nejhorší :wink: Dělám v tom s SDL, 3Dčko s OpenGL, a pokusim se do FPC portnout ODE (fyzikální engine pro 3D). Knihovny - používám klasické standardní co znáte… a nějaké navíc, například ten synaser, wingraph (ten už sem ale dlouho nepoužil), a další :slight_smile: Momentálně se snažim naučit Cčko :slight_smile: Konkrétně mám Dev-C :slight_smile: (>>FPC jako editor a vývojoivé prostředí používám Dev-Pascal :slight_smile: v tom je zahrnut i kompiler GNU pascalu/FPascalu )