??? 03/13/08 13:43 Read: times |
#152225 - Use a rount trip buffer Responding to: ???'s previous message |
Hi there. Quite many seem to agree that Your method of doing this is "horrible" or "never seen that done in this way before" ...
Your solution is reading the ADC 16 times every time You want a result out of it. It might slow things down.... I have used a circular buffer to do this: #define ADC_BUFFER_SIZE 7 static volatile unsigned char __adc_buffer[ADC_BUFFER_SIZE]; static volatile unsigned char __adc_buffer_ptr; extern void InitAdcReader() { for ( __adc_buffer_ptr = 0; __adc_buffer_ptr < ADC_BUFFER_SIZE; __adc_buffer_ptr++ ) { __adc_buffer[__adc_buffer_ptr] = 0; } __adc_buffer_ptr = 0; } extern unsigned char ReadAdc() { unsigned char ix; unsigned short result; // Collect one ADC sample __adc_buffer[__adc_buffer_ptr] = ADC_DATA_PORT; // Advance the pointer __adc_buffer_ptr++; if (__adc_buffer_ptr >= ADC_BUFFER_SIZE ) { __adc_buffer_ptr = 0; } // Calculate average sum result = 0; for ( ix = 0; ix < ADC_BUFFER_SIZE; ix++ ) { result += __adc_buffer[ix]; } // Calculate the average result = result / (unsigned char)ADC_BUFFER_SIZE; return (unsigned char)(result & 0xFF); } |
Topic | Author | Date |
Math not functioning with proper headers? | 01/01/70 00:00 | |
horrible method | 01/01/70 00:00 | |
Lots of issues | 01/01/70 00:00 | |
Code Op at level 8 | 01/01/70 00:00 | |
Try multiple steps | 01/01/70 00:00 | |
ah hah moment arrived......omg | 01/01/70 00:00 | |
01/01/70 00:00 | ||
Here is the block which now works 100% | 01/01/70 00:00 | |
Operation question in C | 01/01/70 00:00 | |
Because | 01/01/70 00:00 | |
Simplify | 01/01/70 00:00 | |
what's the point ? | 01/01/70 00:00 | |
What's the point | 01/01/70 00:00 | |
simpler, but | 01/01/70 00:00 | |
Not right | 01/01/70 00:00 | |
use shift right instead of divide | 01/01/70 00:00 | |
If you're lucky... | 01/01/70 00:00 | |
Use a rount trip buffer | 01/01/70 00:00 | |
Bad names | 01/01/70 00:00 | |
System use names ???? | 01/01/70 00:00 | |
Common naming convention ? | 01/01/70 00:00 | |
ISO/IEC 9899:1990... | 01/01/70 00:00 | |
Comments | 01/01/70 00:00 | |
same effect as a "circular array" | 01/01/70 00:00 | |
think I like this the best | 01/01/70 00:00 | |
Use a loop with deglitching and averaging![]() | 01/01/70 00:00 |