Всем добрый день!
Задавал вопрос в ветке "Измерения", что-то все молчат.
Может быть сюда заглянет опытный программист...
Собрал простенький частотомер.
Возможно не учел какую то тонкость в программе.
При измерении показания прыгают вперед-назад примерно на 100 Гц.
Например при измерении частоты tiny2313 с кварцем 4 МГц показывает 4000.27, 4000.17, 4000.27 ... и т.д. Т.е. два фиксированных числа. И это при измерении любого источника сигнала.
Видимо где-то не доработал.
Помогите советом пожалуйста.
Роман
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 16,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
******************** ******************** *************/
#include <mega8.h>
#asm
.equ __lcd_port=0x12
#endasm
#include <alcd.h>
#include <stdio.h>
#include <delay.h>
float A=0; // частота
unsigned char C=0; // временнаяпеременная
char temp[64];// массив LCD
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
A=A+256; // количество входных импульсов
}
Прерывание раз в секунду
interrupt [TIM1_COMPA] void timer1_compa_isr(voi d)
{
C=TCNT0;
A=(A+C)/100; //с учетом предварительного делителя на 10
lcd_clear();
lcd_gotoxy(0,0);
sprintf(temp,"%.2f", A);
lcd_puts(temp);
lcd_gotoxy(4,1);
lcd_puts("kHz");
A=0;
C=0;
TIFR=0xFF;
#asm("cli")
TCNT1=0;
TCNT0=0;
#asm("sei")