işlemciye bağladığım encoderin 1 sn deki devir sayısını ölçmek istiyorum
x değişkeni belirledim mesela 1 saniye içinde encoderdin a çıkışından gelen her pals de x i bir arttırıp o değeri ordan almak istiorum ama şu timer olyını halledemedim (int ucunu kullanıom bu arada);
öncelikle hangi avr ile çalışıyorsun. çünkü farklı avr modellerinde farklı sayıda ve özellikte timerlar var (8bit, 16bit gibi). yazacağın program temel olarak her 1 saniyede x değişkenini daha sonra kullanmak için başka bir değişkene atıp x değişkenini sıfırlamaktır. timer olayında nerede sorun yaşıyorsun?
aslında avr deil işlemci
atmel 89c51 veya 2051 filan dı yani keil ile yapmaya çalışıodum
ben timeri alt programını yazamadım
int ucundan gelen pals sinyaline göre 1 saniye içinde ki pals sayısı ile bir değişkeni arttırıp sonra onu başka yerde kullanacaktım
şu ana kadar yazdığın kodu gönderirsen inceleyebiliriz.
8051 lerde 2 timer vardir timer0 ,timer1 bu timerler ayni zamanda counter olarak ta kullanilmaktadirlar timerden birini 1 sn sure uretiminde kullan digerini counter olarak kullan palsi say (uygun portlardan encoder palsini girerek).
(http://img440.imageshack.us/img440/3157/adszzu8.jpg)
#include <at892051.h>
#include <stdio.h>
unsigned int devir;
unsigned char yon;
void main ()
{
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
TI = 1;
while(1){
while(P3_2==1){
if(P3_4==0){
yon='I';
devir++;
printf("%c:%d\n",yon,devir);
}}}}
işte ordaki devir sayısı 1 sn içindeki ni almam lazım orası olmadı