Рассчитываем ближайшее изменение значения на одном из двух каналов, переключаем нужный канал, повторяем)
Твой я пока не могу понять. i1 и i2 это что?
P.S. еще рас спасибо за отклик
Код: Выделить всё
// delete.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int i1,i2;
int s1 = 5; // s-скважность от 0 до k
int s2 = 4;
const int k1=10, k2=5; // периоды каналов
int time = 0;
bool buffer1[10000];
bool buffer2[10000];
bool pwm1_state, pwm2_state;
void step();
void changePWM1();
void changePWM2();
void main()
{
i1=0;
i2=0;
buffer1[0] = 0;
buffer2[0] = 0;
for(int loops = 0; loops < 10000; loops++)
{
if(i1<k1)
{
i1++;
step();
}
else
{
i1=0;
//changePWM1();
step();
}
if(i1<s1)
{
pwm1_state = 0;
step();
}
else
{
pwm1_state = 1;
step();
}
// тоже самое для второго
if(i2<k2)
{
i2++;
step();
}
else
{
i2=0;
//changePWM2();
step();
}
if(i2<s2)
{
pwm2_state = 0;
step();
}
else
{
pwm2_state = 1;
step();
}
}
for(int i= 0;i<1000;i++)
{
if(i%44/*24*/==0) cout<<endl;
cout<<buffer1[i];
}
int a;
cin>>a;
}
void step()
{
buffer1[time] = pwm1_state;
buffer2[time] = pwm2_state;
time++;
}
void changePWM1()
{
(s1 >= k1)? s1=0 : s1++;;
}
void changePWM2()
{
(s2 >= k2)? s2=0 : s2++;
}Ты не поверишь что разницы то почти и нет, точнее вся разница заключается в выводе данных ПК->дисплюй МК->порт.Мне код не для МК, а для ПК сначала нужен
Может быть, тебе виднее.Я сунул его туда для подсчета глобального времени
В целом может быть но он записывает одно и тоже в результате не по разу, на мой взгляд это больше с толку сбивает.чб записывать в буффер значения.
Вот тут поподробнее, лучше небольшую картинку в качестве примера. Я твой код немного подшаманил вот что вышло:Вот гляньте, 1ца в периода уплывает влево всегда.

Не принципиально главное чтобы было в теле while(1)FireProoF писал(а): Я вот теперь переношу на МК и возник вопрос где ставить задержку