hdo
beta
|
Demonstrace dekódování HDO signálu pomocí ADC na čipu. ...
#include <board.h>
#include <pio/pio.h>
#include <pit/pit.h>
#include <dbgu/dbgu.h>
#include <aic/aic.h>
#include <utility/trace.h>
#include <utility/led.h>
#include <adc/adc.h>
#include <stdio.h>
#include "goertzel.h"
#include "hdo.h"
Zobrazit zdrojový text tohoto souboru.
Definice maker | |
#define | BOARD_ADC_FREQ 6000000 |
frekvence hodin ADC převodníku | |
#define | PIT_PERIOD 1000 |
PIT perioda timeru - hodnota v �sekundách. | |
#define | ADC_NUM_1 ADC_CHANNEL_4 |
Funkce | |
static void | ISR_Pit (void) |
Přerušovací rutina pro PIT interrupt. Inkrementuje timestamp a startuje převod. | |
static void | ISR_Adc (void) |
static void | ConfigurePit (void) |
int | main (void) |
Vlastní program. | |
Proměnné | |
static const Pin | pinsADC [] = {PINS_ADC} |
Použité Pio piny (ADC). | |
static volatile unsigned int | timestamp = 0 |
Pomocný timestamp v milisekundách. | |
static volatile unsigned int | counter = 0 |
Index pro zápis do buferu. | |
static short | result |
Výsledek A/D převodu. | |
static short | buf_a [GOERTZEL_N] |
první bufer pro AD data | |
static short | buf_b [GOERTZEL_N] |
druhý bufer pro AD data | |
static volatile int | pswitch = 0 |
přepínač buferů | |
static volatile int | change = 0 |
změna přepínače buferů |
Účel
Demonstrace dekódování HDO signálu pomocí ADC na čipu
Popis
Tento program demonstruje použití ADC na čipu AT91SAM7S256. Měří napětí na pinu AD4 se vzorkováním 1000 Hz a vyhodnocuje obsah o frekvenci 216,6 Hz. ADC používá přerušení,jež proběhne po skončení převodu. Převod se startuje opět z přerušení a to od časovače PIT. Ten má periodu 1/1000 s.
Použití
-- ADC Projekt HDO xxx -- -- AT91xxxxxx-xx -- Compiled: xxx xx xxxx xx:xx:xx --
A1---B1-3-56-8 DP: -VZZ ZZZZ ---- ---V A1---B12------ DP: VVZZ ZZZZ ---- VZ-V A1---B---4--7- DP: V-ZZ ZZZZ --V- VZ-V A-2--B-------8 DP: ---- ---- V--- ---- A1---B12------ DP: VVVV VVVZ ---- -Z-V A1---B-2------ DP: VVVV VVVZ ---V VZVV A1---B-2------ DP: VZVV VVVZ ---V VZVV A1---B1------- DP: VVVV VVVZ ---- -Z-V A1---B-2------ DP: VZVV VVVZ ---V VZVV A1---B12-4-678 DP: V--- ---V ---- -V-V A1---B--3-5--- DP: Z-ZZ ZZZV ---Z ---V
Definice v souboru main.c.
static void ConfigurePit | ( | void | ) | [static] |
static void ISR_Adc | ( | void | ) | [static] |
Přerušovací rutina pro ADC. Zapíše hodnotu AD převodu do buferu. Pokud je bufer plný, přepne pswitch. Tím dá povel funci main, že může počítat goertzelův algoritmus
Definice je uvedena na řádku 166 v souboru main.c.
Odkazuje se na buf_a, buf_b, change, counter, GOERTZEL_N, pswitch, result a TRACE_DEBUG.
Používá se v main().