Project

General

Profile

Revision 844

Added some debug statements which SHOULD BE REMOVED UPON MOVING TO TRUNK

View differences:

branches/encoders/code/lib/src/libdragonfly/encoders.c
5 5

  
6 6
unsigned int left_data_buf;
7 7
unsigned int right_data_buf;
8
char buf_index;
8
char encoder_buf_index;
9 9

  
10 10
unsigned int left_data;
11 11
unsigned int right_data;
......
43 43
void encoder_recv_complete(void);
44 44

  
45 45
void encoder_recv_complete(){
46

  
46
   encoder_buf_index = 0;
47 47
   //  usb_puts("[");usb_puti(left_dx);usb_puts(",");usb_puti(right_dx);usb_puts("]\r\n");
48 48
   //   usb_puts("\r\n");
49 49
  data_ready++;
......
70 70
	data_ready=0;
71 71

  
72 72
	spi_init(encoder_recv/*put_bin*/, encoder_recv_complete);
73
	buf_index = 0;
73
	encoder_buf_index = 0;
74 74
	left_data_buf = 0;
75 75
	right_data_buf= 0;
76 76
	left_data = -1;
......
90 90
		right_data_array[i] = 0;
91 91
	}
92 92
	spi_transfer(5);
93
	usb_puts("\tencoders.c Debug: ENCODERS INITIALIZED\n\r");
93 94
}
94 95

  
95 96
/**
......
101 102
 * @return the value of the specified encoder
102 103
 **/
103 104
int encoder_read(char encoder){
104
	if(encoder==LEFT)
105
	if(encoder==LEFT){
106
		usb_puts("\tencoders.c Debug: PRINTING LEFT ENCODER VALUE\n\r");
105 107
		return left_data;
106
	else if(encoder==RIGHT)
108
	}
109
	else if(encoder==RIGHT){
110
		usb_puts("\tencoders.c Debug: PRINTING RIGHT ENCODER VALUE\n\r");
107 111
		return right_data;
108
	else return -1;
112
	}
113
	else{
114
		usb_puts("\tencoders.c Debug: INVALID ENCODER - USE LEFT/RIGHT\n\r");
115
		 return -1;
116
	}
109 117
}
110 118

  
111 119
int encoder_change(char encoder){
......
201 209
	
202 210
	//Parse the encoder data, comes in over 5 bytes 16 bits per encoder,
203 211
	// second is offset by 1 bit.
204
	switch(buf_index){	
212
	switch(encoder_buf_index){	
205 213
	case 0: 
206 214
		right_data_buf |= ((short)data)<<8 & 0xff00;
207 215
		break;
......
217 225
	case 4: left_data_buf |= (((short)data)>>7) & 0x1;
218 226
	}	
219 227
		
220
	buf_index = (buf_index + 1) % 5;
228
	encoder_buf_index = (encoder_buf_index + 1) % 5;
221 229

  
222
	if(buf_index==0) {
230
	if(encoder_buf_index==0) {
223 231
		  
224 232
		if(left_data_buf & (COF | LIN) || !(left_data_buf & OCF))  left_data = INVALID;
225 233
		else if(((left_data_buf & MagINCn) > 0)  && ((left_data_buf & MagDECn) > 0)) left_data = MAGNET_FAILURE;
......
270 278
	timecount++;
271 279
}
272 280

  
281

  
273 282
void encoders_print_data_array(void){
274 283
	int i;
275 284
	usb_puts("Left Data: Pointer is ");
branches/encoders/code/lib/src/libdragonfly/spi.c
18 18
void spi_init (spi_fun_recv_t recv_func, spi_fun_recv_complete_t recv_complete_func)
19 19
{
20 20
    /*  Enable Interrupt, Enable SPI Module, MSB First, Master Mode, Clock div = 64 */
21
  SPCR = _BV(SPE) | _BV(SPIE) /*| _BV(DORD)*/ | _BV(MSTR) | _BV(SPR1) | _BV(SPR0);
21
    SPCR = _BV(SPE) | _BV(SPIE) /*| _BV(DORD)*/ | _BV(MSTR) | _BV(SPR1) | _BV(SPR0);
22 22
    SPSR = _BV(SPI2X); 
23 23

  
24 24
    /* Set SCLK, SS, MOSI as outputs. MISO as input */
......
30 30

  
31 31
    /* set function to be executed when we receive a byte */
32 32
    spi_recv_func = recv_func;
33
	spi_recv_complete_func = recv_complete_func;
33
    spi_recv_complete_func = recv_complete_func;
34 34
    spi_bytes = 0;
35
    usb_puts("\tspi.c Debug: SPI INITIALIZED\n");
35 36
}
36 37

  
37 38
/* Transfer a given byte to slave and receive a byte */
......
48 49
    /* only handle intterupt when we are expecting data */
49 50
    if(spi_bytes > 0){
50 51
	/* process byte */
51
      spi_recv_func(SPDR);
52
	spi_recv_func(SPDR);
52 53
	/* if we've read all the bytes, set SS high to end transmission,
53 54
	 * otherwise get the next byte  */
54 55
	if(--spi_bytes == 0){
55 56
		//usb_puts("Read all bytes\r\n");
56
	    PORTB |= SS;
57
	    if(spi_recv_complete_func)
58
	      spi_recv_complete_func();
57
		PORTB |= SS;
58
		if(spi_recv_complete_func)
59
			spi_recv_complete_func();
59 60
	}else {
60 61
		//usb_puts("There are this many bytes left: "); usb_puti(spi_bytes);usb_puts("\r\n");
61
	    SPDR = 0xff;
62
		}
62
		SPDR = 0xff;
63
	}
63 64
    }
64 65
}		
branches/encoders/code/projects/libdragonfly/spi.c
18 18
void spi_init (spi_fun_recv_t recv_func, spi_fun_recv_complete_t recv_complete_func)
19 19
{
20 20
    /*  Enable Interrupt, Enable SPI Module, MSB First, Master Mode, Clock div = 64 */
21
  SPCR = _BV(SPE) | _BV(SPIE) /*| _BV(DORD)*/ | _BV(MSTR) | _BV(SPR1) | _BV(SPR0);
21
    SPCR = _BV(SPE) | _BV(SPIE) /*| _BV(DORD)*/ | _BV(MSTR) | _BV(SPR1) | _BV(SPR0);
22 22
    SPSR = _BV(SPI2X); 
23 23

  
24 24
    /* Set SCLK, SS, MOSI as outputs. MISO as input */
......
30 30

  
31 31
    /* set function to be executed when we receive a byte */
32 32
    spi_recv_func = recv_func;
33
	spi_recv_complete_func = recv_complete_func;
33
    spi_recv_complete_func = recv_complete_func;
34 34
    spi_bytes = 0;
35
    //usb_puts("\tspi.c Debug: SPI INITIALIZED\n");
35 36
}
36 37

  
37 38
/* Transfer a given byte to slave and receive a byte */
......
48 49
    /* only handle intterupt when we are expecting data */
49 50
    if(spi_bytes > 0){
50 51
	/* process byte */
51
      spi_recv_func(SPDR);
52
	spi_recv_func(SPDR);
52 53
	/* if we've read all the bytes, set SS high to end transmission,
53 54
	 * otherwise get the next byte  */
54 55
	if(--spi_bytes == 0){
55 56
		//usb_puts("Read all bytes\r\n");
56
	    PORTB |= SS;
57
	    if(spi_recv_complete_func)
58
	      spi_recv_complete_func();
57
		PORTB |= SS;
58
		if(spi_recv_complete_func)
59
			spi_recv_complete_func();
59 60
	}else {
60 61
		//usb_puts("There are this many bytes left: "); usb_puti(spi_bytes);usb_puts("\r\n");
61
	    SPDR = 0xff;
62
		}
62
		SPDR = 0xff;
63
	}
63 64
    }
64 65
}		
branches/encoders/code/projects/libdragonfly/encoders.c
5 5

  
6 6
unsigned int left_data_buf;
7 7
unsigned int right_data_buf;
8
char buf_index;
8
char encoder_buf_index;
9 9

  
10 10
unsigned int left_data;
11 11
unsigned int right_data;
......
43 43
void encoder_recv_complete(void);
44 44

  
45 45
void encoder_recv_complete(){
46

  
46
   encoder_buf_index = 0;
47 47
   //  usb_puts("[");usb_puti(left_dx);usb_puts(",");usb_puti(right_dx);usb_puts("]\r\n");
48 48
   //   usb_puts("\r\n");
49 49
  data_ready++;
......
70 70
	data_ready=0;
71 71

  
72 72
	spi_init(encoder_recv/*put_bin*/, encoder_recv_complete);
73
	buf_index = 0;
73
	encoder_buf_index = 0;
74 74
	left_data_buf = 0;
75 75
	right_data_buf= 0;
76 76
	left_data = -1;
......
90 90
		right_data_array[i] = 0;
91 91
	}
92 92
	spi_transfer(5);
93
	//usb_puts("\tencoders.c Debug: ENCODERS INITIALIZED\n\r");
93 94
}
94 95

  
95 96
/**
......
101 102
 * @return the value of the specified encoder
102 103
 **/
103 104
int encoder_read(char encoder){
104
	if(encoder==LEFT)
105
	if(encoder==LEFT){
106
		//usb_puts("\tencoders.c Debug: PRINTING LEFT ENCODER VALUE\n\r");
105 107
		return left_data;
106
	else if(encoder==RIGHT)
108
	}
109
	else if(encoder==RIGHT){
110
		//usb_puts("\tencoders.c Debug: PRINTING RIGHT ENCODER VALUE\n\r");
107 111
		return right_data;
108
	else return -1;
112
	}
113
	else{
114
		//usb_puts("\tencoders.c Debug: INVALID ENCODER - USE LEFT/RIGHT\n\r");
115
		 return -1;
116
	}
109 117
}
110 118

  
111 119
int encoder_change(char encoder){
......
201 209
	
202 210
	//Parse the encoder data, comes in over 5 bytes 16 bits per encoder,
203 211
	// second is offset by 1 bit.
204
	switch(buf_index){	
212
	switch(encoder_buf_index){	
205 213
	case 0: 
206 214
		right_data_buf |= ((short)data)<<8 & 0xff00;
207 215
		break;
......
217 225
	case 4: left_data_buf |= (((short)data)>>7) & 0x1;
218 226
	}	
219 227
		
220
	buf_index = (buf_index + 1) % 5;
228
	encoder_buf_index = (encoder_buf_index + 1) % 5;
221 229

  
222
	if(buf_index==0) {
230
	if(encoder_buf_index==0) {
223 231
		  
224 232
		if(left_data_buf & (COF | LIN) || !(left_data_buf & OCF))  left_data = INVALID;
225 233
		else if(((left_data_buf & MagINCn) > 0)  && ((left_data_buf & MagDECn) > 0)) left_data = MAGNET_FAILURE;
......
270 278
	timecount++;
271 279
}
272 280

  
281

  
273 282
void encoders_print_data_array(void){
274 283
	int i;
275 284
	usb_puts("Left Data: Pointer is ");

Also available in: Unified diff