[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