LordN (29.03.2007 14:43, просмотров: 1) ответил ReAl на Ну так первые ссылки Max_QNX - как раз по алгоритму. А ещё можешь глянуть
вобщем кое-что нашел, но там сделано по другому <c>
double M;
double N;
double Increment;
double Total;
long Whole;
void main(void)
{
M = 100;
N = /*Задайте число*/
Whole = 0;
Total = 0;
Increment = N / M; /*Приращение за 1 шаг последов. M*/
while(--M)
{
Total = Total + Increment;
Whole = Total; /*Целая часть переходит в Whole*/
Total = Total - Whole;
/*Далее используем Whole, например выдаем импульс в порт, и пошли по новой*/
}
}
</c>
как-то сложно мне показалось...
"структуру счётчика 155ие8, тоже под эту задачу годится, период управления тиристором должен быть степенью двойки.
Берёшь счётчик периодов сети (бежит себе по кругу и никого не трогает) и код мощности.
Код мощности "разворачиваешь" битами наоборот, делаешь AND со счётчиким, если результат не 0 - включаешь тиристор. Регулировка от 0 до 2^N-1/2^N-тых (N - разрядность счётчика и кода мощности), если надо от 1/2^N до 1, то надо инвертировать код мощности и выход."
про AND поясните плз, не совсем понял, что с чем эндить надо...
<c>
char
cnt, // счетчик
power; // код мощности
while(1)
{
cnt++;
TriakPin = (~power & cnt); // ????
}
</c>