سلام به همگی . من این کد رو نوشتم . قصد من این هست که از تایمر 1 برای شمارش زمان 1 ثانیه و از تایمر 0 برای شمارش تعداد پالس ها ورودی به cap0.0 استفاده کنم برنامه ی زیر رو نوشتم . ( البته شاید بعضی کدهاش به موضوع ربط نداشته باشه) . اما نتونستم جواب بگیرم . در واقع می خواستم ببینم سرعت تغییر های پورتهای خروجیش دارای چه فرکانسی هست به همین منظور port2.0 رو مرتبا 0 و 1 می کنم و این پین رو خودم به cap0.0آ متصل کردم اما برنامه جواب نمی ده .
به طور خلاصه بگم مشکل من با کانتر می باشد .
ممنون می شم اگر دوستان تونستند رو کد بنده مشکل رو مشخص کنند و یا کد دلخواهی برای قسمت کانتر که جواب گرفتند قرار بدهند .
به طور خلاصه بگم مشکل من با کانتر می باشد .
ممنون می شم اگر دوستان تونستند رو کد بنده مشکل رو مشخص کنند و یا کد دلخواهی برای قسمت کانتر که جواب گرفتند قرار بدهند .
کد:
/************************************************************************************ Code created using the ARMwizard, visit http://alexan.edaboard.eu ************************************************************************************/ #include <stdio.h> #include "LCD.h" #include "delay.h" #include <LPC23xx.h> #define I2C0CONCLR I20CONCLR #define I2C1CONCLR I21CONCLR #define I2C2CONCLR I22CONCLR #define INTCLEAR MAC_INTCLEAR #define USBDevIntClr DEV_INT_CLR #define USBEpIntClr EP_INT_CLR #define USBDMARClr DMA_REQ_CLR #define USBEoTIntClr EOT_INT_CLR #define USBNDDRIntClr NDD_REQ_INT_CLR #define USBSysErrIntClr SYS_ERR_INT_CLR #define OTGIntClr OTG_INT_CLR #define ILR RTC_ILR #define IO0DIR IODIR0 #define IO1DIR IODIR1 #define MCIClear MCI_CLEAR #define DMACIntClear GPDMA_INT_TCCLR #define DMACIntErrClr GPDMA_INT_ERR_CLR /****************************************************************************** TIMER1 FAST interrupt service function ******************************************************************************/ __irq void FIQ_Handler (void) { /* write code here */ unsigned char buffer[15]; /* list of all available flags, select which to use */ T1IR = 1; /* Clear MAT0.0 interrupt flag */ T1IR = 2; /* Clear MAT0.1 interrupt flag */ T1IR = 4; /* Clear MAT0.2 interrupt flag */ T1IR = 8; /* Clear MAT0.3 interrupt flag */ T0IR = 16; /* Clear CAP0.0 interrupt flag */ T1IR = 32; /* Clear CAP0.1 interrupt flag */ VICVectAddr = 0; /* Acknowledge Interrupt */ lcd_clear(); set_cursor (0, 0); sprintf(buffer," %d",T0TC); lcd_print(buffer); T0TC=0; } /********************************************************************************************************** COMMENT THIS LINE IN THE STARTUP FILE USING A SEMICOLON ";" ---> ";FIQ_Handler B FIQ_Handler" ADD THE FOLLOWING LINE IN THE STARTUP CODE DIRECTLY ABOVE THE "Reset_Addr DCD Reset_Handler" IMPORT FIQ_Handler ;<---- add this line and use space in front of it **********************************************************************************************************/ int main(void) { /* P2.0: PORT2.0 (General purpose I/O) Output, neither pull-up nor pull-down P3.23: CAP0.0 (Capture input for Timer 0 channel 0), neither pull-up nor pull-down */ PINSEL0=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE0=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ IO0DIR=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINSEL1=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE1=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINSEL2=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE2=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ IO1DIR=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINSEL3=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE3=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINSEL4=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE4=0x00000002; /* binary: 00000000_00000000_00000000_00000010 */ FIO2DIR=0x00000001; /* binary: 00000000_00000000_00000000_00000001 */ PINSEL6=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE6=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ FIO3DIR=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINSEL7=0x00008000; /* binary: 00000000_00000000_10000000_00000000 */ PINMODE7=0x00008000; /* binary: 00000000_00000000_10000000_00000000 */ PINSEL8=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE8=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ FIO4DIR=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINSEL9=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ PINMODE9=0x00000000; /* binary: 00000000_00000000_00000000_00000000 */ /****************************************************************************** Vector interrupt initialization ******************************************************************************/ VICIntSelect = ((unsigned long)1<<5); /* Set TIMER1 as FAST Interrupt */ VICIntEnable = ((unsigned long)1<<5); /* Enable TIMER1 FAST Interrupt */ /****************************************************************************** Timer0 (32bit) ******************************************************************************* Counter Enabled, Counter Reset=0 Counter mode: TC incremented on both edges of CAP 0.0 Counter clk: Capture input/(PR+1), Counts every: Capture input/(PR+1) */ T0TCR=0x01; /* binary: 00000001 */ T0CTCR=0x03; /* binary: 00000011 */ T0TC=0x00000000; /* decimal 0 */ T0PR=0x00000000; /* decimal 0 */ T0PC=0x00000000; /* decimal 0 */ T0MCR=0x0000; /* binary: 00000000_00000000 */ T0MR0=0x00000100; /* decimal 256 */ T0MR1=0x00000000; /* decimal 0 */ T0MR2=0x00000000; /* decimal 0 */ T0MR3=0x00000000; /* decimal 0 */ T0CCR=0x0000; /* binary: 00000000_00000000 */ T0EMR=0x0000; /* binary: 00000000_00000000 */ /****************************************************************************** Timer1 (32bit) ******************************************************************************* Counter Enabled, Counter Reset=0 Timer mode: count on rising edge of PCLK Counter clk: 16 MHz, Counts every: 62.5 ns (calculated with peripheral clock: 12MHz) MCR1.0 : reset, generate interrupt on compare match */ T1TCR=0x00; /* binary: 00000001 */ T1CTCR=0x00; /* binary: 00000000 */ T1TC=0x00000000; /* decimal 0 */ T1PR=0x00000002; /* decimal 2 */ T1PC=0x00000000; /* decimal 0 */ T1MCR=0x0003; /* binary: 00000000_00000011 */ T1MR0=0x00F42400; /* decimal 16000000 */ T1MR1=0x00000000; /* decimal 0 */ T1MR2=0x00000000; /* decimal 0 */ T1MR3=0x00000000; /* decimal 0 */ T1CCR=0x0000; /* binary: 00000000_00000000 */ T1EMR=0x0000; /* binary: 00000000_00000000 */ /******************************************************************************/ lcd_init(); lcd_clear(); set_cursor (0, 0); lcd_print(" Majid Bahramian "); delay_ms(2000); /******************************************************************************/ T1TCR=0x01; while(1) { FIO2SET=0x00000001; FIO2CLR=0x00000001; } }