Идея простая шагать по таблице и из неё вынимать значения для синусоидальной шим.
Можно также очень просто реализовывать задержки инкрементирования переменной i, не делеями, а по другому.
while(1)
{
i++;
delayus(20)
}
для того чтобы задрежать
можно сдеать так:
uint32 a = 0;
uint32 i = 0;
uint32 delay_inc = 1;
while(1)
{
if (i%delay_inc == 0) a++;
i++;
}
Если i++ тикает в прерывании с частотой 100 раз в секунду, то при помощи delay_inc мы можем выставлять делитель для переменной a, если delay_inc=1 то переменная а тикает с такой же частотой как и i.
Если delay_inc=20, то переменная а тикает с частотой 100/20=5 раз в секунду и т.д
Можно также очень просто реализовывать задержки инкрементирования переменной i, не делеями, а по другому.
while(1)
{
i++;
delayus(20)
}
для того чтобы задрежать
можно сдеать так:
uint32 a = 0;
uint32 i = 0;
uint32 delay_inc = 1;
while(1)
{
if (i%delay_inc == 0) a++;
i++;
}
Если i++ тикает в прерывании с частотой 100 раз в секунду, то при помощи delay_inc мы можем выставлять делитель для переменной a, если delay_inc=1 то переменная а тикает с такой же частотой как и i.
Если delay_inc=20, то переменная а тикает с частотой 100/20=5 раз в секунду и т.д
Комментариев нет:
Отправить комментарий