прошить atmega8 с помощью uno

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

Здравствуйте!

Заливаю код в ардуню  все работает, хотель залить его же в atmega8 с помощью ардуино (до этого другие скетчи заливал работали)но проблема, матерится на строку SET(TIMSK1,OCF1A);

я так понимаю этого нет в atmega8 вот и матерится. Нашел талмут к меге8

TOIE1=1: прерывание по переполнению T/C1 разрешено

OCIE1A=1: прерывание при совпадении регистра сравнения A с содержимым счётчика T/C1 разрешено

OCIE1B=1: прерывание при совпадении регистра сравнения B с содержимым счётчика T/C1 разрешено

TICIE=1: разрешено прерывание при выполнении условия захвата

TOIE0=1: прерывание по переполнению T/C0 разрешено

TOV1=1: произошло переполнение T/C1

OCF1A=1: произошло совпадение регистра сравнения A с содержимым счётчика T/C1 разрешено

OCF1B=1: произошло совпадение регистра сравнения B с содержимым счётчика T/C1 разрешено

ICF=1:  выполнилось условия захвата

TOV0=1: произошло переполнение T/C0

но не могу правильно поправить код, можно ли его поравить?

 

 

// http://dzlsevilgeniuslair.blogspot.dk/

// Connect search coil oscillator (20-200kHz) to pin 5
// Connect piezo between pin 13 and GND
// Connect NULL button between pin 12 anf GND

// REMEMBER TO PRESS NULL BUTTON AFTER POWER UP!!

#define SET(x,y) (x |=(1< #define CLR(x,y) (x &= (~(1< #define CHK(x,y) (x & (1< #define TOG(x,y) (x^=(1<

unsigned long t0=0; //-Last time
int t=0; //-time between ints
unsigned char tflag=0; //-Measurement ready flag

float SENSITIVITY= 1000.0; //-Guess what

//-Generate interrupt every 1000 oscillations of the search coil
SIGNAL(TIMER1_COMPA_vect)
{
OCR1A+=1000;
t=micros()-t0;
t0+=t;
tflag=1;
}

void setup()
{
pinMode(13,OUTPUT); //-piezo pin
digitalWrite(12,HIGH); //-NULL SW. pull up
//-Set up counter1 to count at pin 5
TCCR1A=0;
TCCR1B=0x07;
SET(TIMSK1,OCF1A);
}
//-Float ABS
float absf(float f)
{
if(f<0.0)
return -f;
else
return f;
}

int v0=0; //-NULL value
float f=0; //-Measurement value
unsigned int FTW=0; //-Click generator rate
unsigned int PCW=0; //-Click generator phase
unsigned long timer=0; //-Click timer
void loop()
{
if(tflag)
{
if(digitalRead(12)==LOW) //-Check NULL SW.
v0=t; //-Sample new null value
f=f*0.9+absf(t-v0)*0.1; //-Running average over 10 samples
tflag=0; //-Reset flag

float clf=f*SENSITIVITY; //-Convert measurement to click frequency
if(clf>10000)
clf=10000;
FTW=clf;
}

//-Click generator
if(millis()>timer)
{
timer+=10;
PCW+=FTW;
if(PCW&0x8000)
{
digitalWrite(13,HIGH);
PCW&=0x7fff;
}
else
digitalWrite(13,LOW);
}
}

aleksey19ru
Offline
Зарегистрирован: 23.06.2016

SET(TIMSK1,OCF1A);
Если заменить на SET(TIMSK,OCIE1A)
К (XCK/T0) PD4 пину подключать вместо 5 пина ардуино