Чт июн 07, 2018 18:51:15
Пт июн 08, 2018 13:38:25
Сб июн 09, 2018 18:49:07
Сб июн 09, 2018 19:34:34
Отключите (отрежьте) порт от остальной схемы и гляньте амплитуду.DenChik87 писал(а): Но вот почему амплитуда упала в два раза это вообще непонятно.
Сб июн 09, 2018 19:40:51
А где схема управления тиристорами? Каким образом вы их открываете, опторазвязка или трансформаторы?DenChik87 писал(а):Но вот почему амплитуда упала в два раза это вообще непонятно
Сб июн 09, 2018 20:55:57
Вс июн 10, 2018 07:13:14
Вс июн 10, 2018 13:22:41
#include <ioavr.h>
#include <inavr.h>
#include <math.h>
unsigned int timer_phase_A0,timer_phase_B0,timer_phase_C0;
unsigned int timer_phase_A1,timer_phase_B1,timer_phase_C1;
char PORTD_buffer, PINA_buffer;
unsigned int phase_A,phase_B,phase_C;
char flag_A0=0,flag_B0=0,flag_C0=0;
unsigned int angle_alpha;
#pragma vector=TIMER1_COMPA_vect
__interrupt void TIMER1_comp(void){
TCNT1=0;
if((PINB&1)==1){
phase_B=65535;}
else{phase_B=0;}
if((PINB&2)==2){
phase_A=65535;}
else{phase_A=0;}
if((PINB&4)==4){
phase_C=65535;}
else{phase_C=0;}
timer_phase_A0&=phase_A;
timer_phase_A1&=(~phase_A);
timer_phase_B0&=phase_B;
timer_phase_B1&=(~phase_B);
timer_phase_C0&=phase_C;
timer_phase_C1&=(~phase_C);
if((timer_phase_A0<1000)&&(timer_phase_B0<1000)&&(timer_phase_C0<1000)){
timer_phase_A0++;
timer_phase_B0++;
timer_phase_C0++;
timer_phase_A1++;
timer_phase_B1++;
timer_phase_C1++;}
}
void main(void)
{
TCCR1A=0;
TCCR1B|=(1<<CS11);//x8
OCR1A=100;
TIMSK|=(1<<OCIE1A);
TCCR2|=(1<<WGM21);
TCCR2|=(1<<COM20);
TCCR2|=(1<<CS20);
OCR2=40;
ADMUX|=(1<<REFS0);
ADCSRA|=(1<<ADEN);
ADCSRA|=(1<<ADPS0);
ADCSRA|=(1<<ADPS1);
ADCSRA|=(1<<ADPS2);
ADCSRA|=(1<<ADSC);
SREG|=128;
DDRD=0xff;
DDRC=0xff;
unsigned int blinker=0;
while(1){
//if((PINA&8)==8){
PORTD_buffer=0;
if((timer_phase_A0<1000)&&(timer_phase_B0<1000)&&(timer_phase_C0<1000)){
if(timer_phase_A0>angle_alpha){
PORTD_buffer|=2&phase_A;}
if(timer_phase_A1>angle_alpha){
PORTD_buffer|=4&(~phase_A);}
if(timer_phase_B0>angle_alpha){
PORTD_buffer|=8&phase_B;}
if(timer_phase_B1>angle_alpha){
PORTD_buffer|=16&(~phase_B);}
if(timer_phase_C0>angle_alpha){
PORTD_buffer|=32&phase_C;}
if(timer_phase_C1>angle_alpha){
PORTD_buffer|=64&(~phase_C);}
PORTC&=~(8+4);
blinker=0;
}
PORTD=PORTD_buffer;
if((ADCSRA&16)==16){
angle_alpha=(ADC/10);
if(angle_alpha>100){angle_alpha=100;}
angle_alpha=100-angle_alpha;
ADCSRA&=~16;
ADCSRA|=(1<<ADSC);
}
PINA_buffer=PINA;
if(blinker<20000){
PORTC|=2*(PINA_buffer&4);
PORTC|=4&~(PINA_buffer&4);}
else{PORTC&=~(8+4);}
if(blinker>40000){
blinker=0;}
blinker++;
if((PINA_buffer&4)==4){
ADMUX|=(1<<MUX0);}
else{ADMUX&=~(1<<MUX0);}
//}
//else{
//PORTD=0;
//PORTC=0;}
}//while(1)
}//main
Вс июн 10, 2018 15:32:21
ISR (TIMER1_COMPA_vect){
OCR1AH=0x34;
OCR1AL=0x08;
static char i=0;
PORTC=0xff; //это напимал
//PORTC=mode[j][i]; - это закоментировал
_delay_us(100);
PORTC=0;
i++;
if (i==6){
i=0;
TCCR1B=0;
}
}
Вс июн 10, 2018 18:29:05
Пн июн 11, 2018 22:55:54
Вт июн 12, 2018 06:13:38
Вт июн 12, 2018 07:57:39
Вт июн 12, 2018 08:43:10
Вт июн 12, 2018 16:47:48
Вт июн 12, 2018 18:10:25