Как перевести содержимое переменной "float frequency 3" в частоту ТТL.
- Войдите на сайт для отправки комментариев
[code]
int TTL = 5;
int Htime; // целочисленная переменная для хранения времени высокого логического уровня
int Ltime; // целочисленная переменная для хранения времени низкого логического уровня
float Ttime; // переменная для хранения общей длительности периода
float frequency1; // переменная для хранения частоты 1
float frequency2; // переменная для хранения частоты 2
float frequency3; // переменная для хранения частоты 3
void setup()
{
Serial.begin(9600); // Установка последовательного соединения
pinMode ( 8, INPUT); // Вход № 8 на ввод частоты
digitalWrite(8, HIGH); // Включение подтягивающего резистора к +5 В
pinMode ( TTL, OUTPUT); // Выход № 5 выход частоты 51200 Гц
}
void loop()
{
Htime = pulseIn(8, HIGH); // прочитать время высокого логического уровня
Ltime = pulseIn(8, LOW); // прочитать время низкого логического уровня
Ttime = Htime + Ltime;
frequency1 = 1000000 / Ttime; // получение частоты из Ttime в микросекундах
Serial.println(frequency1);
frequency2 = 51200 - frequency1; //разница частот 51200 Гц и замеренной
Serial.println(frequency2);
frequency3 = frequency2 + frequency1;
Serial.println(frequency3);
delay(1000);
}
Уважаемый, загляните в начало головной темы и вставьте код нормально.
И, заодно, объясните в чём Ваша проблема, а то хрустальные шары здесь запрещены.
Судя по программе у TTL нет частоты. Совсем нет. Как переводить в то чего нет?
Во первых - перевести время в unsigned long, а во вторых - рассказать, а чего Вы хотите. Должно быть и третье, но хватит и этого.
А - вспомнил, помой руки и вставь программу правильно!
Частоту которая получена как сумма двух частот нужна для работы остальной части схемы.
Частоту которая получена как сумма двух частот нужна для работы остальной части схемы.
Или Вы
1) вставляете код как положено
2) толково и понятно объясняете чего, Вам нужно.
Или никакой помощи Вы здесь не получите.
Никто не понимает какая именно помощь Вам нужна, а неправильно вставленный код никто читать не будет.
Частоту которая получена как сумма двух частот нужна для работы остальной части схемы.
Яснее не стало.
мой хрустальный шар говорит, что Серёжа пытается впихнуть не впихуемое, float в int знаковое, а вообще скетч безсмысленный, в третьей переменной всегда будет 51200 )))
Понятно. Ну, тогда, извините.
http://forum.cxem.net/index.php?/profile/54570-mahno/content/&type=forums_topic_post&page=408 Это принципиальная схема радиочасов "VITEK-3511" с LED индикатором на микросхеме LM 8580. Кварцевый резонатор в часах 51200 Гц очень нестабилен по частоте взависимости от температуры. При повышении температуры на 10 гр С часы "спешат" на 30-35 секунд в сутки, при понижении "отстают" на столько же. Замена резонатора не привела к увеличению точности хода часов. В наличии имеются часы реального времени DS 3231 с точностью хода 5 секунд в год. В наличии Arduino PRO Mini 5V 16 MHz. Есть схема и программа с корректировкой часов по GPS, c библиотеками которая компилируется и загружается в МК. Пока идёт из Китая заказанная по этой схеме электронная комплектация: https://mysku.ru/blog/diy/58750.html решил термокомпенсированные RTC с выходом 32768 Гц через МК Arduino подключить на место КР =51200 Гц.
То,что купил в Китае и нашёл Интернете работает, а дальше моя лабораторная работа приобрела форму вопросов и ответов на форуме, так как все мои знакомые не сильны, так же как ия, в С++.
Частоту которая получена как сумма двух частот нужна для работы остальной части схемы.
fсум = f1 + f2
Надеюсь, что удовлетворил Вашу тягу к знаниям.
А еще правильнее будет - начинать не с С++, а с русского: попытайтесь сформулировать свои мысли так, чтобы они были понятны хотя бы одному человеку кроме Вас.
Вы правы, но RTC всётаки имеет температурную компенсацию, а МК этой компенсации не имеет т.е. зачем тогда весь этот огород если не вырастет точность отсчёта времени?
Золотые слова!!
Сергей, бросайте институт и идите в грузчики - ну не Ваше это... Вы даже программу со 2 раза правильно вставить не можете.
Сергей, бросайте институт и идите в грузчики - ну не Ваше это... Вы даже программу со 2 раза правильно вставить не можете.
по стилю изложения даже на бурсу не тянет, а Вы институт...
Я утром еще не имею сил на глум и издевательства, поэтому просто приведу несколько фактов:
Results for frequency: 51200.00Hz
Prescaler: 1; MaxValue: 155; Frequency: 51282.05Hz; Diff: 82.05Hz
Prescaler: 8; MaxValue: 19; Frequency: 50000.00Hz; Diff: 1200.00Hz
Prescaler: 64; MaxValue: 1; Frequency: 62500.00Hz; Diff: 11300.00Hz
Prescaler: 256; MaxValue: 0; Frequency: 31250.00Hz; Diff: 19950.00Hz
Prescaler: 1024 - Not possible
Скетч, конечно, только для чтения и понимания. Работать скорей всего не будет - digitalRead и digitalWrite для таких частот всё-таки слишком медленные.
Но если заменить их на прямое чтение/запись портов, вполне может получиться. Ничего не обещаю, но может.
Спасибо, вечером попробую.