From c7ec79e08096ca81b690de154adab9c25a78e47a Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Mon, 23 Sep 2013 18:53:26 +0000 Subject: fixed stepper stop fixed limits git-svn-id: https://svn.spreadspace.org/avr/trunk@228 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- tuer-rfid/limits.c | 32 ++++++++++++++++++++------------ tuer-rfid/limits.h | 1 + tuer-rfid/stepper.c | 25 ++++++++++++------------- tuer-rfid/tuer-rfid.c | 1 + 4 files changed, 34 insertions(+), 25 deletions(-) diff --git a/tuer-rfid/limits.c b/tuer-rfid/limits.c index 6f567af..4e14b05 100644 --- a/tuer-rfid/limits.c +++ b/tuer-rfid/limits.c @@ -25,40 +25,48 @@ #include "limits.h" #include +#include + #define LIMITS_ADC_CHAN_NUM 8 #define LIMITS_ADC_CHAN ADC_CHANNEL8 #define LIMITS_RINGBUF_SIZE 5 /* HINT: this is compared to a sliding sum not an average! */ -#define LIMITS_TH_CLOSE 250 -#define LIMITS_TH_OPEN 1000 +#define LIMITS_TH_CLOSE 500 +#define LIMITS_TH_OPEN 3200 void limits_init(void) { ADC_Init(ADC_FREE_RUNNING | ADC_PRESCALE_128); ADC_SetupChannel(LIMITS_ADC_CHAN_NUM); - ADC_StartReading(ADC_REFERENCE_INT2560MV | ADC_LEFT_ADJUSTED | LIMITS_ADC_CHAN); + ADC_StartReading(ADC_REFERENCE_AVCC | ADC_RIGHT_ADJUSTED | LIMITS_ADC_CHAN); } -limits_t limits_get(void) +static uint16_t sum = 0; + +void limits_task(void) { - static uint8_t s = 0; - static uint8_t r[LIMITS_RINGBUF_SIZE] = { 0 }; + static uint16_t r[LIMITS_RINGBUF_SIZE] = { 0 }; static uint8_t idx = 0; if(ADC_IsReadingComplete()) { - r[idx] = (ADC_GetResult()>>8); + r[idx] = ADC_GetResult(); idx = (idx + 1) % LIMITS_RINGBUF_SIZE; - s = 0; + cli(); + sum = 0; uint8_t i; - for(i=0; i= STEP_CNT_OFF) { - if(step_direction == dir_open) - eventqueue_push(open_fin); - else - eventqueue_push(close_fin); - + if(step_cnt >= STEP_CNT_OFF) return 0; - } return 1; } diff --git a/tuer-rfid/tuer-rfid.c b/tuer-rfid/tuer-rfid.c index 32cf5c7..60d2974 100644 --- a/tuer-rfid/tuer-rfid.c +++ b/tuer-rfid/tuer-rfid.c @@ -141,6 +141,7 @@ int main(void) anyio_task(); manual_task(); ajar_task(); + limits_task(); int16_t bytes_received = anyio_bytes_received(); if(bytes_received > 0) -- cgit v1.2.3