summaryrefslogtreecommitdiff
path: root/ezdop/src/firmware/dopctrl.c
diff options
context:
space:
mode:
authorjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>2007-05-01 16:03:18 +0000
committerjcorgan <jcorgan@221aa14e-8319-0410-a670-987f0aec2ac5>2007-05-01 16:03:18 +0000
commit4735dd8fe9a5bb501b6a125f18ad802293ebd45e (patch)
tree870f26497b2249170e152ad0efcc087b814467cd /ezdop/src/firmware/dopctrl.c
parent67c488c82e14fe28f9db001116a1319ede4b8c8f (diff)
Moved obsolete component into limbo.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@5206 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'ezdop/src/firmware/dopctrl.c')
-rw-r--r--ezdop/src/firmware/dopctrl.c193
1 files changed, 0 insertions, 193 deletions
diff --git a/ezdop/src/firmware/dopctrl.c b/ezdop/src/firmware/dopctrl.c
deleted file mode 100644
index a9419da6e7..0000000000
--- a/ezdop/src/firmware/dopctrl.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * AE6HO EZ-Doppler firmware for onboard ATmega8 microcontroller
- * Copyright 2006 Free Software Foundation, Inc.
- *
- * This file is part of GNU Radio
- *
- * GNU Radio is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * GNU Radio is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with GNU Radio; see the file COPYING. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street,
- * Boston, MA 02110-1301, USA.
- */
-
-/*
- * ARCHITECTURE
- *
- * Timer0 is 8000 Hz time base
- * PORTD.2 through PORTD.5 are doppler antenna array element enables.
- * PORTB.0 is a diagnostic LED, set low to light up
- * ADC7 is audio input
- * ADC6 is RSSI input - not yet used
- *
- */
-
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include <compat/deprecated.h> // for timer_enable_int
-#include "dopctrl.h"
-
-#define LED 0
-#define turn_off_led() PORTB |= _BV(LED);
-#define turn_on_led() PORTB &= ~_BV(LED);
-
-#define ANT1 _BV(2)
-#define ANT2 _BV(3)
-#define ANT3 _BV(4)
-#define ANT4 _BV(5)
-#define ANTMASK ANT1|ANT2|ANT3|ANT4
-
-#define ADCAIN 7
-#define BAUDRATE 250000
-
-/* Assume these are all set to zero in startup code */
-
-uint8_t rotate; /* Flag to indicate antennas should rotate or not */
-uint8_t streaming; /* Flag to indicate continuous sampling */
-uint8_t antennas; /* Holds shadow copy of PORTD antennas */
-uint8_t speed; /* Holds samples per phase increment */
-uint8_t phase; /* Holds rotation phase (measured in samples */
-
-uint8_t audio_hi; /* High byte of ADC sample of audio */
-uint8_t audio_lo; /* Low byte of ADC sample of audio */
-
-uint8_t rx; /* Temporary holds received byte from USART */
-uint8_t command; /* Temporary to hold command when getting operand */
-uint8_t cmdbyte; /* Tracks bytes received in multi-byte commands */
-
-int main(void)
-{
- /* Diagnostic port setup */
- DDRB = _BV(LED); /* PB0 is output */
- turn_off_led();
-
- /* Antenna control port setup */
- speed = 4; /* Todo: read from EEPROM */
- antennas = ANT1; /* Start with antenna #1 */
- PORTD = antennas; /* Set port value */
- DDRD = ANTMASK; /* Set antenna enables as PORTD outputs */
-
- /* ADC port setup */
- ADMUX = _BV(REFS0)|ADCAIN; /* AVCC is reference, use ADC for audio input (ADC7) */
- ADCSRA = _BV(ADEN)|_BV(ADIE)|0x07; /* Enable converter, prescale by 128, enable ADC interrupt */
-
- /* USART port setup*/
- UCSRA = 0; /* Normal asynchronous mode */
- UCSRB = _BV(TXEN)|_BV(RXEN)|_BV(RXCIE); /* Enable transmitter and receiver, and receiver interrupts */
- UCSRC = _BV(URSEL)|_BV(UCSZ1)|_BV(UCSZ0); /* 8N1 format */
- UBRRH = 0; /* Set baud rate prescaler to 3 */
- UBRRL = 3; /* To get 250000 bps */
-
- /* Set up 8000 Hz time base */
- timer_enable_int(_BV(TOIE0)); /* Turn on Timer0 output overflow interrupt */
- TCCR0 = _BV(CS01); /* Clock Timer0 from CLK/8 */
-
- sei(); /* Let 'er rip! */
- return 0;
-}
-
-/* Timer0 overflow interrupt handler
- *
- * Creates 8000 Hz time base, or 125us budget
- *
- */
-SIGNAL(SIG_OVERFLOW0)
-{
- /* Reload Timer0 samples to 8, results in 8000 Hz overflow interrupt */
- TCNT0 = 0x08;
-
- if (streaming) {
- /* Kick-off an audio sample conversion, will interrupt 104us later */
- ADCSRA |= _BV(ADSC);
-
- /* Write the first byte of previous sample and enable UDRIE */
- UDR = audio_lo;
- UCSRB |= _BV(UDRIE);
- }
-
- if (!rotate) /* Skip rotating antenna if not started */
- return;
-
- /* Increment antenna phase and see if antenna need to be rotated */
- if (++phase == speed) {
- phase = 0;
-
- /* Sequence antenna array elements */
- antennas >>= 1;
- antennas &= ANTMASK;
-
- if (!antennas)
- antennas = ANT4;
- PORTD = antennas;
- }
-}
-
-/* ADC conversion complete interrupt handler
- *
- * Read value and store. Assume prior sample has been handled.
- *
- */
-SIGNAL(SIG_ADC)
-{
- audio_lo = ADCL;
- audio_hi = ADCH;
-}
-
-/* USART data transmit holding register empty interrupt handler
- *
- * First byte is always sent from timer interrupt
- * So second byte gets sent here with UDRIE disabled
- *
- */
-SIGNAL(SIG_UART_DATA)
-{
- /* Write second byte of previous sample and disable UDRIE */
- UDR = audio_hi | (antennas << 2);
- UCSRB &= ~_BV(UDRIE);
-}
-
-/* USART receive complete interrupt handler
- *
- * Received bytes are commands, with one or two bytes of operands following
- *
- */
-SIGNAL(SIG_UART_RECV)
-{
- rx = UDR;
-
- if (cmdbyte == 0) {
- if (rx == EZDOP_CMD_ROTATE) /* Start rotation */
- rotate = 1;
- else if (rx == EZDOP_CMD_STOP) /* Stop rotation */
- rotate = 0;
- else if (rx == EZDOP_CMD_RATE) { /* Set rotation rate */
- command = rx;
- cmdbyte = 1;
- }
- else if (rx == EZDOP_CMD_STREAM) /* Stream audio samples */
- streaming = 1;
- else if (rx == EZDOP_CMD_STROFF) /* Stop streaming */
- streaming = 0;
- else
- turn_on_led(); /* Unknown command */
- }
- else if (cmdbyte == 1) {
- if (command == EZDOP_CMD_RATE) { /* Operand is number of samples per phase increment */
- speed = rx;
- cmdbyte = 0;
- }
- else
- turn_on_led(); /* Bogus command state */
- }
- else
- turn_on_led(); /* Bogus command state */
-}