Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

Reflexes test.

// Built with BFTC Rev. 1.0.0, lun 25 agosto 2014 17:00:44
/*
    Copyright 2014 Digital Technology Art SRL
    This file is part of Blackfin Toolchain (BFTC) project.

    BFTC 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 3 of the License, or
    (at your option) any later version.

    BFTC 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 Nome-Programma.  If not, see <http://www.gnu.org/licenses/>.
*/

// Test of reflexes speed
// Connect on PG0 a switch in this mode:
//            10K Resistor
// Y14.1 ---+----[====]---+
//          |             |
//           [-( BUTTON   |
//          |             |
// Y12.4 ---+             +--- Y12.6
// 
// Run the program and when the string START is displayed press the button
// at your maximum speed.
// Repeat the test for an average value.
// 
#include "main.h"

#define ST st = Get_TimerCounter(TIMER_0)
#define ET et = Get_TimerCounter(TIMER_0)

#define TIMEBASE 0xFFFFFFFF

unsigned int st, et;

void display()
{
    double tx;
    if(st > et) tx = TIMEBASE - st + et;
    else tx = et - st;
    printf("Elapsed time: %10.3f ms\n", tx / 100000.0);
}

// Interrupt service procedure
//
void PortCallback()
{
    ET;
    display();
    // Clear the interrupt request
    *pPORTGIO_CLEAR = PG0;
}

unsigned randx(unsigned val)
{
    return Get_TimerCounter(TIMER_0) * 0x1961957 + val;
}

int main(void)
{
    Set_PLL(16, 4);     // CORE: 25MHz * 16 = 400MHz, SCLK: 400MHz / 4 = 100MHz
    Set_Port();         // Set the port according to project set
    Set_Uart0(115200);  // printf is redirected to UART0
    
    // Set an interrupt on the rising edge of the PG0 port
    Set_PortGInterruptService(PG0, PortCallback);
    Set_PortGInterruptEnable(PG0, true);
    Set_TimerCounter(TIMER_0);
    Set_TimerEnable(TIMER_0, true);
    while(1)            // Main loop
    {
        printf("START!\n");
        ST;
        DelayUs(500000 + randx(et) % 1000000);
    }
    return 0;
}

Generated on Tue Apr 7 20:07:44 2015 for BF592A Library by doxygen 1.3.1