unit 10 - part 3
DESCRIPTION
Unit 10 - Part 3. Address Selects Receiver. Receivers are put in “standby” mode by setting RWU (Receiver Wake Up) = 1. Address Character. N Character Message. XMTR. RCVR. RCVR. RCVR. RCVR. ……. Receiver Wake Up. If RWU == “1” (Receiver is in ‘stand-by’ state) - PowerPoint PPT PresentationTRANSCRIPT
Unit 10 - Part 3
Address Selects Receiver
AddressCharacter
N Character Message
XMTR
RCVR RCVR RCVR RCVR……..
Receivers are put in “standby” mode by setting RWU (Receiver Wake Up) = 1
Receiver Wake Up
• If RWU == “1” (Receiver is in ‘stand-by’ state)
– If WAKE == “1” (Address Mark Wakeup)• A logic 1 in the msb position of a frame clears the RWU bit
and wakes up the SCI. (The logic 1 marks the frame as an address frame.)
» If Address matches, then Receive Message» If Address doesn’t match, then set RWU=“1”
– If WAKE == “0” (Idle line Wakeup)• An idle condition on the input clears the RWU bit and wakes
up the SCI. The next frame that is received is assume to contain an Address
– If Address matches, then Receive Message– If Address doesn’t match, then set RWU=“1”
RWU = “1”, WAKE = “0”
FrameN+1
Characters
FrameN+1
Characters
FrameN+1
Characters
Line Idle
• Enable Receiver when receiver input is in Idle state (when 10 or 11 1’s are received)• Next received character is considered an Address• If Address matches then receive the rest of Frame• If Address doesn’t match, set RWU = ”1” to ignore rest of Frame
RWU = “1” WAKE = “1”
• Received “wakes up” if Most Significant Bit of Received Character = “1”– 1 in MSB: Character is an Address– Receive Address
• If Match, receive remainder of frame• If No Match, set RWU back to “1” and ignore
remainder of frame
Single Wire Mode
• Loops = “1”, RSRC = “1”– TxDIR = “0” -- TxData is Input to Receiver– TxDIR = “1” -- TxData is Transmitter Output
XMTR
RCVR
TxDIR = “1”
TxDIR = “0”
Single WireHalf Duplex
TxD pin
SCI Interrupts
• 4 Sources of Interrupts on SCI– TDRE = “1” – Transmitter SCI Buffer Empty– TC = “1” – Transmitter Finished– RDRF = “1” – Receiver SCI Buffer Full– IDLE = “1” – Receive Line is Idle
• TDRE and RDRF are commonly used
• TC and IDLE used in special applications
SCI Interrupt Processingvoid sci0_isr(void){// SCI Interrupt has occurred, determine reason if((SCI0SR1&0x20)!=0) { // RDRF=“1” was source of interrupt, buffer is full c=SCI0DRL; // Read character to empty buffer ---- // handle the character } if((SCI0SR1&0x80)!=0) { // TDRE=“1” was source of interrupt, buffer is empty // Case 1 – If have a character c to transmit SCI0DRL = c; // Write character to full buffer } else {// Case 2 – No character to transmit SCI0CR2 = SCI0CR2&0x7F; // set TIE=“0” to disable transmitter interrupts } ---- ----}