CD2231

Manufacturer Part NumberCD2231
DescriptionCD2231 Intelligent Two-channel Lan And Wan Communications Controller
ManufacturerIntel Corporation
CD2231 datasheet
 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Page 81
82
Page 82
83
Page 83
84
Page 84
85
Page 85
86
Page 86
87
Page 87
88
Page 88
89
Page 89
90
Page 90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
Page 87/178

Download datasheet (3Mb)Embed
PrevNext
Intelligent Two-Channel LAN and WAN Communications Controller — CD2231
} else {
}
}
}
outportb( REOIR, ZERO );
7.5
Transmit Interrupt Service Routine
This example code is a transmit interrupt service handler example. When using a synchronous
protocol, transmitters must declare an end of frame if an underrun occurs. If the end of buffer is
encountered before data is transferred by this interrupt service, then the Notrans bit (TEIOR[3])
should be set along with EOF (TEIOR[6]). TEOIR is always the last access of an interrupt service
routine.
int teoir = ZERO;
int tisr = inportb( TISR );// status
int ch = inportb( TIR ) & 0x01;// channel number
switch( tisr ) {
case TISR_UE:
teoir = TEOIR_EOF;// underflow
break;
case TISR_TXDATA:
tftc = inportb( TFTC ); // FIFO count
for( i=0; i<tftc; i++) {
}
}
outportb( TEOIR, teoir );
Datasheet
outport( BRBADRL, ib[ch].lower() );
outport( BRBCNT, BUF_MAX );
outport( BRBSTS, OWN_2231 );
ib[ch].nxt_buf();// get next buffer
// buffer A next
outport( ARBADRU, ib[ch].upper() );
outport( ARBADRL, ib[ch].lower() );
outport( ARBCNT, BUF_MAX );
outport( ARBSTS, OWN_2231 );
ib[ch].nxt_buf();// get next buffer
// default
if( ob[ch].is_eob() ) {// end of buffer ?
ob[ch].nxt_buf();// get next buffer
teoir = TEOIR_EOF;
if( i==0 )
teoir |= NOTRANS;
break;
}
else outportb( TDR, ob[ch].nxt_char() );//send next character
87