projects
/
slipway.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
I think I got flow control working
[slipway.git]
/
src
/
edu
/
berkeley
/
slipway
/
slipway_drone.c
diff --git
a/src/edu/berkeley/slipway/slipway_drone.c
b/src/edu/berkeley/slipway/slipway_drone.c
index
884d540
..
4e09ca2
100644
(file)
--- a/
src/edu/berkeley/slipway/slipway_drone.c
+++ b/
src/edu/berkeley/slipway/slipway_drone.c
@@
-42,13
+42,11
@@
inline void portd(int bit, int on) {
long int numread = 0;
\r
inline void cts(int c) {
\r
numread++;
\r
long int numread = 0;
\r
inline void cts(int c) {
\r
numread++;
\r
- if (c /*&& numread < 10000*/) {
\r
- PORTE |= (1 << 4);
\r
- PORTE |= (1 << 2);
\r
+ if (c) {
\r
+ PORTE &= ~(1 << 7);
\r
portd(0, 0);
\r
} else {
\r
portd(0, 0);
\r
} else {
\r
- PORTE &= ~(1 << 4);
\r
- PORTE &= ~(1 << 2);
\r
+ PORTE |= (1 << 7);
\r
portd(0, 1);
\r
}
\r
}
\r
portd(0, 1);
\r
}
\r
}
\r
@@
-92,6
+90,8
@@
inline char recv() {
ret = read_buf[read_buf_head];
\r
read_buf_head = inc(read_buf_head);
\r
if (!read_nearlyFull()) cts(1);
\r
ret = read_buf[read_buf_head];
\r
read_buf_head = inc(read_buf_head);
\r
if (!read_nearlyFull()) cts(1);
\r
+ if (PORTE & (1<<3)) PORTE &= ~(1<<3);
\r
+ else PORTE |= (1<<3);
\r
return ret;
\r
}
\r
\r
return ret;
\r
}
\r
\r
@@
-113,8
+113,6
@@
void send(char c) {
if (PORTE & (1<<2)) PORTE &= ~(1<<2);
\r
else PORTE |= (1<<2);
\r
UCSR0B |= (1 << UDRIE0);
\r
if (PORTE & (1<<2)) PORTE &= ~(1<<2);
\r
else PORTE |= (1<<2);
\r
UCSR0B |= (1 << UDRIE0);
\r
- if (PORTE & (1<<3)) PORTE &= ~(1<<3);
\r
- else PORTE |= (1<<3);
\r
}
\r
\r
\r
}
\r
\r
\r
@@
-195,7
+193,7
@@
ISR(SIG_INTERRUPT0) { // use interrupt1 since interrupt0 is sent by the watchd
//PORTE |= (1<<0);
\r
sei();
\r
}
\r
//PORTE |= (1<<0);
\r
sei();
\r
}
\r
-void die() { cli(); cts(0); _delay_ms(2000); while(1) { portd(2,0); portd(2,1); } }
\r
+void die() { cli(); PORTE|=(1<<5); _delay_ms(2000); while(1) { portd(2,0); portd(2,1); } }
\r
\r
ISR(SIG_UART0_RECV) {
\r
\r
\r
ISR(SIG_UART0_RECV) {
\r
\r
@@
-218,7
+216,7
@@
inline int hex(char c) {
}
\r
\r
int main() {
\r
}
\r
\r
int main() {
\r
- DDRE = (1<<7) | (1<<5) | (1<<4) | (1<<3) | (1<<2);
\r
+ DDRE = (1<<7) | (1<<5) | (1<<3) | (1<<2);
\r
PORTE = 0;
\r
\r
init();
\r
PORTE = 0;
\r
\r
init();
\r
@@
-253,7
+251,6
@@
int main() {
*/
\r
\r
PORTE |= (1<<3);
\r
*/
\r
\r
PORTE |= (1<<3);
\r
- PORTE |= (1<<5);
\r
recv();
\r
send('O');
\r
send('B');
\r
recv();
\r
send('O');
\r
send('B');
\r