Чт авг 17, 2017 18:31:43
Чт авг 17, 2017 21:13:21
Пт авг 18, 2017 16:05:01
Пт авг 18, 2017 22:59:05
unsigned char out_1=0, out_2=0, out_3=0, out_4=0, out_5=0, out_6=0;
bit na,nb,nc,nd,ne,nf;
interrupt [EXT_INT0] void ext_int0_isr(void)
{
na=1;
nb=1;
nc=1;
nd=1;
ne=1;
nf=1;
TCNT0=0x00; //обнуляем счетный регистр
out_1=0;
out_2=0;
out_3=0; //обнуляем все выходы!!!
out_4=0;
out_5=0;
out_6=0;
}
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
out_1++;
out_2++;
out_3++;
out_4++;
out_5++;
out_6++;
if (na==1) {
if (out_1>30) { //время включения симистора
PORTC.2=1;
delay_us(30);
PORTC.2=0;
out_1=0;
na=0;
}
};
if (nb==1) {
if (out_2>50) {
PORTC.3=1;
delay_us(30);
PORTC.3=0;
out_2=0;
nb=0;
}
};
if (nc==1) {
if (out_3>150) {
PORTC.4=1;
delay_us(30);
PORTC.4=0;
out_3=0;
nc=0;
}
};
if (nd==1) {
if (out_4>0) {
PORTC.5=1;
delay_us(30);
PORTC.5=0;
out_4=0;
nd=0;
}
};
if (ne==1) {
if (out_5>0) {
PORTC.6=1;
delay_us(30);
PORTC.6=0;
out_5=0;
ne=0;
}
};
if (nf==1) {
if (out_6>0) {
PORTC.7=1;
delay_us(30);
PORTC.7=0;
out_6=0;
nf=0;
}
};
};
void main(void)
{
DDRC=0b11111100;
PORTC=0b00000000;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: faling Edge
// INT1: Off
// INT2: Off
GICR|=(0<<INT1) | (1<<INT0) | (0<<INT2);
MCUCR=(0<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00);
MCUCSR=(0<<ISC2);
GIFR=(0<<INTF1) | (1<<INTF0) | (0<<INTF2);
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 921,600 kHz
// Mode: CTC top=OCR0
// OC0 output: Disconnected
// Timer Period: 0,050998 ms
TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (1<<WGM01) | (0<<CS02) | (1<<CS01) | (0<<CS00);
TCNT0=0x00;
OCR0=0x2E; //100us
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (1<<OCIE0) | (0<<TOIE0);
#asm("sei") // Global enable interrupts
};
Сб авг 19, 2017 07:55:42
Сб авг 19, 2017 08:55:08
Сб авг 19, 2017 12:25:56
Сб авг 19, 2017 14:57:24
Вс авг 20, 2017 15:39:53
Вс авг 20, 2017 21:57:06
Пн авг 21, 2017 06:15:43
Пн авг 21, 2017 08:49:09
#define us100 (F_CPU/64*0.0001)// значение таймера, до которого досчитает до 100 мкс
#define us100 (F_CPU/64*0.0001-1)// значение таймера, до которого досчитает до 100 мкс
Пн авг 21, 2017 09:21:03
Я эту ошибку у себя потом увидел. Прикинул что при ограничении 91, за период вылезти не должно (конечно еще зависит от детектора). Лень было уже потом телефоном исправлять. Не сомневался, что именно Вы на нее укажете , честно сказать, думал это произойдет раньше, видимо из-за воскресенья произошла задержка .akl писал(а):Таймер отсчитает не 100, а 104мкс.
Пт сен 01, 2017 21:23:28