Обороты двигателя думаю брать с генератора(выдает прямоугольники).
Вот накатал заготовочку но не пойму почему не работает.
Спойлер
Код: Выделить всё
/*
* exp_mega8.c
*
* Created: 15.07.2013 10:22:54
* Author: foton6
*/
#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
unsigned short int a=0;
int k;
void init (void)
{
///////////________UASRT________/////////////
UCSRB|=0x18;
UCSRC|=0x83;
UBRRL=25;
//////////___Timer 1-counter___/////////////
TCCR1B|=0x06;
/////////____Timer 0-timer____/////////////
TCCR0|=0x05;
TIMSK|=0x01;
/////////______////////////
DDRC=0x08;
}
void send (void)
{
char buff[250]={0};
char *out=itoa(a,buff,10);
while(k>0)
{
k--;
UDR=0x08;
}
while(*out)
{
k++;
if( UCSRA & (1<<UDRE))
{
UDR=*out++;
}
}
}
int main(void)
{
init();
while(1)
{
send();
_delay_ms(500);
}
}
ICR(TIMER0_OVF_vect)
{
int e=0;
e=TCNT1L;
a=TCNT1H;
a<<=4;
a|=e;
TCNT1L=0x00;
TCNT1H=0x00;
PORTC^=0x08;
}
Перетаскивал в "мейн" этот кусок:
Код: Выделить всё
int e=0;
e=TCNT1L;
a=TCNT1H;
a<<=4;
a|=e;Подскажите в чем тут дело?
И может есть более рациональные способы мерить частоту?
О и в плане "говно кода" нормально ли оформлено? и что считается плохим тоном в программировании? )))))


