Примеры CodeVisionAVR - Частотомер & ЖКИ

Автор: Internet. Опубліковано в Початківцям з CV AVR

Зміст статті

Простой пример реализации частотомера....
Используем 1й счетчик тактируемый от внешнего генератора, пин T1.
    
 
 
Code
/*****************************************************
CodeWizardAVR V2.04.4a Advanced
Automatic Program Generator
© Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l.

Date : 12.03.2012
Author : c2.at.ua

Chip type : ATmega8
AVR Core Clock frequency: 4,000000 MHz

*****************************************************/

#include <mega8.h>
#include <delay.h>
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include  

unsigned long int frequency;

unsigned char lcd_buffer[17]; //Буфер LCD

void main(void)
{

PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x07;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x01;
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
#asm("sei")

while (1)
{

TCNT1=0; //Обнуляем
 // воспользуемся delay_xx надо выдержать секунду
 //на практике для этого лучше использовать второй счетчик
delay_ms(998);
delay_us(500);
//Подсчитываем сколько насчитал счетчик , пин T1
frequency =TCNT1; 

sprintf(lcd_buffer," %i Hz ",frequency); // 
lcd_gotoxy(2,0); //указали место на дисплее
lcd_puts(lcd_buffer); 

};
}