Генератор 2 канала

ryshkov
Offline
Зарегистрирован: 31.12.2018

Нужен генератор 2 канала, ардуино NANO mega328.

Генератор прямоугольных импульсов, меандр  2 канала.
14пин - 1 канал 8000Гц
15пин - 2 канал 10000Гц
кварцевый резонатор на 16 МГц.

Green
Offline
Зарегистрирован: 01.10.2015

Пин чего? Мега или Ардуино? htpicc@gmail.com

xDriver
xDriver аватар
Offline
Зарегистрирован: 14.08.2015

Green пишет:

Пин чего? Мега или Ардуино? htpicc@gmail.com

речь про НАНО, если я правильно понял.

Green
Offline
Зарегистрирован: 01.10.2015

А может "мы по разному видим мир"? Можно на любом пине, если ничем больше не заниматься.)

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

А если заниматься, тоже можно.  Подробнее на почту, чем заниматься.  gas31a@mail.ru

karamzin01
Offline
Зарегистрирован: 08.03.2018

привет! р е а л и з у е м о - maslachenko767@mail.ru , консультации, подбор компонентов бесплатно, гарантии

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ryshkov пишет:

Нужен генератор 2 канала, ардуино NANO mega328.

Генератор прямоугольных импульсов, меандр  2 канала.
14пин - 1 канал 8000Гц
15пин - 2 канал 10000Гц
кварцевый резонатор на 16 МГц.

Легко!
Бери схему моего Двух тонального генератора, но могу и на таймерах

Enter desired frequency in Hz
(use decimal point for fractions. I.e. 0.12 means 0,12Hz):

Results for frequency: 8000.00Hz
(0,1,2,3) Prescaler: 8; MaxValue: 124; Frequency: 8000.00Hz; Diff: 0.00Hz
(1,3) Prescaler: 1; MaxValue: 999; Frequency: 8000.00Hz; Diff: 0.00Hz
(2) Prescaler: 32; MaxValue: 30; Frequency: 8064.52Hz; Diff: 64.52Hz
(0,1,2,3) Prescaler: 1024; MaxValue: 0; Frequency: 7812.50Hz; Diff: 187.50Hz
(0,1,2,3) Prescaler: 64; MaxValue: 15; Frequency: 7812.50Hz; Diff: 187.50Hz
(2) Prescaler: 128; MaxValue: 7; Frequency: 7812.50Hz; Diff: 187.50Hz
(0,1,2,3) Prescaler: 256; MaxValue: 3; Frequency: 7812.50Hz; Diff: 187.50Hz

Enter desired frequency in Hz
(use decimal point for fractions. I.e. 0.12 means 0,12Hz):

Results for frequency: 10000.00Hz
(0,1,2,3) Prescaler: 8; MaxValue: 99; Frequency: 10000.00Hz; Diff: 0.00Hz
(2) Prescaler: 32; MaxValue: 24; Frequency: 10000.00Hz; Diff: 0.00Hz
(1,3) Prescaler: 1; MaxValue: 799; Frequency: 10000.00Hz; Diff: 0.00Hz
(0,1,2,3) Prescaler: 64; MaxValue: 12; Frequency: 9615.38Hz; Diff: 384.62Hz
(2) Prescaler: 128; MaxValue: 5; Frequency: 10416.67Hz; Diff: 416.67Hz
(0,1,2,3) Prescaler: 256; MaxValue: 2; Frequency: 10416.67Hz; Diff: 416.67Hz
(0,1,2,3) Prescaler: 1024; MaxValue: 0; Frequency: 7812.50Hz; Diff: 2187.50Hz

Enter desired frequency in Hz
(use decimal point for fractions. I.e. 0.12 means 0,12Hz):
 

ryshkov
Offline
Зарегистрирован: 31.12.2018

генератор 2 канала, ардуино NANO mega328

Генератор прямоугольных импульсов, меандр  2 канала.
14пин меги, 10 пин ардуино - 1 канал 8000Гц
15пин меги, 11 пин ардуино - 2 канал 10000Гц
кварцевый резонатор на 16 МГц.

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

я выше почту написал

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ryshkov пишет:

генератор 2 канала, ардуино NANO mega328

Генератор прямоугольных импульсов, меандр  2 канала.
14пин меги, 10 пин ардуино - 1 канал 8000Гц
15пин меги, 11 пин ардуино - 2 канал 10000Гц
кварцевый резонатор на 16 МГц.

Pins 9 and 10: controlled by timer1

(0,1,2,3) Prescaler: 8; MaxValue: 124; Frequency: 8000.00Hz; Diff: 0.00Hz

Pins 11 and 3: controlled by timer2

(0,1,2,3) Prescaler: 8; MaxValue: 99; Frequency: 10000.00Hz; Diff: 0.00Hz

300 руб )))

Ради праздничка, держите код, обязано работать )))

enum Prescalers {
   PRESCALER_1 = 1, PRESCALER_8 = 2, PRESCALER_64 = 3, PRESCALER_256 = 4, PRESCALER_1024 = 5
};

void setup() {
   // Меандр частоты 8000.00 Гц 
   uint8_t prescaler = PRESCALER_8;
   uint16_t topValue = 124;
   pinMode(10, OUTPUT);
   TCCR1A = 0x10;              // Инвертирование пина 10 по сравнению
   TCCR1B = 0x08 | prescaler;  // Установить СТС режим и делитель частоты
   OCR1A = topValue;           // установить TOP равным topValue

/* Делитель для таймера 2
enum Prescalers {
   PRESCALER_STOP = 0,
   PRESCALER_1 = 1, 
   PRESCALER_8 = 2, 
   PRESCALER_32 = 3, 
   PRESCALER_64 = 4, 
   PRESCALER_128 = 5, 
   PRESCALER_256 = 6, 
   PRESCALER_1024 = 7
};
*/
  // Меандр частоты 10000.00 Гц 
   uint8_t prescaler1 = PRESCALER_8;      // PRESCALER_8;
   uint8_t topValue1 = 99;
   pinMode(11, OUTPUT);
   TCCR2A = 0x42;              // Инвертирование пина 11 по сравнению и режим CTC то OCR2A
   TCCR2B = 0x00 | prescaler1;  // Установить СТС режим и делитель частоты
   OCR2A = topValue1;           // установить TOP равным topValue

}

void loop() {}

 

 

 

 

 

 

ryshkov
Offline
Зарегистрирован: 31.12.2018

Один канал (первый) работает, как сделать 2 одновременно, я не знаю.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ryshkov пишет:

Один канал (первый) работает, как сделать 2 одновременно, я не знаю.

Детских ошибок я обычно не делаю, залил в нано, всё как заказывали )))

ryshkov
Offline
Зарегистрирован: 31.12.2018

Огромное спаибо, проверил, работает.

С праздником.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ua6em, ну вот, не дал людям на хлеб заработать..

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

ryshkov пишет:

Огромное спаибо, проверил, работает.

С праздником.


Почём нынче праздник?

ryshkov
Offline
Зарегистрирован: 31.12.2018

ua6em пишет:

ryshkov пишет:

Один канал (первый) работает, как сделать 2 одновременно, я не знаю.

Детских ошибок я обычно не делаю, залил в нано, всё как заказывали )))

 

 

Ответ, о не работающем 2 канале я дал до того, как был выложен код.

Давай немер тел, карты.

С уважением.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

dimax пишет:

ua6em, ну вот, не дал людям на хлеб заработать..

"коль праведно то, чего он вожделеет, то то чего я вожделею - грешно" Омар Хаям )))

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ryshkov пишет:

ua6em пишет:

ryshkov пишет:

Один канал (первый) работает, как сделать 2 одновременно, я не знаю.

Детских ошибок я обычно не делаю, залил в нано, всё как заказывали )))

 

 

Ответ, о не работающем 2 канале я дал до того, как был выложен код.

Давай немер тел, карты.

С уважением.

Дарю!!!

RG22EM
Offline
Зарегистрирован: 27.08.2016

в каких целях девайс сей использоваться будет, интересно

Green
Offline
Зарегистрирован: 01.10.2015

Так вроде ж

14пин - 1 канал 8000Гц
15пин - 2 канал 10000Гц

кварцевый резонатор на 16 МГц.

Или...

Green
Offline
Зарегистрирован: 01.10.2015

А так, конечно, на выходах таймеров и ДУРАК сделает.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

А так, конечно, на выходах таймеров и ДУРАК сделает.)

можно и на программных счетчиках, разницы нет

Green
Offline
Зарегистрирован: 01.10.2015

Ну нет, так нет.)

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Green пишет:

Ну нет, так нет.)

точность конечно ниже, но ТС о точности не упоминал, на таймерах будет тикать с точностью применённого кварца, то-есть максимально возможной.
Как пример - ниже, если процедуры переписать на ассемблере и высчитать в тактах, то точность будет вполне приемлемой (процентов 5)


unsigned long freq_8000;
unsigned long freq_10000;

void setup() {
  pinMode(10, OUTPUT);  // Freq 8000Hz
  pinMode(11, OUTPUT);  // Freq 10000Hz
  
  digitalWrite(11,HIGH);
  freq_10000 = micros();
  digitalWrite(10,HIGH);
  freq_8000 = micros();
  }

void loop() {
  if(micros() - freq_10000 >= 25){
  digitalWrite(11,!digitalRead(11));
  freq_10000 = micros();
  }
   
  if(micros() - freq_8000 >= 37){
  digitalWrite(10,!digitalRead(10));
  freq_8000 = micros();
  }
 }

 

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Да откуда пять?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Gas311 пишет:

Да откуда пять?

думаете точнее будет?

RG22EM
Offline
Зарегистрирован: 27.08.2016

Оно конечно на таймерах то самое простое, но что это за палки торчат периодически???

 

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Ну это издержки простоты. 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Gas311 пишет:

Ну это издержки простоты. 

Так вроде всё аппаратно, или я заблуждаюсь? И мусор сыпет периодически, в момент переключения меандра более высокой частоты, может помехи по питанию?

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

RG22EM, если скетч из #9 то там не может быть палок в принципе. Если из #23, то палок тоже не должно быть, но должен быть чудовищный джиттер. 

RG22EM
Offline
Зарегистрирован: 27.08.2016

dimax пишет:

RG22EM, если скетч из #9 то там не может быть палок в принципе. Если из #23, то палок тоже не должно быть, но должен быть чудовищный джиттер. 

Скетч #9
Может с питанием проблемы?
Есть одно предположение - проверяю, запитал от USB ноута, проблема не ушла, плата ардуино нано от рободына

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

RG22EM, исходите из того, что дело 100% не в программе. Всё остальное соответссно под сомнением. Я бы для начала поменял входы у анализатора.