Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 13.05.2020
Сообщений: 13
1

Сдвинуть импульсы относительно друг друга на 90 градусов

23.05.2020, 15:57. Просмотров 126. Ответов 4
Метки нет (Все метки)

Здравствуйте, реально ли сдвинуть один импульс относительно другого на 90 градусов. Импульсы генерирую внутри таймера.
Не хотелось бы использовать delay так как при его работе программа начала тормозить.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ISR (TIMER1_COMPA_vect)
  {
  
      if (PINC & (1<<PINC0))
      { 
        PORTC &= ~_BV(PC0);// переключаем светодиод на линии PC1
               }else{
        PORTC |= _BV(PC0);
                        }
             if (PINC & (1<<PINC1))
      { 
        PORTC &= ~_BV(PC1);// переключаем светодиод на линии PC2
               }else{
        PORTC |= _BV(PC1);
                        }
  }
0
Миниатюры
Сдвинуть импульсы относительно друг друга на 90 градусов  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2020, 15:57
Ответы с готовыми решениями:

Фиксация элементов относительно друг друга
Как зафиксировать элемент относительно другого элемента (например кнопку относительно textbox), что...

Центрирование компонентов относительно друг друга
Ребят, чет я туплю.. Начну с простых вещей - есть GroupBox, его надо оцентриваровать по горизонтали...

Позиционирование изображений относительно друг друга
Есть картинка №1, внутри которой, есть картинка №2, которая спозиционирована относительно №1. При...

Позиционирование двух блоков относительно друг друга
Добры день Всем ! Проблема заключается в следующем: Есть картинка, которая масштабируется в %...

4
0 / 0 / 0
Регистрация: 13.05.2020
Сообщений: 13
23.05.2020, 16:22  [ТС] 2
И к тому же если использую delay и задаю в нём значение, по после изменения делителя на таймере картинка на выходе меняется.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
ISR (TIMER1_COMPA_vect)
  {
  
      if (PINC & (1<<PINC0))
      { 
        PORTC &= ~_BV(PC0);// переключаем светодиод на линии PC1
         _delay_ms(66);
             PORTC &= ~_BV(PC1);  }else{
        PORTC |= _BV(PC0);
        _delay_ms(66);
                    PORTC |= _BV(PC1);     }
          
  }
0
Миниатюры
Сдвинуть импульсы относительно друг друга на 90 градусов   Сдвинуть импульсы относительно друг друга на 90 градусов  
Модератор
8201 / 6071 / 811
Регистрация: 14.02.2011
Сообщений: 21,062
23.05.2020, 16:54 3
Azerhud, используй сработку таймера в 4 раза чаще
а в обработчике прерывания примерно такой код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
 static uint8_t i=0;
 switch(i)
   {
    case 0:
     // светодиод 1 включить
    // светодиод  2 выключить
     break;
    
       case 1:
           // светодиод 1 включить
          // светодиод  2 включить
     break;
      case 2:
           // светодиод 1 выключить
          // светодиод  2 включить
 
     break;
       case 3:
           // светодиод 1 выключить
          // светодиод  2 выключить
     break;
}
i++;
i%=4;
}
1
0 / 0 / 0
Регистрация: 13.05.2020
Сообщений: 13
23.05.2020, 17:46  [ТС] 4
Не получается добиться идентичности импульсов. И можно ли добиться что б при изменения частоты таймер менялась частота импульсов.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
      
 static uint8_t i=0;
 switch(i)
   {
      case 0:
          
             PORTC =(1<<0)|(0<<1);         // светодиод 1 включить// светодиод  2 выключить
     break;
    
       case 1:
      
                   
                 PORTC =(1<<0)|(1<<1);   // светодиод 1 включить // светодиод  2 включить
           
      case 2:
                
        PORTC =(0<<0)|(1<<1);   // светодиод 1 выключить     // светодиод  2 включить
    
 
     break;
       case 3: 
   
              PORTC =(0<<0)|(0<<1);      // светодиод 1 выключить // светодиод  2 выключить
              
 
     break;
 
}
i++;
i%=4;
0
Миниатюры
Сдвинуть импульсы относительно друг друга на 90 градусов  
Модератор
6692 / 3268 / 1309
Регистрация: 01.02.2015
Сообщений: 10,364
Записей в блоге: 1
23.05.2020, 18:35 5
Нет break после case 1
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2020, 18:35

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Расположение элементов на странице относительно друг друга
Здравствуйте, на странице html расположено несколько элементов и подключен для стилей элемента свой...

Точное позиционирование фреймов относительно друг друга
Доброго времени суток, у меня такой вопрос, как сделать, чтобы 1 фрейм оставался точно вверху и при...

Расположение прямой и отрезка относительно друг друга
Задается уравнение прямой ах+by+c=0,потом задается отрезок. Определить, как расположены они друг...

Сочетание элементов уникальных относительно друг друга
Необходимо понять, сколько сочетаний, например, 5 элементов уникальных относительно друг друга...

Позиционировать элементы относительно друг друга (CSS)
Здравствуйте! Подскажите, пожалуйста, как можно позиционировать элементы относительно друг друга?...

Выровнять Toolstrip и Textbox относительно друг друга
Добрый день! На форме toolstrip и textbox. Мне нужно, чтобы toolstrip был вертикальный и слева,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.