سلام دوستان
من اولین برنامه مربوط به تایمر/کانتر هارو (با یکم تغییر) رو برد آزمایشیم تست کردم ولی سه تا مشکل دارم
اول اینکه وقتی کلید شمارنده رو فشار میدم مقدار کانتر چند تا تغییر میکنه و یکی یکی نمیره بالا
دوم اینکه مقدار اولیه کانتر 4 هست به جای 0
سوم اینکه کلید مربوط به تریگر خارجی اصلا کار نمیکنه و عملا نمیشه شمارنده رو ریست کرد ...
کدی که استفاده میکنم :
کد:
#include <AT91SAM7X256.h>
#include <stdio.h>
#include <delay.h>
#define LCD_PORT_B
#define LCD_RS 0
#define LCD_E 1
#define LCD_DB4 2
#define LCD_DB5 3
#define LCD_DB6 4
#define LCD_DB7 5
#include <lcd.h>
int main (void){
char lcd_buffer[10];
int a;
// Enable TC Clock
* AT91C_PMC_PCER = (1<< AT91C_ID_TC2);
// Timer Counter Configuration : Capture Mode
// TC_CCR2 Configuration : (CLKEN = 1) (CLKDIS = 0) (SWTRG = 1)
* AT91C_TC2_CCR = 0x00000005;
// TC_CMR2 Configuration : (TCCLKS = 101) (CLKI = 1) (BURST = 10) (CPCTRG = 1) (WAVE =0)
* AT91C_TC2_CMR = 0x0000402D;
// Put 20 In The Timer Counter Register C (RC)
* AT91C_TC2_RC = 20;
lcd_init();
while(1)
{
lcd_clear();
cursor_off();
lcd_gotoxy(1,1);
a=* AT91C_TC2_CV;
sprintf(lcd_buffer,"counter:%d",a);
lcd_putsf(lcd_buffer);
delay_ms(500);
}}
برای اطمینان از پول آپ خارجی هم استفاده کردم
کلید کانتر رو به پورت B.12 و کلید ریست رو به پورت B.19 وصل کردم.
کسی میتونه منو راهنمایی کنه ؟
با تشکر