سلام
کسی تایمر رو تو مد capture راه انداخته؟ می خوام عرض پالس یه ورودی رو بدست بیارم.
کسی تایمر رو تو مد capture راه انداخته؟ می خوام عرض پالس یه ورودی رو بدست بیارم.
#include <Atmel/ioat91sam7s64.h> #include <intrinsics.h> #include "lcd.h" //------------------------------------------------------ unsigned int ipwm,i1timer,i2timer,i3timer; //------------------pwm irq------------------------------- void pwmc_irq_handler(void) { unsigned int dummy; dummy = AT91C_BASE_PWMC->PWMC_ISR; dummy = dummy; ipwm++; if (ipwm==50000) { ipwm = AT91C_BASE_PWMC_CH1->PWMC_CDTYR + 10; if (ipwm==250) { AT91C_BASE_PWMC_CH1->PWMC_CUPDR =10; } else { AT91C_BASE_PWMC_CH1->PWMC_CUPDR = ipwm; } ipwm=0; } } //---------------------timer irq--------------------------- void timer0_irq_handler(void) { unsigned int dummy; dummy = AT91C_BASE_TC0->TC_SR; dummy = dummy; i1timer=AT91C_BASE_TC0->TC_RA; i2timer=AT91C_BASE_TC0->TC_RB; if(i3timer!=i1timer) { lcd_clear (); lcd_gotoxy (0,0); lcd_puts (i1timer); lcd_gotoxy (0,5); lcd_puts (i2timer); lcd_gotoxy (0,11); lcd_puts (i2timer-i1timer); lcd_gotoxy (1,0); lcd_putsf("f="); lcd_puts (6000000/i2timer); lcd_putsf("hz"); lcd_gotoxy (1,10); lcd_putsf("DC="); lcd_puts (((i2timer-i1timer)*100)/i2timer); lcd_putsf("%"); i3timer=i1timer; } } //--------------------main--------------------------- void main() { //--------------------start up-------------------------- AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS; // AT91C_WDTC_WDDIS=(1<<15) AT91C_BASE_RSTC->RSTC_RMR=0xA5000001; //--------------------speed up-------------------------- AT91C_BASE_CKGR->CKGR_MOR = 0xF01; AT91C_BASE_CKGR->CKGR_PLLR = 0x7C3F18; //pllout 96000000 AT91C_BASE_PMC->PMC_MCKR = 0x7; //mck 48000000 AT91C_BASE_PMC->PMC_SCER = 0x1; //------------------set clk------------------------------ AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_PIOA ); // AT91C_ID_PIOA=2 AT91C_BASE_PMC->PMC_PCER = (1<<AT91C_ID_PWMC); // AT91C_ID_PWMC=10 AT91C_BASE_PMC->PMC_PCER = ( 1<<AT91C_ID_TC0 ); // AT91C_ID_TC0=12 //-------------------set pwm---------------------------- AT91C_BASE_PIOA->PIO_PDR = (1<<1); AT91C_BASE_PIOA->PIO_MDER = (1<<1); AT91C_BASE_PIOA->PIO_ASR = (1<<1); AT91C_BASE_PWMC_CH1->PWMC_CMR = 0x203; AT91C_BASE_PWMC_CH1->PWMC_CPRDR = 250; AT91C_BASE_PWMC_CH1->PWMC_CDTYR = 10; AT91C_BASE_PWMC->PWMC_ENA = 0x2; //--------------------set aic pwm--------------------------- AT91C_BASE_AIC->AIC_SVR[AT91C_ID_PWMC] = (unsigned int) pwmc_irq_handler; AT91C_BASE_AIC->AIC_SMR[AT91C_ID_PWMC] = 0x7; AT91C_BASE_AIC->AIC_ICCR = (1<<AT91C_ID_PWMC); AT91C_BASE_PWMC->PWMC_IER = 0x2; AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_PWMC); //--------------------set timer-------------------------- AT91C_BASE_PIOA->PIO_PDR = (1<<0); AT91C_BASE_PIOA->PIO_MDER = (1<<0); AT91C_BASE_PIOA->PIO_BSR = (1<<0); AT91C_BASE_TC0->TC_CMR = 0x90641; //tcclks=mck/8=6000000 AT91C_BASE_TC0->TC_CCR = 0x1; //--------------------set aic timer------------------------- AT91C_BASE_AIC->AIC_SVR[AT91C_ID_TC0] = (unsigned int) timer0_irq_handler; AT91C_BASE_AIC->AIC_SMR[AT91C_ID_TC0] = 0x5; AT91C_BASE_AIC->AIC_ICCR = (1<<AT91C_ID_TC0); AT91C_BASE_TC0->TC_IER = (1<<6); AT91C_BASE_AIC->AIC_IECR = (1<<AT91C_ID_TC0); //----------------------------------------------------- lcd_pininit(16,15,5,6,7,8,26,27,28,29); lcd_init (); lcd_clear (); lcd_gotoxy (0,0); lcd_puts (0); lcd_gotoxy (0,5); lcd_puts (0); lcd_gotoxy (0,11); lcd_puts (0); lcd_gotoxy (1,0); lcd_putsf("f="); lcd_puts (0); lcd_putsf("hz"); lcd_gotoxy (1,10); lcd_putsf("DC="); lcd_puts (0); lcd_putsf("%"); ipwm=0; i3timer=0; __enable_interrupt(); //----------------------------------------------------- while (1) { /* while ((AT91C_BASE_TC0->TC_SR&(1<<6))==0); i1timer=AT91C_BASE_TC0->TC_RA; i2timer=AT91C_BASE_TC0->TC_RB; if(i3timer!=i1timer) { lcd_clear (); lcd_gotoxy (0,0); lcd_puts (i1timer); lcd_gotoxy (0,5); lcd_puts (i2timer); lcd_gotoxy (0,11); lcd_puts (i2timer-i1timer); lcd_gotoxy (1,0); lcd_putsf("f="); lcd_puts (6000000/i2timer); lcd_putsf("hz"); lcd_gotoxy (1,10); lcd_putsf("DC="); lcd_puts (((i2timer-i1timer)*100)/i2timer); lcd_putsf("%"); i3timer=i1timer; }*/ } } //---------------------------------------------------------
دیدگاه