📄 tools.c
字号:
//*----------------------------------------------------------------------------
//* ATMEL Microcontroller Software Support - ROUSSET -
//*----------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*----------------------------------------------------------------------------
//* File Name : tools.c
//* Object : tools for get triminal information
//*
//* 1.0 25/08/00 JPP : Creation
//*----------------------------------------------------------------------------
#include <stdio.h>
#include "lib_tools.h"
#include "parts/m55800/lib_m55800.h"
//* Global Variable
extern char message[512];
extern manage_timer timer_base;
//*----------------------------------------------------------------------------
//* Function Name : get_timer_id
//* Object : Get timer desc information
//* Input Parameters : trigger selection pointer
//* Output Parameters : Timer descriptor
//*----------------------------------------------------------------------------
const TCDesc * get_timer_id( int * trig_selection)
{
int read;
const TCDesc *TC_choise;
at91_print(&COM,"Timer 0 to 5:");
at91_scanf(&COM,"%d", &read);
at91_print(&COM,"\n\r");
switch(read)
{
case 0:
TC_choise = &TC0_DESC;
*trig_selection = ADC_TRG_TIOA0;
break;
case 1:
TC_choise = &TC1_DESC;
*trig_selection = ADC_TRG_TIOA1;
break;
case 2:
TC_choise = &TC2_DESC;
*trig_selection = ADC_TRG_TIOA2;
break;
case 3:
TC_choise = &TC3_DESC;
*trig_selection = ADC_TRG_TIOA3;
break;
case 4:
*trig_selection = ADC_TRG_TIOA4;
TC_choise = &TC4_DESC;
break;
case 5:
*trig_selection = ADC_TRG_TIOA5;
TC_choise = &TC5_DESC;
break;
default: /* invalid command */
TC_choise = 0x0000;
*trig_selection = ADC_TRG_EXT;
break;
}
return TC_choise;
}
//*----------------------------------------------------------------------------
//* Function Name : get_timer_manage
//* Object : set the descriptor with the num timer
//* Input Parameters : none
//* Output Parameters : set global variable timer_base
//*----------------------------------------------------------------------------
void get_timer_manage( void)
{
at91_print(&COM,"ADC 0");
timer_base.TC_adc0= get_timer_id(&timer_base.trig_selection_adc0);
at91_print(&COM,"ADC 1");
timer_base.TC_adc1= get_timer_id(&timer_base.trig_selection_adc1);
at91_print(&COM,"DAC 0");
timer_base.TC_dac0= get_timer_id(&timer_base.trig_selection_dac0);
at91_print(&COM,"DAC 1");
timer_base.TC_dac1= get_timer_id(&timer_base.trig_selection_dac1);
}
//*----------------------------------------------------------------------------
//* Function Name : print_timer_manage
//* Object : Print num timer
//* Input Parameters : desc timer
//* Output Parameters : none
//*----------------------------------------------------------------------------
void print_one_timer(const TCDesc *TC_choise)
{
if (TC_choise == &TC0_DESC)
at91_print(&COM,"0");
if (TC_choise == &TC1_DESC)
at91_print(&COM,"1");
if (TC_choise == &TC2_DESC)
at91_print(&COM,"2");
if (TC_choise == &TC3_DESC)
at91_print(&COM,"3");
if (TC_choise == &TC4_DESC)
at91_print(&COM,"4");
if (TC_choise == &TC5_DESC)
at91_print(&COM,"5");
if (TC_choise == 0x0)
at91_print(&COM,"External timer");
}
//*----------------------------------------------------------------------------
//* Function Name : print_timer_manage
//* Object : Print trimers configuration
//* Input Parameters : none
//* Output Parameters : none
//*----------------------------------------------------------------------------
void print_timer_manage( void)
{
at91_print_crlf(&COM);
at91_print(&COM,"ADC 0 Timer:");
print_one_timer(timer_base.TC_adc0);
at91_print_crlf(&COM);
at91_print(&COM,"ADC 1 Timer:");
print_one_timer(timer_base.TC_adc1);
at91_print_crlf(&COM);
at91_print(&COM,"DAC 0 Timer:");
print_one_timer(timer_base.TC_dac0);
at91_print_crlf(&COM);
at91_print(&COM,"DAC 1 Timer:");
print_one_timer(timer_base.TC_dac1);
at91_print_crlf(&COM);
}
//*----------------------------------------------------------------------------
//* Function Name : get_timer_mode
//* Object : Get ADC information mode and channel
//* Input Parameters : mode pointer and channel pointer
//* Output Parameters : none
//*----------------------------------------------------------------------------
void get_timer_mode( int *tioc, int *tc_div )
{
at91_print(&COM,"Timer val:");
at91_scanf(&COM,"%d", tioc);
at91_print_crlf(&COM);
sprintf(message,"Div MCKI val: %d / 0=> div 2, 1 => div8, 2 => div32, 3 => div128 , 4 => div1024 \n\r",*tc_div);
at91_print(&COM,message);
at91_scanf(&COM,"%d", tc_div);
*tc_div &= TC_CLKS;
at91_print_crlf(&COM);
}
//*----------------------------------------------------------------------------
//* Function Name : print_timer_mode
//* Object : print adc mode
//* Input Parameters : String pointer
//* Output Parameters : none
//*----------------------------------------------------------------------------
void print_timer_mode(int tioc,int tc_div)
{
sprintf(message,"Timer val: %d Hex:%04X \n\r",tioc,tioc);at91_print(&COM,message);
sprintf(message,"Div MCKI val: %d / 0=> div 2, 1=> div8, 2=> div32, 3=> div128, 4=> div1024\n\r",tc_div);at91_print(&COM,message);
if ( tc_div == TC_CLKS_MCK2)
at91_print(&COM," MCKI / 2") ;
else if ( tc_div == TC_CLKS_MCK8)
at91_print(&COM," MCKI / 8");
else if ( tc_div == TC_CLKS_MCK32)
at91_print(&COM," MCKI / 32");
else if ( tc_div == TC_CLKS_MCK128)
at91_print(&COM," MCKI / 128");
else if ( tc_div == TC_CLKS_MCK1024)
at91_print(&COM," MCKI / 1024");
else
at91_print(&COM," unknown");
at91_print_crlf(&COM);
}
//*----------------------------------------------------------------------------
//* Function Name : get_adc_mode
//* Object : Get ADC information mode and channel
//* Input Parameters : mode pointer and channel pointer
//* Output Parameters : none
//*----------------------------------------------------------------------------
void get_adc_mode( int *adc_mode,int *adc_channel )
{
int read;
//* Get Resolution
at91_print(&COM,"Reslution 0 for 10 bits or 1 for 8 bits:");
at91_scanf(&COM,"%d", &read);
if ( read != 0 )
* adc_mode |= ADC_8_BIT_RES;
else
* adc_mode &= ~ADC_8_BIT_RES;
//* Get Presacler
at91_print(&COM,"\n\rPresacler ADC channel 0 to 63:");
at91_scanf(&COM,"%d", &read);
*adc_mode &= ~ADC_PRESCAL;
*adc_mode |= (read << ADC_B_PRESCAL)& ADC_PRESCAL;
at91_print(&COM,"\n\rSelect ADC adc_channel 0 to F (1 for channel 0) (Hex):");
at91_scanf(&COM,"%X", adc_channel);
at91_print_crlf(&COM);
}
//*----------------------------------------------------------------------------
//* Function Name : print_adc_mode
//* Object : print adc mode
//* Input Parameters : String pointer
//* Output Parameters : none
//*----------------------------------------------------------------------------
void print_adc_mode(int adc_mode,int adc_channel)
{
int val;
sprintf(message," ADC_MR Mode register 0x%08X \n\r",adc_mode);at91_print(&COM,message);
if ( (adc_mode & ADC_8_BIT_RES)== ADC_8_BIT_RES )
{
at91_print(&COM," ADC in 8 bits mode \n\r");
}
else
{
at91_print(&COM," ADC in 10 bits mode \n\r");
}
val = (adc_mode & ADC_PRESCAL);
sprintf(message," presacler %d : \n\r",(val >> ADC_B_PRESCAL));at91_print(&COM,message);
sprintf(message," Chanel active 0x%04X \n\r",adc_channel);at91_print(&COM,message);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -