Официальный сайт компании Arduino по адресу arduino.cc
Частотомер + Генератор на Таймере 2, что не так?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пнд, 11/02/2019 - 15:46
Собрал проверочный скетч ддля частотомера и Генератора от DIMAX, для проверки дополнил генератором на таймере2, не считает, выводы 11 и 5 замкнуты перемычкой, что не так???
volatile unsigned int int_tic=0; volatile unsigned long tic; 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 }; void setup() { Serial.begin(115200); TCCR1A=0; TIMSK1 = 1<<TOIE1; //прерывание по переполнению // pinMode (5,INPUT); // вход сигнала T1 (only для atmega328) pinMode(11, OUTPUT); uint8_t prescaler = PRESCALER_1; //Частота около 300кНz uint8_t topValue = 26; pinMode(11, OUTPUT); TCCR2A = 0x42; // Инвертирование пина 11 по сравнению и режим CTC то OCR2A TCCR2B = 0x00 | prescaler; // Установить СТС режим и делитель частоты OCR2A = topValue; // установить TOP равным topValue } ISR (TIMER1_OVF_vect){ int_tic++; } void freq_meter() { pinMode (5,INPUT); // вход сигнала T1 (only для atmega328) TCCR1B = (1<<CS10)|(1<<CS11)|(1<<CS12);//тактирование от входа Т1 delay(1000); TCCR1B=0; // Остановить счетчик tic= ((uint32_t)int_tic<<16) | TCNT1; //сложить что натикало int_tic=0; TCNT1 = 0; } void loop() { freq_meter(); Serial.print(tic); Serial.println(" Hz "); delay(2000); }
На одном и том же МК?
На одном и том же МК?
да
А что показывают в осциллографе и какое оказывается воздействие от внешнего генератора ?
А что показывают в осциллографе и какое оказывается воздействие от внешнего генератора ?
Сейчас нет возможности посмотреть, только вечером, генератор на таймере проверен неоднократно, частотомер из скетча DIMAX, тоже проверен, есть какая-то тонкость в аппаратном прерывании которую я не знаю, подозреваю, что оно на лапы микроконтроллера завязано и затрагивает пин 11
первый раз в монтиторе порта показывает 18Hz, далее 1 Hz
Тонкость, несомненно, есть. Подождём вечера.
Тонкость, несомненно, есть. Подождём вечера.
С высокой долей вероятности (более 99,9%) генератор на Timer2 не работает (((
ua6em, в скетче ошибок нет. Думаю кармическое что-то.. :)
ua6em, в скетче ошибок нет. Думаю кармическое что-то.. :)
Дима, что так, как у меня, так обязательно кармическое, просто под рукой была WAVGAT )))
На ардуино nano оказалось, что всё работает, сейчас буду пытать, на чём именно ломается WAVGAT
(Генератор точно работал на 2 таймере)
Генератор работает, не работает частотомер, увы...
В своём генераторе ты используешь два таймера. на третьем формируешь тау измерения 2 сек и всё работает, здесь всё упрощено и засада, где косяк? Почему на плате WAVGAT не работает?
ua6em, попробуйте с аддоном от WAVGat
ua6em, попробуйте с аддоном от WAVGat
с этим аддоном и компилировалось...
Так как генератор V2.5 для этого проца работает - надеялся, что проблем быть не должно...
Непонятки...Еще попытаю ...
ua6em, я залил в свой нано-вавгат, не меняя ни буквы из вашего кода - и всё заработало. Вам точно нужно сменить хобби на что-то другое :)
ua6em, я залил в свой нано-вавгат, не меняя ни буквы из вашего кода - и всё заработало. Вам точно нужно сменить хобби на что-то другое :)
Дмитрий! Это самое простое решение!
... орешек знаний твёрд, но всё же, мы не привыкли отступать...
И кстати, первую часть я же нормально сделал, чужие скетчи собирать воедино научился )))
Плату какую выбирал (аддон чей)?
Плату какую выбирал (аддон чей)?
WAVGat
Плату какую выбирал (аддон чей)?
WAVGat
У меня есть вторая плата, на ней версию 2.5 собираю, там частотомер работает, были проблемы - при запитке от ноутбука занижал вдвое частоту, его величество наводки 50 герц всему виной, провода - дюпон, запитал от повербанка и всё стало как было задумано, не хочется курочить, попытаю ещё платочку, может брак какой, попробую сделать раздельно частотомер на WAVGAT а генератор на nano...
Собрал скетч с частотомером от DIMAX (генератор для WAVGAT)
Компилируется! Мониторить на скорости порта вдвое выше )))
Поправил скетч на предмет проверки исправности 5-го цифрового порта, работает, порт не битый:
Проверка Таймера на 5-м пине, тоже работает )))