Toleranser på asynkron överföring?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Pjoms
EF Sponsor
Inlägg: 644
Blev medlem: 24 maj 2004, 12:18:40
Ort: Ö-vik

Toleranser på asynkron överföring?

Inlägg av Pjoms »

När man sätter upp USART:en i en uC, i detta fall PIC, så får man ju allt som oftast ett fel på kanske nå'n procent.
Så länge man ska kommunisera med en identisk enhet spelar ju felet ingen roll, men om man ska prata med nå't annat kan det bli lurigare.

Som exempel så skulle jag vilja köra en PIC16F876A i 115200 baud, och det minst dåliga då blir ett fel på -1,36% vid 20Mhz, enligt mina funderingar.

En viss tolerans finns ju, men finns det någon fastslagen max fel-procent som man ska hålla sig under för att vara säker?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det beror på mycket, men om man ligger inom +/- 1.5% på varje sida
så bör det vara lungt. Kanske upp till +/- 2%. Det beror även på
hur bra själva linjen är.

Eller välj en "bättre" kristall, t.ex 18.432 MHz vilket ger 0% fel vid 115 Kbaud.

Notera också att modernare PICs än den du har valt har ett 16-bitars
SPBRG register. T.ex 16F886 ger ett fel på 0.94% vid 20 Mhz.
limpan4all
Inlägg: 8460
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Inlägg av limpan4all »

Tja om man tar det hela teoretiskt.
Startbit+8databitar+stoppbit summa 10 bitar.
För att den sista biten skall vara säker måste baudrate ligga inom 10%.
För att avläsningen skall ligga med majoritet hög skall minst 50% av den ligga rätt då hamnar vi på 5% och om två enheter skall "dela" på felet så är +-2,5% absolut max. +-1,25% står det i de flesta specar såsom max baudratefel.
Sedan finns det ju en del andra fel som ställer till det t.ex skew, jitter och reflexer.
Så 1,25% får nog anses vara i mesta laget för praktiskt bruk och det bör man hålla sig innom.
Pjoms
EF Sponsor
Inlägg: 644
Blev medlem: 24 maj 2004, 12:18:40
Ort: Ö-vik

Inlägg av Pjoms »

>"...modernare PICs än den du har valt har ett 16-bitars
SPBRG register."
Jo, jag har sett det. Är det alla "EUSART" som har detta?

Jag labbar med en krets jag har på hyllan, men i ett senare skede kommer det att bli en mordänare variant.
Kom föresten på att det är en 18F252 jag labbar med, men det är ju likadan USART som i 876:an.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Precis "Enhanced" USART... :-)

18F252 är också en ganska gammal modell, för övrigt...

> För att den sista biten skall vara säker måste baudrate ligga inom 10%.

Nja. Om du bara tittar från den ena flanken på sista biten, kanske.
Menar du ett + eller - fel ? Eller menar du +/- 10% ?

Men annars +/- 5% mätt från mitten på sista biten.

Sen tillkommer sådant som den faktiska implementeringen av mottagaren,
d.v.s t.ex hur startbiten detekteras (16 x buad-rate är ganska vanligt) o.s.v
så som du i princip beskrev.

Enklast är att välja "rätt" kristall. Då fungerar (nästan) alla baudrates med 0 % fel... :-)
limpan4all
Inlägg: 8460
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Inlägg av limpan4all »

Mitt resonemang är sekventiellt. Varje stegs orsak och verkan är beskrivet.

Den sista biten står för 10% av ett teckens överföring så då får det felet vara maximalt 10%.

Av den sista bitens bittid så måste minst 50% ligga inom detekteringsområdet (det spelar ingen roll om det är 1ggr eller 16ggr översampling). Det ger att vi är nere på +-5% noggrannhet.

Men då felet kan ligga i både sändande och mottagande enhet så blir det maximalt tillåtna felet 50% av föregående fel dvs +-2,5%.

Sedan tillkommer övriga felkällor slewrate, jitter och reflexer så man bör skaffa sig säkerhetsmarginal ytterligare 50% försvinner.

Då hamnar man på +-1,25% maximalt tillåtet fel i varje enhet för en säkerställd komunikation.

Om man däremot VET att man bara skall jobba mot "bra" utrustning som saknar baudratefel så kan man kosta på sig upp till 2,5% fel i den egenkonstruerade enheten.

Men den rätta lösningen är att såsom Sodjan helt riktigt nämner är att använda lämpliga kristaller så blir alla enheter helt rätt och alla fel som ligger i trancivers och kaglage kommer att klaras av inom timingspecifikationen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Den sista biten står för 10% av ett teckens överföring så då får det felet vara maximalt 10%.

Nja, den sista biten får bara ha ett halv-bits fel, d.v.s max +/- 5% av den
totala tiden för alla 10 bitarna. Det har hänsyn till att minst halva biten ska "överlappa".

Det är fortfarande inte helt klart om du menar +/- 10% eller något annat.
Det kan vara det som ger skillnaden vi ser...
limpan4all
Inlägg: 8460
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Inlägg av limpan4all »

I ett sekventiellt resonemang så ser man till vad varje steg ger för bidrag till slutresultatetet. Steg ett behandlar bara bittiden. Steg två behandlar vart på bittiden man kan/ska detekterar. Dvs dvs din första mening beskriver steg två i mitt resonemang.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Skit samma. +/- 5% fel i klockhastighet är max för ena sidan förrutsatt
att den andra ligger exakt rätt i frekvens. Det är lite oklart var du
får 10% från...

*Om* du med "10%" menar "+/- 5%" så bör det dock stämma...
Skriv svar