[mc1322x] problems with the UART

Jon Smirl jonsmirl at gmail.com
Mon Jan 4 23:16:26 EST 2010


Why won't this loop work without messing up the printout?
It gets 32 chars right and then messes up. 32 chars is the size of the FIFO.

		for (i = 0; i < 10; i++) {
			for (j = 'A'; j <= 'z'; j++) {
				reg32(UART1_DATA) = j;
				if (reg32(UT1CON) == 0) {  // stop when FIFO is full
					while (reg32(UT1CON) != 31) {   // wait for it to empty
					}
				}
			}
			reg32(UART1_DATA) = '\n';
		}

I get output like this, this case gets 39 chars right and then messes up.

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghist
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgijtu
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgjkuv
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgjkvw
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgklwx
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefglmwx
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgmnxy
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgmnyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgnoz
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijopz
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghpq
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghipq
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiqr
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghirs
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghist
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghist
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgijtu
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgijuv
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgjkvw
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgklvw
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghilmwx
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefglmxy



-- 
Jon Smirl
jonsmirl at gmail.com



More information about the mc1322x mailing list