Умножение частоты импульсов в 2.6 раза

Logik
Offline
Зарегистрирован: 05.08.2014

amgame пишет:
dimax пишет:

amgame,  мк atmega32u4 (т.е. леонардо/микро/промикро)  был специально выбран для этой программы, т.к. обладает необходимыми ресурсами.  Переделывать имеет смысл только на stm32, у которого ещё больше аппаратных возможностей для этой задачи.

Понял. Тогда вопрос в следующем нужен только делитель импульсов с коэффициентом 3.5. Диапазон частот 56-230Hz. Вот их же как то делают на Attiny. Поможите с кодом.?

Это можно очень просто зафигачить. Считаете число фронтов, т.е. переходов на входе с 1 в 0 или наоборот не различая их. На 3.5 импульса их будет 7 шт. Получается на 7 фронтов надо выдать один импульс. Если не сильно заморачиватся с симметрией то насчитав 4 фронта выводим 1 и продолжаем считать. Насчитав 7 фронтов выводим 0 и сбрасываем счетчик. Так по кругу вертим.

dnstkrv
Offline
Зарегистрирован: 22.08.2019

F

Logik
Offline
Зарегистрирован: 05.08.2014

dnstkrv пишет:

F

0x46

amgame
Offline
Зарегистрирован: 09.09.2019

Logik пишет:

amgame пишет:
dimax пишет:

amgame,  мк atmega32u4 (т.е. леонардо/микро/промикро)  был специально выбран для этой программы, т.к. обладает необходимыми ресурсами.  Переделывать имеет смысл только на stm32, у которого ещё больше аппаратных возможностей для этой задачи.

Понял. Тогда вопрос в следующем нужен только делитель импульсов с коэффициентом 3.5. Диапазон частот 56-230Hz. Вот их же как то делают на Attiny. Поможите с кодом.?

Это можно очень просто зафигачить. Считаете число фронтов, т.е. переходов на входе с 1 в 0 или наоборот не различая их. На 3.5 импульса их будет 7 шт. Получается на 7 фронтов надо выдать один импульс. Если не сильно заморачиватся с симметрией то насчитав 4 фронта выводим 1 и продолжаем считать. Насчитав 7 фронтов выводим 0 и сбрасываем счетчик. Так по кругу вертим.

Помогите с кодом для 328p, я не очень силён....

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Тут есть раздел "Ищу исполнителя", вам там обязательно помогут, но за деньги.

amgame
Offline
Зарегистрирован: 09.09.2019

Ну я так посмотрел, создавшему здесь эту тему помогли не за деньги.. буду сам пробывать.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

amgame пишет:
Ну я так посмотрел, создавшему здесь эту тему помогли не за деньги.. буду сам пробывать.

Халявщик.

#define INPUT_PIN   2 // или 3 
#define OUTPUT_PIN  4 // или любая другая нога

void inputChange(){
   static uint8_t cnt=0;
   if(cnt==2){
      digitalWrite(OUTPUT_PIN,HIGH);     
   } else if(cnt==6){
      digitalWrite(OUTPUT_PIN,LOW);     
      cnt=0;
      return;
   }
   cnt++;
}

void setup() {
   pinMode(INPUT_PIN,INPUT_PULLUP);
   pinMode(OUTPUT_PIN,OUTPUT);
   digitalWrite(OUTPUT_PIN,LOW);
   attachInterrupt(digitalPinToInterrupt(INPUT_PIN),inputChange,CHANGE);
}

void loop() {
}

 

amgame
Offline
Зарегистрирован: 09.09.2019

Спасибо тебе добрый человек, пойду пробывать.