hdo  beta
Definice maker | Funkce | Proměnné
Dokumentace souboru /home/mrazik/Documents/web/old/hdo/main.c

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ů

Detailní popis

Úč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í

  1. Vývojový kit od Kramara: Měří se napětí na AD4, reference je 3,3V (napájení). Pro indikaci jsou použity LED na pinu PA31 - bliká v rytmu výpočtu (1/6 s), PA0 - svítí, pokud je obsah signálu 213,6 Hz větší než nastavená hodnota.
  1. Zkompilovat projekt pomoci GNU nástrojů (arm-elf-gcc).
  2. DBGU port připojit k počítači, a spustit terminál
    • Nastavení: 115200 baud, 8 bit, 1 stop bit, bez parity, bez flow control.
  3. Soubor na ./bin/hdo-flash.bin nahrát do čipu. Více informací na SAM-BA User Guide , the GNU-Based Software Development
  4. Po startu programu vypisuje na DBGU následující (překlad s TRACE_LEVEL = 4):
        -- ADC Projekt HDO xxx --
        -- AT91xxxxxx-xx
        -- Compiled: xxx xx xxxx xx:xx:xx --
    
  5. a pak vypisuje přijaté telegramy např.:
        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
    
Poznámka:
Rutiny použité pro inicializaci procesoru jsou převzaty z programového balíku softpack-1.15 firmy Atmel co.

Definice v souboru main.c.


Dokumentace funkcí

static void ConfigurePit ( void  ) [static]

Konfiguruje periodický intervalový časovač, aby generoval přerušení každou milisekundu.

Definice je uvedena na řádku 195 v souboru main.c.

Odkazuje se na BOARD_MCK, ISR_Pit() a PIT_PERIOD.

Používá se v main().

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().