From: Florian L. <gu...@fl...> - 2005-05-21 14:31:38
|
On Saturday 21 May 2005 16:13, Dave Hylands wrote: > Hi Florian, > > > This would mean, that reliable communications with the robostix are only > > possible at 250k or higher... > > (ATmega128 specs, page 197, table 85: Examples of Baud Rate Settings.) > > At 4800, 19.2k, 38.4k and 76.8k one would "only" have 0.2% error-rate, > > but afaik this is a "per bit" error-rating. When multiplying by 8 the > > error-rate would be 1.6% bad bytes. Suppose we checksum 10bytes. In this > > case we would loose 16% of our sent data. (In our specific case we > > checksummed 13bytes, and lost more than 20%...). > > I think that your analysis is flawed ;) > > The error that's specified is the difference in clock frequencies. A > 1.6% error in clock frequency won't cause any problems with > communication. The real secret here is that async communication is > occuring and everything gets resynced every character. > > The communication can handle upto to 1/2 bit of clock difference over > 10 bits, which means that the clocks can differ by as much as 5% and > the two devices can still communicate at any given baud rate. Mea Culpa... We nevertheless had *big* troubles with Atmels that used their internal oscillators. (20% bad checksums over 13 sent bytes). Perhaps we should have calibrated the oscillators (there seems to be a document on Atmel's site). With external oscillators everything worked fine. (we only tried the 0.0% error frequencies). As long as the communication will work fine, I'm fine with 16MHz ;) // florian -- This function will terminate, if run infinitely. void f() { while (random() != 0); } |