Hi O_Proulx, KC
The program is attached to my last post. The peripheral is receiving the file from the log below which shows the handshake between host PC (CONTROL1) and peripheral (STATUS2). When host set strobe bit c0=1 (CONTROL1) at port1, my monitor set c5=1 at port1 and c5=0 at port2 and copy DATA1 to DATA2 so that the character 'S' set by host appear at the peripheral. The peripheral whose busy bit s7=1 (STATUS2) till now change to s7=0. Seing that s7=0, host set strobe bit c0=0 (CONTROL1). The peripheral by now have read 'S' from DATA2 sets s7=1 (STATUS2) again ready for the next byte of data. The host continues to send the next byte.
10:48:16, CONTROL1 = (00001101); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 36 (00100100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)10:48:16, CONTROL1 = (00101101); STATUS1 = (11011000); DATA1 = 83 {S} (01010011) CONTROL2 = 13 (00001101); STATUS2 = 88 (01011000); DATA2 = 255 {ÿ} (11111111)10:48:16, CONTROL1 = (00101100); STATUS1 = (01011100); DATA1 = 83 {S} (01010011) CONTROL2 = 13 (00001101); STATUS2 = 88 (01011000); DATA2 = 83 {S} (01010011)10:48:16, CONTROL1 = (00001100); STATUS1 = (01011000); DATA1 = 83 {S} (01010011) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)10:48:16, CONTROL1 = (00001101); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)10:48:16, CONTROL1 = (00101101); STATUS1 = (11011000); DATA1 = 48 {0} (00110000) CONTROL2 = 13 (00001101); STATUS2 = 88 (01011000); DATA2 = 255 {ÿ} (11111111)10:48:16, CONTROL1 = (00101100); STATUS1 = (01011100); DATA1 = 48 {0} (00110000) CONTROL2 = 13 (00001101); STATUS2 = 88 (01011000); DATA2 = 48 {0} (00110000)10:48:16, CONTROL1 = (00001100); STATUS1 = (01011000); DATA1 = 48 {0} (00110000) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)10:48:16, CONTROL1 = (00001101); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)
At the end of transmission
11:08:41, CONTROL1 = (00001101); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)11:08:41, CONTROL1 = (00101101); STATUS1 = (11011000); DATA1 = 48 {0} (00110000) CONTROL2 = 13 (00001101); STATUS2 = 88 (01011000); DATA2 = 255 {ÿ} (11111111)11:08:41, CONTROL1 = (00101100); STATUS1 = (01011100); DATA1 = 48 {0} (00110000) CONTROL2 = 13 (00001101); STATUS2 = 88 (01011000); DATA2 = 48 {0} (00110000)11:08:41, CONTROL1 = (00001100); STATUS1 = (01011000); DATA1 = 48 {0} (00110000) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)11:08:41, CONTROL1 = (00001100); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)11:08:41, CONTROL1 = (00001100); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)11:08:41, CONTROL1 = (00001100); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)11:08:41, CONTROL1 = (00001100); STATUS1 = (11011000); DATA1 = 255 {ÿ} (11111111) CONTROL2 = 44 (00101100); STATUS2 = 216 (11011000); DATA2 = 255 {ÿ} (11111111)
After host send last character '0', nothing happens on CONTROL1 or STATUS2. It stays the same. Notice that c5=0 (CONTROL1) meaning port 1 data is now output and c5=1 (CONTROL2) meaning port2 data is input. Also host's strobe c0=0(CONTROL1), so it is ready to receive. All bits at all register stays the same for ever and host software displays error that file downloaded but peripheral wouldn't start. Message Edited by Aro on 04-25-2008 09:07 AMMessage Edited by Aro on 04-25-2008 09:09 AM