Posts tonen met het label RS232. Alle posts tonen
Posts tonen met het label RS232. Alle posts tonen

donderdag 30 april 2020

RS232 [ de arbiter ]

Deze logica ,voor wie dit nog kent  opgebouwd naar het idee van de oude schakelingen met TTL en DTL ,  en niet met kant en klare IC's .
Ik had nog heel wat transistoren liggen en het was " back to the roots" .
Het voornaamste is , het werkt en doet wat het moet doen .
Omdat deze het RS232 verkeer moet regelen( wie wanneer wat mag doen)  heb ik het arbiter gedoopt .



PS:

DTL    diode transistor logica
TTL    transistor transistor logica

donderdag 23 april 2020

RS232 [ worst case scenario ]

De glitchen waren wel weg maar dit is sterk afhankelijk van de " data-inhoud" 
 van de characters ,soms had ik er toch nog ! Dus wat is de worst case scenario voor mijn timing?

Wel , het is niet zo zoals ik eerst dacht allemaal logische nullen in een character maar net tegenovergestelde !

Het is namelijk zo als de trigger ingang van de 555  0V  blijft ( en niet terug keert naar voedingsspanning na een negatiefgaande flank) de uitgang van de 555 op voedingsspanning  blijft !

Als ze echter allemaal log 1 worden ( FFh) en er is een trigger gegenereerd ( door de startbit) dan heeft de 555 de kans nadat zijn tijd is verlopen bij een verandering naar een nieuwe log 0 ( in de databits en dat kan ook de laatste bit zijn , zie verder) om een valse trigger te veroorzaken.

De leesbare charachter set  loopt  maar tot 7Fh , dus de hoogtse bit (MSB)  is hierdoor steeds log 0


Worst Case scenario + schema hertriggerbare MMV



Daarom moet de tijdsduur van de MMV het best de tijdsduur van 7 bits van de char overschrijden .
7 bits bij een baudrate van 38400 komt op 182 µs . Voor de veiligheid ( bv door toleranties van de componenten) nemen we iets meer .
Ik heb gekozen voor een R van 202 k ( 180 +22 ) en een C van 1 nF wat neer komt op 202k x 1n x 1.1 = 222 µs ( dimensie k x n geeft µ). Die 1.1 komt uit de 555 formule

De gemeten delaytijd = uitsteltijd( tijd na laatste 2 stopsbit na laatste char) is hiermee 134 µs.
Hoe kom ik daar aan ?  Timertijd ca 222µs - driemaal 1 bittijd ( 26µs)  geeft dit ongeveer. De driemaal komt van twee stopbits + de laatste nulbit van het achtste charbit
Dit is de tijd dat de lijn nog uitgeblankd blijft . Maw na deze tijd kan er weer gezonden worden.





woensdag 22 april 2020

RS232 [ het uitblanken van het signaal. ]

Ik moet op een bepaald moment kunnen uitblanken , dwz de opgestuurde string onderdrukken.
Omdat ik nooit weet hoe lang die string zal zijn moet deze uitblanking universeel zijn.
Ik zou dit kunnen doen met wat intelligentie uit een arduino of ander spul , maar het kan volgens mij ook met ouderwetse hardware.
Hiervoor gebruik ik het werkpaard onder de timers , de 555.


Eerste proefopstelling als MMV. De tijd tussen de cursor 1 en 2 is de delay tijd nadat alle pulsen zijn gepasseerd en waarna de lijn weer zal vrijgegeven worden .
Opname op 38400 bd.





Ge ziet dat er nog glitchen onstaan , die ik liever niet heb.

Nog eens de delaytijd in detail , hier zijn ook de twee stopbits in aanmerking genomen.






Daarom schakelen we over van een MMV naar een hertriggerbare MMV.


ASCII trein in het geel  op 38400 baud met op de onderste trace in het blauw de werking van de hertriggerbare MMV



Glitchen weg !


De proefopstelling



Ergens zit daar ook een 555 verscholen !


dinsdag 21 april 2020

RS232 [ frame van één char ]

Een opname van één frame van de letter A bij een baudrate van 38400 , 1 startbit   , 2 stopbits en no parity.
In totaal dus 11 bits voor één frame.
Ik heb deze opname nodig omdat ik iets moet maken om zo'n frame ( of meerdere ) te kunnen blanken .

Een lijn in rust staat op log 1 niveau!


maandag 20 april 2020

RS232 [ Sniffer ]

Een proefprintje om dataverkeer tussen twee gebruikers van seriële lijnen ( compoorten) te snifferen .
De gebruikers zelf zijn nog altijd met elkaar verbonden maar de TX lijnen van beide stations worden opto geïsoleerd besnifferd en omgezet naar TTL niveau en daarna terug naar RS232 niveau.
Er worden geen handshakesignalen gemonitord , dus enkel TX en RX.

Er moeten dan wel twee computers ( of één computer met twee aparte compoorten) ter beschiiking zijn .



Getest tot 115200 baud