From f0453763690ca6a59fffebd9d69ce9c5ca3a7bdc Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Fri, 4 Apr 2014 00:14:09 +0200 Subject: [PATCH] Migrated hardware --- Modem/hardware.c | 41 ++++++++++++++++++----------------------- buildrev.h | 2 +- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/Modem/hardware.c b/Modem/hardware.c index 5170f97..da4e5ae 100644 --- a/Modem/hardware.c +++ b/Modem/hardware.c @@ -8,33 +8,32 @@ #include -static Afsk *ctx; +static Afsk *context; -void hw_afsk_adcInit(int ch, Afsk *_ctx) +void hw_afsk_adcInit(int ch, Afsk *_context) { - ctx = _ctx; + context = _context; ASSERT(ch <= 5); - AFSK_STROBE_INIT(); - AFSK_STROBE_OFF(); - /* Set prescaler to clk/8 (2 MHz), CTC, top = ICR1 */ + // Timer/Counter Control Register 1 (Timer1 settings, for short) + // Set prescaler to clk/8 (2 MHz), CTC, top = ICR1 TCCR1A = 0; TCCR1B = BV(CS11) | BV(WGM13) | BV(WGM12); - /* Set max value to obtain a 9600Hz freq */ - ICR1 = ((CPU_FREQ / 8) / 9600) - 1; + // Configure ICR1 to get 9.6KHz sampling rate + ICR1 = ((CPU_FREQ / 8) / 9600) - 1; // Input capture register - /* Set reference to AVCC (5V), select CH */ + // Set reference to AVCC (5V), select pin ADMUX = BV(REFS0) | ch; DDRC &= ~BV(ch); PORTC &= ~BV(ch); DIDR0 |= BV(ch); - /* Set autotrigger on Timer1 Input capture flag */ - ADCSRB = BV(ADTS2) | BV(ADTS1) | BV(ADTS0); - /* Enable ADC, autotrigger, 1MHz, IRQ enabled */ - /* We are using the ADC a bit out of specifications otherwise it's not fast enough for our - * purposes */ + // Set autotrigger on Timer1 Input capture flag + ADCSRB = BV(ADTS2) | // Setting these three on (1-1-1) sets the ADC to + BV(ADTS1) | // "Timer1 capture event" + BV(ADTS0); // + ADCSRA = BV(ADEN) | // ADC Enable BV(ADSC) | // ADC Start converting BV(ADATE) | // Enable autotriggering @@ -43,17 +42,13 @@ void hw_afsk_adcInit(int ch, Afsk *_ctx) } +// Declare ADC ISR bool hw_afsk_dac_isr; - -/* - * This is how you declare an ISR. - */ -DECLARE_ISR(ADC_vect) -{ +DECLARE_ISR(ADC_vect) { TIFR1 = BV(ICF1); - afsk_adc_isr(ctx, ((int16_t)((ADC) >> 2) - 128)); + afsk_adc_isr(context, ((int16_t)((ADC) >> 2) - 128)); if (hw_afsk_dac_isr) - PORTD = afsk_dac_isr(ctx) & 0xF0; + PORTD = afsk_dac_isr(context) & 0xF0; else PORTD = 128; -} +} \ No newline at end of file diff --git a/buildrev.h b/buildrev.h index 9cc5759..a95a4f8 100644 --- a/buildrev.h +++ b/buildrev.h @@ -1,2 +1,2 @@ -#define VERS_BUILD 93 +#define VERS_BUILD 96 #define VERS_HOST "vixen"