Ik ben bezig met een soort van statusmonitor om tussen een seriele poort te zetten. Het dingetje moet bytes gaat tellen e.d. Ik wil deze maken met een max232 aan de uart van de f628.

Nu zit ik echter met het probleem dat ik niet weet op welke baud rate er wordt gecommuniceerd. Ook weet ik niet welke bytes er over de lijn vliegen.

Is er een handige manier om uit te vinden op welke snelheid het geheel communiceert ?

Als je baudrate wil detecteren zul je wel iets over het protocol moeten weten.
Communicatie begint altijd met het laag maken van de datalijn (startconditie) en stop met het hoog maken van de lijn (stopconditie), Maar door de data kan de lijn ook nog hoog worden. Je moet dus weten hoeveel bits er tussen start en stop zitten, meestal als je dit weet is de baudrate ook wel bekend.

Wat je zou kunnen doen is na een start conditie de lijn samplen met een hogere frequentie dan de hoogste baudrate.
Dan proberen om er 1 bit uit te herkennen dus een 0 tussen 2 1en (101) je kun dan de bit tijd van de 0 bereken en je hebt de baudrate.

Lijkt me niet echt makkelijk, Maarja niet alles moet makkelijk zijn en sommige dingen moeten een uitdaging blijven.

Succes

er bestaan (voor 8051) autodetect programma's, misschien dat je die als basis kan gebruiken...GOOGLE

edit:
effe zelf eens gezocht:
zoals hier : http://www.8052.com/codelib/autobaud.zip

[Bericht gewijzigd door sven op ]

Het is niet 100% mogelijk uit iedere datastroom de baudrate te detecteren. Er zijn nl patronen die op verschillende baudrates een geldige datastroom kunnen zijn. Als je iets weet van de datastroom kan je dat gebruiken. Anders misschien gewoon verschillende snelheden probveren tot je iets zinnigs ontvangt (maar dan moet je dus wel kunnen herkennen wat zinnig is).

Op 20 januari 2004 17:24:01 schreef Wouter van Ooijen:
Het is niet 100% mogelijk uit iedere datastroom de baudrate te detecteren. Er zijn nl patronen die op verschillende baudrates een geldige datastroom kunnen zijn. Als je iets weet van de datastroom kan je dat gebruiken. Anders misschien gewoon verschillende snelheden probveren tot je iets zinnigs ontvangt (maar dan moet je dus wel kunnen herkennen wat zinnig is).

Inderdaad Wouter, zo dacht ik ook. Immers kan 00110011 ook als 0101 worden geinterpreteerd omdat de lijn hoog(of laag) blijft tussen de 11 en 00. Echter wil ik het apparaatje protocolonafhankelijk laten werken, wat dus eigenlijk niet mogelijk zou zijn.

Helaas...

> Immers kan 00110011 ook als 0101 worden geinterpreteerd

Je moet bij die interpretatie wel meenemen dat er ook een startbit is, en dat (als ik me goed herinner) het laagste bit eerst wordt verzonden. Maar het feit blijft: je kan aan de datastroom niet altijd zien wat de bitrate is.

Voor sommige bitstromen, bij bekende baudrate, kan je de stroom trouwens op meer dan 1 manier interpreteren, afhankelijk van waar je begint.