#1 2022-08-21 11:10:48

khalimon
Учасник
Зареєстрований: 2020-02-24
Повідомлень: 19

Нужна помощь в создании двух стабильных меандров 50гц

Приветствую!

Работаю над проектом для атмега328р + кварц 16мгц (или ардуино нано 3)

Нуждаюсь в создании 2х меандров 50гц со сдвигом друг от друга 5мс  (могу приложить осциллограмму, но не пойму как тут это сделать)
Меандры должны быть на разных пинах.

Очень важна именно качественная привязка второго меандра к первому. В loop будет достаточное количество вычислений, поэтому важно, что бы меандры работали независимо от основного кода программы.
Заранее благодарен за помощь!

Неактивний

#2 2022-08-21 11:35:00

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 220

Re: Нужна помощь в создании двух стабильных меандров 50гц

Даташит на ATMega328P, параграф 15 "16-bit Timer/Counter1 with PWM".
Если не хотите разбираться самостоятеьно, обращайтесь, сделаю.

Активний

#3 2022-08-21 22:05:34

akapulko
Гість

Re: Нужна помощь в создании двух стабильных меандров 50гц

void init_Timer1(void) {
  TCCR1A = (1 << COM1A0) | (1 << COM1B0); // Toggle OC1A/OC1B on Compare Match
  TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // CTC mode, clk/1024 (From prescaler)
  OCR1A = 312; // 20 ms at 16MHz
  OCR1B = 234; // 15 ms at 16MHz
  TCNT1 = 0;
}

void setup() {
  DDRB |= _BV(1) | _BV(2); // Enable the output driver on PB1, PB2 (UNO pins 9, 10)
  init_Timer1();
}

void loop() {

}

#4 2022-08-22 07:13:21

khalimon
Учасник
Зареєстрований: 2020-02-24
Повідомлень: 19

Re: Нужна помощь в создании двух стабильных меандров 50гц

Очень благодарен!
А если нужно будет сдвиг инвертировать, т.е. сдвинуть канал А относительно B, это будет так?

OCR1A = 234;
OCR1B = 312;

И встречный вопрос - как поменять сдвиг А относительно B в процессе работы?

Неактивний

#5 2022-08-22 07:14:39

khalimon
Учасник
Зареєстрований: 2020-02-24
Повідомлень: 19

Re: Нужна помощь в создании двух стабильных меандров 50гц

Honey пише:

Даташит на ATMega328P, параграф 15 "16-bit Timer/Counter1 with PWM".
Если не хотите разбираться самостоятеьно, обращайтесь, сделаю.

Очень благодарен! Буду иметь ввиду.

Неактивний

#6 2022-08-22 22:04:54

akapulko
Гість

Re: Нужна помощь в создании двух стабильных меандров 50гц

А если нужно будет сдвиг инвертировать, т.е. сдвинуть канал А относительно B, это будет так?

OCR1A = 234;
OCR1B = 312;

Нет

И встречный вопрос - как поменять сдвиг А относительно B в процессе работы?

?А как же:

В loop будет достаточное количество вычислений, поэтому важно, что бы меандры работали независимо от основного кода программы.

#7 2022-08-22 22:11:45

akapulko
Гість

Re: Нужна помощь в создании двух стабильных меандров 50гц

И встречный вопрос - как поменять сдвиг А относительно B в процессе работы?

Двухканальный тумблер поможет менять выходы местами.

#8 2022-09-10 15:45:56

khalimon
Учасник
Зареєстрований: 2020-02-24
Повідомлень: 19

Re: Нужна помощь в создании двух стабильных меандров 50гц

Honey пише:

Даташит на ATMega328P, параграф 15 "16-bit Timer/Counter1 with PWM".
Если не хотите разбираться самостоятеьно, обращайтесь, сделаю.

Вернулся опять к этому проекту. Хочу всё таки побороть данный вопрос. Есть пару сотен грн. Если устроит, то готов обратится.

Неактивний

#9 2022-09-10 18:40:57

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 220

Re: Нужна помощь в создании двух стабильных меандров 50гц

Такое качество устроит?
meandr.png
Пишите в личку.

Активний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму