projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge ccdbg and altos sources into one giant repository
[fw/altos]
/
target
/
adc-serial
/
adc_serial.c
diff --git
a/target/adc-serial/adc_serial.c
b/target/adc-serial/adc_serial.c
index fb58b4c28c59d37a98c3d03894e8e074cf01d20e..1f7b6880b1ffcb4133811cc7ad7ed8b9ce3781c7 100644
(file)
--- a/
target/adc-serial/adc_serial.c
+++ b/
target/adc-serial/adc_serial.c
@@
-405,7
+405,15
@@
struct cc_dma_channel __xdata dma_config;
#define ADC_LEN 6
#define ADC_LEN 6
-uint8_t __xdata adc_output[ADC_LEN*2];
+/* The DMA engine writes to XDATA in MSB order */
+struct dma_xdata16 {
+ uint8_t high;
+ uint8_t low;
+};
+
+struct dma_xdata16 adc_output[ADC_LEN];
+
+#define DMA_XDATA16(a,n) ((uint16_t) ((a)[n].high << 8) | (uint16_t) (a[n].low))
#define ADDRH(a) (((uint16_t) (a)) >> 8)
#define ADDRL(a) (((uint16_t) (a)))
#define ADDRH(a) (((uint16_t) (a)) >> 8)
#define ADDRL(a) (((uint16_t) (a)))
@@
-419,7
+427,7
@@
adc_init(void)
dma_config.cfg1 = (DMA_CFG1_SRCINC_0 |
DMA_CFG1_DESTINC_1 |
DMA_CFG1_PRIORITY_NORMAL);
dma_config.cfg1 = (DMA_CFG1_SRCINC_0 |
DMA_CFG1_DESTINC_1 |
DMA_CFG1_PRIORITY_NORMAL);
-
+
dma_config.src_high = ADDRH(&ADCXDATA);
dma_config.src_low = ADDRL(&ADCXDATA);
dma_config.dst_high = ADDRH(adc_output);
dma_config.src_high = ADDRH(&ADCXDATA);
dma_config.src_low = ADDRL(&ADCXDATA);
dma_config.dst_high = ADDRH(adc_output);
@@
-434,7
+442,7
@@
adc_init(void)
(1 << 3) | /* battery voltage */
(1 << 4) | /* drogue sense */
(1 << 5)); /* main sense */
(1 << 3) | /* battery voltage */
(1 << 4) | /* drogue sense */
(1 << 5)); /* main sense */
-
+
ADCCON1 = (ADCCON1_STSEL_START); /* ST bit triggers */
ADCCON2 = (ADCCON2_SREF_VDD | /* reference voltage is VDD */
ADCCON2_SDIV_512 | /* 12 bit ADC results */
ADCCON1 = (ADCCON1_STSEL_START); /* ST bit triggers */
ADCCON2 = (ADCCON2_SREF_VDD | /* reference voltage is VDD */
ADCCON2_SDIV_512 | /* 12 bit ADC results */
@@
-518,14
+526,16
@@
usart_out_string(uint8_t *string)
usart_out_byte(b);
}
usart_out_byte(b);
}
-uint8_t __xdata num_buffer[10];
+#define NUM_LEN 6
+
+uint8_t __xdata num_buffer[NUM_LEN];
uint8_t __xdata * __xdata num_ptr;
void
usart_out_number(uint16_t v)
{
uint8_t __xdata * __xdata num_ptr;
void
usart_out_number(uint16_t v)
{
- num_ptr = num_buffer +
10
;
+ num_ptr = num_buffer +
NUM_LEN
;
*--num_ptr = '\0';
do {
*--num_ptr = '0' + v % 10;
*--num_ptr = '\0';
do {
*--num_ptr = '0' + v % 10;
@@
-533,33
+543,34
@@
usart_out_number(uint16_t v)
} while (v);
while (num_ptr != num_buffer)
*--num_ptr = ' ';
} while (v);
while (num_ptr != num_buffer)
*--num_ptr = ' ';
- usart_out_string(num_
pt
r);
+ usart_out_string(num_
buffe
r);
}
}
-#define ADC(n)
(((uint16_t) (adc_output[n<<1] << 8)) | (uint16_t) (adc_output[(n<<1)+1])
)
+#define ADC(n)
DMA_XDATA16(adc_output,n
)
main ()
{
main ()
{
- P1DIR
|= 2
;
+ P1DIR
= 3
;
CLKCON = 0;
while (!(SLEEP & SLEEP_XOSC_STB))
;
CLKCON = 0;
while (!(SLEEP & SLEEP_XOSC_STB))
;
-
+
adc_init();
adc_init();
+ P1_0 = 1;
usart_init();
for (;;) {
adc_run();
usart_out_string("accel: ");
usart_out_number(ADC(0));
usart_init();
for (;;) {
adc_run();
usart_out_string("accel: ");
usart_out_number(ADC(0));
- usart_out_string("pres: ");
+ usart_out_string("
pres: ");
usart_out_number(ADC(1));
usart_out_number(ADC(1));
- usart_out_string("temp: ");
+ usart_out_string("
temp: ");
usart_out_number(ADC(2));
usart_out_number(ADC(2));
- usart_out_string("batt: ");
+ usart_out_string("
batt: ");
usart_out_number(ADC(3));
usart_out_number(ADC(3));
- usart_out_string("drogue: ");
+ usart_out_string("
drogue: ");
usart_out_number(ADC(4));
usart_out_number(ADC(4));
- usart_out_string("main: ");
+ usart_out_string("
main: ");
usart_out_number(ADC(5));
usart_out_string("\r\n");
delay(10);
usart_out_number(ADC(5));
usart_out_string("\r\n");
delay(10);