Игорь 2
Трансиверы, передатчики, РПУ => Трансиверы самодельные => Тема начата: Core от Май 06, 2021, 11:17:25 am
-
Собираю опорник для синтеза Игорь2 под руководством Владимир_К.
Начал с платы индикации. Индикаторы типа 5161AS общий катод, красные.
Схема, фото.
-
Созрели вопросы. Как после сборки платы индикации её проверить? Может есть какие либо тестовые программы для ардуино ? 123123
-
Схемы в splan нашёл. Там ардуино нано версии 3. Как ее прошивать, ведь у вас код явно будет не в ардуино иде... 123123
-
Валкодер у меня на 400 импульсов с али, на шариковых подшипниках. Будет ли схема его видеть?
-
Там ардуино нано версии 3. Как ее прошивать, ведь у вас код явно будет не в ардуино иде...
Компилятор у меня в составе программы AVR Studio 4.19. НЕХ-файл создан ейной. Его можно зашить в Ардуино. Программа для прошивки - XLoader. Найдите ее поиском. В архиве НЕХ-файл прошивки. Подключаете Ваш Ардуино USB шнурком к компьютеру, открываете Нех_файл, предварительно извлеките его из архива.
Но, к сожалению, я уже не помню. Возможно без Si5351A программа не будет работать. Там при инициализации программа запрашивает по шине I2C Si5351A. Если ее нет, никто не ответит и программа будет ждать до второго пришествия.
Если после прошивки возникнет такая ситуация, я уберу из программы обращение к Si5351A. Таким образом, Вы сможете протестировать индикатор.
И еще, вполне возможно, что при разводке плат я мог как мне заблагорассудится, менять выводы Ардуино, для удобства в разводке. Поэтому, желательно сравнить схемы в Сплане с печатками. К сожалению, тут я не очень аккуратен. Программу мог поменять, а схему не откорректировал.
-
Будет ли схема его видеть?
Хоть я и не на сухарях, но такое покупать жаба давит adm.
Валкодер должен выдавать сдвинутые по времени импульсы. Если Ваш валкодер это делает, проблем не будет. Возможны проблемы с количеством импульсов. Я программу проверял с валкодером на 150 импульсов максимум. Но это потом. Если проблема такая возникнет, придется искать где проблема.
Я вот так делаю:
http://www.cqham.ru/forum/showthread.php?1786-%C2%E0%EB%EA%EE%E4%E5%F0-%F1%E2%EE%E8%EC%E8-%F0%F3%EA%E0%EC%E8/page68
677 сообщение. Или так, как на фото.
-
Эти валкодеры как раз выдают два канала со сдвинутыми импульсами. А их ещё покупал когда они стоили по 250 рублей. Сейчас всё подорожало.
Да вы на всякий случай уберите обращение к сишке. Будет тестовый софт для проверки шкалы.
-
Да вы на всякий случай уберите обращение к сишке.
Да там много мест, где придется убирать. Если программа с сишкой у Вас подвиснет, я тогда сделаю тестовую для проверки индикатора, так будет проще.
Возможно она у меня и есть. Тут много чего есть, проблема найти...
-
Ок. Не будем торопить события. Паяю индикатор 123123
-
Паяю индикатор
Тестовая прошивка для проверки индикатора.
Подключение:
Dat индикатора, цепляем на вывод процессора - PB2;
Blink - PB1;
Clk - PBO;
Все файлы прошивок, которые возможно придется Вам сбрасывать, будут иметь одно имя "main". Так что Вы их там у себя переименовывайте, например:
main_0, main_1 и т.д.
-
123123 1999 что должно отобразиться в результате теста?
-
На индикаторе нули, а потом начнет значение увеличиваться на единицу, через 100 мсек. И так бесконечно.
Хотя, наверное не правильно сделал.. Долго придется ждать, пока все комбинации на дисплее отразятся. Сделаю лучше так - все нули потом 1111111, 2222222 и т.д.
Но позже, пока паяйте.
-
Индикатор почти готов, осталось впаять блокировочные ёмкости 0,1 по питанию и можно цеплять к ардуине. Перекур.
-
Диагностика. Видео работы программы диагностики и прошивка.
https://www.youtube.com/watch?v=JqKkpXOt4MY
-
Попробовал залить последнюю тестовую прошивку. Мигает крайний левый индикатор ничего нет больше. Хотя при заливке софта все индикаторы хаотично перебираются случайными знаками.
Кстати видео не работает. Автор ограничил доступ пишет.
-
Ха, нашёл косяк. Оказывается надо CLK подавать непосредственно с ардуино на базу (естественно через 1,2ком). Через инвертор как в схеме не работает.
-
Включил через два инвертора. Все ок. Фото с одной и другой прошивкой
-
Фото
-
Через инвертор как в схеме не работает.
Что инвертор не нужен, я об этом писал:
http://analogtrx.com/SMF/index.php?topic=6.585
599 сообщение.
Ну коль сами разобрались, значит все нормально. Теперь пробуйте подключить Si5351A. И прошивайте всю программу. На выходе сишки получите сигнал на частоте вроде 3600 кгц+пч (толком уже не помню). Без всего остального программа будет работать. То есть, частота отобразится на индикаторе и будет выход на сишке.
-
Кстати видео не работает. Автор ограничил доступ пишет.
Да я толком не знаю, где там ограничить, где разрешить... Сейчас гляну, я мало выкладывал.. потому хрен его знает, что там и как.
-
Олдскульно ) успехов.
-
Нет.
Частен видеоклип
Влезте в профила си, ако имате достъп до този видеоклип
Това е частен видеоклип. Моля, влезте в профила си, за да удостоверите, че имате право да го гледате.
-
Нет.
Да хрен с ним. Там нечего смотреть, ну меняются цифры, только и всего. Тем более у ТС все работает.
Не нашел я пока, что там поменять. Там куча настроек, больше мне нечем заняться...
-
Немного подправил схемы. В основном файл "процессор" и "S-meter". Замените прежние на эти.
-
Ок. Надо схемы просмотреть и плату вытравить под сишку. А можно написать для вас тз краткое под мои желания от этого синтеза? Там много не надо, скорее урезать функционал того что есть и добавить кое что. Это реально сделать?
-
Это реально сделать?
Это просто, если Ваши желания совпадают с тем, что мной уже реализовано в каких-то конструкциях. Короче, давайте тз, буду смотреть..
Но сперва, запустите то, что остается неизменным. Лишнее убрать проще некуда. Добавить - надо смотреть.
Я уже писал, у коллег появляются всякие идеи, я пишу, а они потом пропадают. Работа на корзину.
-
Ок. У меня азарт. Пол пенсии вкинул, назад дороги нет. Тут главное от сухарей ноги не протянуть 56511
-
Кстати я насколько знаю, есть правильные безспуровые коды для сишки, есть со спурами, у вас с этим все хорошо? Я помню на канадском форуме или даже на этом были споры про это.
-
Кстати я насколько знаю, есть правильные безспуровые коды для сишки, есть со спурами, у вас с этим все хорошо?
Совсем безспуровых нет. Спуры есть всегда. Но можно так накосячить, что спуры будут значительными. Я вроде таких косяков не допускал (т.е. применял рекомендуемый алгоритм программирования сишки). А как оно на самом деле получилось, это можно определить только сравнением. Положить рядом на столе два синтезатора и сравнить. Без этого, разговоры на эту тему бесполезны. Других, кем-то изготовленных синтезаторов у меня нет, так что сравнить не с чем. На сайте CQHam я выкладывал спектры синтезатора на Si5351A. Там можно посмотреть.
Кстати, вот недалеко, были результаты. Тут также спектр микросхемы SI5340A, которая в десятки раз дороже. Она конечно получше, но для реализации ее возможностей, нужен соответствующий опорник.
-
Ок. Я это и хотел узнать. 1999
-
На выходе сишки получите сигнал на частоте вроде 3600 кгц+пч (толком уже не помню).
Неправильно. Частота, которую выдаст синтезатор при включении, зависит от положения переключателя диапазонов. Просмотрел сейчас код, для уточнения.
-
Тех. задание на доработку.
1. Хотелось бы иметь прошивку под опорник для SI на 25МГц, а лучше на 50МГц. В перспективе хотелось бы затактироваться от гиацинта с умножителем. У вас сейчас 27МГц.
2. Переключение диапазонов кнопками без фиксации типа КМ1-1, кнопка вверх и вниз.
3. Переключение шагов перестройки. Кнопка одна и по кругу значения гонялись.
Шаги 10Гц, 100Гц, 500Гц, 1КГц и 10Кгц. Индикация значения шага либо кратковременно на дисплей выводиась бы или светодиодами.
4. Кол-во диапазонов хотелось бы 16 добавив ещё один регистр на ДПФ (так хотелось бы самому редактировать диапазоны частота в исходнике)
5. Переключение ГУНов и управление делителями в смесителе.
6. Хотелось бы приспособить валкодер на 400 импульсов с АЛИ.
7. Кнопочка LOCK, блокировка валкодера и индикация светодиодом ВКЛ/ВЫКЛ.
8. Естественно все адаптировать под синтез Игоря2.
Вкратце все. Остальные плюшки вашего синтеза можно удалить.
Реально такое сделать?
-
По порядку..
1. По этому вопросу есть несколько решений. Во-первых, Вы можете поставить себе программу (она бесплатная) AVR Studio 4.19. Я Выкладываю исходник и Вы можете делать все что угодно, там просто изменить цифру. Где, место нахождения я укажу. Я так делаю. Второй вариант, могу установку частоты кварца внести в меню синтезатора. То-есть, Вы нажимаете какую-нибудь кнопку до включения синтезатора, не отпуская ее, включаете синтезатор. Попадаете в меню. Устанавливаете частоту кварца, промежуточную частоту и пр. Снова нажимаете кнопку и все будет записано в ЕЕПРОМ. Манипулировать частотой кварца все равно надо, так как кварц 27 мгц, он вовсе не 27. Подстраивать все равно надо.
2. Без проблем.
3. У меня валкодер интеллектуальный. Если вы крутите медленно, перестраивается также через шаг, если крутнуть быстро, за один оборот можно перестроиться на несколько кгц. Поэтому, необходимости в переключении шага я не вижу. Но, если Вам так больше нравится, не вопрос. Сделаю.
4. Хоть 100. У меня число диапазонов ограничено микросхемой в переключателе, она 8-ми разрядная. И мне нравится переключать галетником, а не тыкать в кнопки, которые не сразу и найдешь. Коль Вам так удобнее, "вверх-вниз" не вопрос.
5. Ну это и так есть. ДПФ же переключаются, от этого сигнала можно переключать и ГУНы. Делитель? Честно говоря, я не знаю зачем Игорь его ввел. Он ограничил перестройку опорника, кажется в пределах 10-20 Мгц. А ее можно взять любую. Впрочем, тут надо его консультация.
6. Это пока вопрос. Вполне возможно, что будет работать без проблем. А там видно будет.
7. Не вопрос, главное, чтобы были свободные порты контроллера. А так как Вы кое-что выбрасываете, они будут.
8. То потом, вместе адаптируем.
И еще. Мне некуда было ставить стрелочный прибор, поэтому стоит светодиодная линейка. Оно, конечно, не то. Думаю, это надо выкинуть, а поставить обычный стрелочник. А там, как хотите.
Есть у меня подпрограммы управления индикатором на МАХ7219 (готовая плата от китайцев), есть на жидкокристаллическом 4148 (индикатор такой как в Элекрафте К2, только побольше размером). Подумайте, может их лучше всунуть. На МАХ, конечно надо бы попробовать соорудить макет и поднести поближе к приемнику. Будут помехи, или нет, и принять решение.
И последнее. Мне не хочется сооружать макеты и проверять все эти переделки, поэтому это все будете испытывать сами на своем железе. Я вношу изменения в программу, Вы прошиваете, пробуете.
Поэтому все эти "хотелки" будут добавляться по одной и после каждого изменения, проверка в железе. Могу, конечно поставить Протеус. Но, он иногда глючит. Раньше стоял, потом я от него отказался.
-
1. Давайте через исходник ПЧ менять, чем проще тем лучше. Редактор я скачаю это не проблема.
2. 1999
3. Интелект у валкодера я бы хотел убрать. Я пользовался как то самоделкой с интелектом, мне не понравилось. Это конечно дело привычки, но как по мне лучше самому рулить процессом через кнопку шага. Прошу интелект убрать 123123
4. Да лучше КМ1-1 вверх вниз диапазоны гонять.
5. ОК. Игорь поясните про делитель в смесителе.
6. У меня есть синтез на AD9850, ардуино 400шагов отрабатывает. Ок. Время покажет что и как.
7. 1999
8. 1999
Да конечно, на моём железе и протестим. На майских займусь платой SI5351 и макетку сделаю. По портам бы лучше обозначить на схеме по новой прошивке.
S метр смело удаляйте из кода. Нужно лишь только что в пунктах.
-
На майских займусь платой SI5351 и макетку сделаю. По портам бы лучше обозначить на схеме по новой прошивке.
Для Si5351A порты менять нельзя. Там жесткая привязка к аппаратной шине I2C(SDA и CKL).
-
Игорь поясните про делитель в смесителе.
Так там всё ясно, как день - делитель смесителя работает в двух режимах - деление на два (на управление - лог. 0), и деление на 4 (на управление - лог. 1 - от 3 до 12 В).
Синтезатор выдаёт частоты от 40 до 80 МГц - частота в 4 раза выше опоры.
Вот садитесь с ручкой, и смотрите, где Вам нужно на 4 делить (естественно, это нижние диапазоны), а где - на два. 44443
Если Вы галетником диапазоны переключаете, то можете это сами организовать, или же, Владимир пусть даёт с проца... dontt44 lol22
Гетеродин всегда ставьте выше частоты приёма - только в игрушечных аппаратах допустимо обратное. 123123 123123 123123
НЕ ЗАБУДЬТЕ про переключение ГУНов - их 4 шт., диапазоны перестройки указаны на схеме. Управление - лог. единицей, от 3 В включительно.
Опять же, если работаете галетником, можете это самостоятельно организовать без напряга программы...
-
S метр смело удаляйте из кода. Нужно лишь только что в пунктах.
Убрал. Лист со схемой можете выкинуть. Освободились три вывода порта.
-
Все понятно Игорь2.
ТО Владимир_К, наверное лучше сделать для каждого диапазона которых вы сказали можно сделать сколько угодно, настройку: диапазон частота приёма, номер ГУНа и вариант делителя на 2 или на 4.
При выборе диапазона ардуина засылает нужные лог единицы и нули на синтез Игоря2. И уже под свои хотелки я и другой пользователь в редакторе все настроили руководствуясь инструкцией.
-
Монстр со статичными светодиодными матрицами - это круто, по-моему, такого ещё не было... cr123
-
Монстр со статичными светодиодными матрицами - это круто, по-моему, такого ещё не было... cr123
Да это круто будет 1999
-
настройку: диапазон частота приёма, номер ГУНа и вариант делителя на 2 или на 4.
А ещё про боковую забыли. 123123
Не забудьте, для каждой боковой СВОЯ арифметика принимаемой частоты - ведь скаты фильтра используются разные... dontt44 lol22
-
Да это круто будет
Куплю его у Вас. 1yep cr123 За три тыщи руб... 44443 pl33
Ну Вы, надеюсь, поняли, про что я. cr123
-
А ещё про боковую забыли. 123123
Не забудьте, для каждой боковой СВОЯ арифметика принимаемой частоты - ведь скаты фильтра используются разные... dontt44 lol22
Кстати да. Можно тогда добавить настройку в каждый диапазон для опорника. А опорник сделать на другой SI5351 со своим контроллером, на него засылать 1 или 0 и он будет генерировать опорные частоты для LSB и USB. С одной сишки пишут вредно брать сразу две частоты. Я надеюсь такое можно будет сделать?
Куплю его у Вас. 1yep cr123 За три тыщи руб... 44443 pl33
Ну Вы, надеюсь, поняли, про что я. cr123
Сгущёнкой лучше lol22 обмакну сухарик, будет вкусно. А то с водой уже приелись, смотреть тошно. dontt44 А если серьёзно за так вышлю комплект как сделаем немалую работу.
-
Гетеродин всегда ставьте выше частоты приёма
Как раз это для программирования проще. Лишних пару строк удалить можно. Только прибавляем 123123 123123
-
А опорник сделать на другой SI5351 со своим контроллером, на него засылать 1 или 0 и он будет генерировать опорные частоты для LSB и USB. С одной сишки пишут вредно брать сразу две частоты.
Вот-вот. У меня именно так и сделано, я Вам более того скажу - в монстре вообще три сишки стоят - одна - опора гетеродина, вторая - второй гетеродин, третья - третий. 1999
Чисто по два провода на каждую. Опора сишек общая - 50 МГц.
И под этот вариант мне Андрей тоже программу написал, я с его платы вообще сишку снимаю, они все снаружи. 1999
-
за так вышлю комплект
Не, ну от такого эксклюзива грех отказываться... 1yep 1999
Только прибавляем
Так естественно. Какой смысл убивать аппарат... lol22
-
Всё будет зависеть от Владимир_К. 123123
-
Не забудьте, для каждой боковой СВОЯ арифметика принимаемой частоты
Давайте вопросы будем решать вместе, по мере поступления. А то мозги тормозить будут. Опорника в синтезаторе нет. Если надо опору двигать, в зависимости например от того, какой фильтр включен, SSB или CW, то да, наверное Si, а пока у меня два кварцевых генератора, каждый на свой скат.
-
Не, ну от такого эксклюзива грех отказываться... 1yep 1999
Ну пока на макете все сделаю, потом перенесу на печатки и зашлю вам.
-
Давайте вопросы будем решать вместе, по мере поступления.
Да точно. А то запутаемся. Всё по порядку.
Пока пилю железки. Как будут готовы, будем кодировать по этапам, сначала одно, потом второе и т.д. по ТЗ. Отчёт через youtube видео тут.
-
Положим, полоса ПЧ 5000.3...5002.7 кГц.
При частоте второго гетеродина 5000, детектируем по ТРАКТУ ПЧ верхнюю боковую, при частоте 5003 - нижнюю.
Так вот, если интересующая нас станция стоит на 10 МГц, то для приёма её по верхней боковой, мы должны по ПЧ включить НИЖНЮЮ боковую, а частоту гетеродина ставить на 5003 выше, соответственно, при приёме нижней боковой, в тракте ПЧ ставим режим приёма верхней, и частота гетеродина должна быть на 5000 кГц выше. cr123
Т. е., обратите внимание, что при смене боковой, должна либо опора моего синтеза меняться без изменения показаний индикатора, либо же, наоборот... lol22
-
И под этот вариант мне Андрей тоже программу написал, я с его платы вообще сишку снимаю, они все снаружи.
А как шины и2ц организованы для сишек, у них же вроде адрес у всех одинаковый?
-
Положим, полоса ПЧ 5000.3...5002.7 кГц.
Тогда надо сделать добавку в ТЗ.
тумблер LSB/USB. При переключении полос меняется в прошивке значение ПЧ и выводятся лог уровни для управления внешними SIшками.
Внешние SIшки я имею в виду отдельный блок опорных гетеродинов который представляет из себя контроллер (ардуино)+ SI5351. При подаче на на порт контроллера 1 работает LSB настройка опорника, при подаче 0 USB.
-
А как шины и2ц организованы для сишек
К каждой - отдельная. Одна только задублирована с индикатором. 1yep
-
Тогда надо сделать добавку в ТЗ.
тумблер LSB/USB.
Несомненно. dontt44 1yep
-
Владимир_К рекомендует редактор AVR Studio 4.19. Я скачал с оф.сайта: https://www.microchip.com/mplab/avr-support/avr-and-sam-downloads-archive
Как понимаю, ещё нужен тулчейн к редактору. Лежит там же по ссылке.
Я скачал по AVR 8-bit & 32-bit v3.3.1.
-
Как понимаю, ещё нужен тулчейн к редактору. Лежит там же по ссылке.
Я уже не помню.. Давно ставил, поэтому, для уточнения вот тут почитайте:
http://easyelectronics.ru/avr-uchebnyj-kurs-programmirovanie-na-si-chast-1.html
Права у Atmel сейчас вроде выкупила Microsoft, она и гонит свои тулчейны, также компиляторы и среды разработки. AVR Studio есть уже и 5,6 и 7 версии. А теперь уже и название вроде поменяли.
-
Его я рекомендовал лишь потому, что с его помощью мои проекты открываются без проблем (хотя наверное и последними версиями также проблем не будет), кроме того, если возникнет необходимость, могу проконсультировать. Последние версии намного круче и обладают многими полезными функциями, но тратить время на изучение новых версий, мне лень.
-
Потому лучше скачать редактор как вас.
-
Вроде самое последнее вот здесь. Эта среда может работать не только с Атмел, но и с Пиками.
https://www.microchip.com/en-us/development-tools-tools-and-software/microchip-studio-for-avr-and-sam-devices
-
Владимир. Рисую схему. По какому принципу подключать дешифратор диапазонов ?
-
По какому принципу подключать дешифратор диапазонов ?
У меня были проблемы с отсутствием свободных выводов портов. Поэтому, все управление у меня представляло три регистра каждый на 8 выводов, итого я мог управлять 24 точками. Один регистр задействован для управления светодиодами подсветки кнопок, они ведь не фиксированы (на фото трансивера видно), второй регистр управляет ДПФ и ФНЧ. 8 диапазонов. И третий регистр переключает все остальное RX/TX, АРУ, УВЧ, аттенюатор и пр. Там еще свободные остались выводы. Управляется вся эта лабуда по трем проводам, Дата, Такт и Строб. Микросхемы соединены в цепочку. Единица или ноль, поступившая на вход первой микросхемы за 24 такта сдвигается на последний вывод, последней микросхемы. Таким образом вся комбинация 24 разрядного числа загоняется в регистры. По команде Строб, выдается на выходы.
Я Вас не ограничиваю, можете делать как угодно и на чем угодно. Кто-то ставит дешифратор 4 входа 16 выходов. Тогда надо задействовать 4 порта и получим 16 выходов, а мне этого не хватало, надо 24.
Каждый регистр монтируется прямо на плате (например ДПФ). Для управления реле, применяю ULN2803, 50v, 500 mA, каждый вывод). Таким образом, нет жгута проводов от контроллера к плате, а всего лишь три провода. Некоторым наличие красивого жгута, нравится. Я его вязать не умею, поэтому стараюсь обойтись без него 123123.
Да забыл. Тут же еще ГУНы появились и делители, так что не забывайте.
-
Придумал как.
-
Как затактировать SI5351 от внешнего опорного генератора? У меня пока на 50мгц квадратный опорник выдратый и компьютерной Платы.
-
Как затактировать SI5351 от внешнего опорного генератора?
На Ха подать сигнал от внешнего генератора, на 2 ногу.
Обратите внимание на схему - питание генератора 3,3 вольта. Как я понял, это видимо с термостатом... Документ от QRP_Lab. Попробуйте поискать в сети. Называется ocxosynth_assembly.
Вот нашел:
https://www.qrp-labs.com/images/ocxokit/ocxosynth_assembly.pdf
-
Ок. Делителем сделаю 3.3 в
-
Кстати. Кнопки можно сделать на аналоговый вход для экономии портов чтобы они заворачивались делитель и контроллер по напряжению делителя понимал какая кнопка зажата ?
-
Кнопки можно сделать на аналоговый вход для экономии портов чтобы они заворачивались делитель
Ну так же и сделано. Схему гляньте. Кнопки у меня на плате валкодера.
-
Ок.
-
Нарисовал схему опорника под вышеизложенное Т.З.
Я кстати в схему заложил ИД3 дешифратор, всё таки 16 диапазонов должно хватить.
Только дешифратор имеет инверсию выходов. Там постоянно лог 1, т.е. входной код надо инвертировать, программно наверное это просто, вместо единиц нули. 123123
Владимир_К, прошу посмотреть схему на наличие ошибок, если все ок, то начинаю разводить макетную плату.
-
1. для енкодера лучше использовать выводи для внешнего прерывания: D2, D3;
2. поправьте вывод, к которому подключен pull-up резистор 1 kOhm к A6. Ни в коем случае он не на +Vin(+9..12V)!, а на напр. +5V;
3. перепутали выводи Arduino SDA и SCL. A4(SDA), A5(SCL);
4. обратите внимание, что A6 - только аналоговый вход. Не знаю код какой, но вход включен как цифровой. Т.е. с особенностями, такое включение тоже возможно;
5. если Arduino был в оригинал (с загрузчиком), по пин 13 при включение следуют несколько импульсов, не являющихся частью программы. Для управления я не стал бы использовать, для индикации: можно, по вашему преценку;
6. стабилизатор 78L05, а не 7805L :).
-
прошу посмотреть схему на наличие ошибок
Если синтезатор будет управлять только ДПФ и опорниками, то можно и так оставить. Только перенесите провод с 12 вольт на 5 вольт, тот который идет к А6 и кнопке через резистор 1 к, иначе порту не поздоровится. А как Вы кнопки будете различать, какая из них нажата? А где прием/передача? Ну прием/передача можно и тумблером, без синтезатора обойтись. А расстройка? К тому же, при переходе на передачу, расстройку надо убрать, поэтому контроллер, все же, должен знать, какой режим, прием, или передача. Кроме того, Вы уменьшили число кнопок, которое идет к аналоговому входу контроллера, поэтому пересчитайте резисторы делителя. Сделайте так, чтобы напряжение увеличивалось на какой-то один коэффициент. Например U1=0,5v, U2=U1*1,2, U3=U2*1,2 и т.д. Точность там особая не нужна, но все же, пульсации питания или еще какая хрень могут вызвать ненужное срабатывание. Максимальное напряжение должно быть около 4,5 вольт, ну и когда все кнопки отпущены - 5 вольт. Короче, равномерно распределите.
Ну и управление делителем в ГУНах, тоже выведите сигнал с какого -либо порта.
В общем, на мой взгляд, вроде все.
-
Веселин спасибо за поиск ошибок. 1999 Поправил. 123123
Владимир_К по порядку:
1. Подтяжку перенёс на 5 вольт.
2. Различие кнопок разве шаг только надо, но его вы сказали что можно кратковременно выводить на матрицы. Диапазон и так понятно, ну а Lock на светодиод, он на пине D13.
3. RX/TX у меня через тумблер, я подумал какая разница через синтез тумблер будет и выдавать команду на передачу, либо на прямую с тумблера...вам проще будет. Так что RX/TX вне синтеза будет.
4. Расстройка мне не нужна. Я ей не пользуюсь.
5. Делители посчитаю.
6. Да точно, про ГУНы и делители я забыл. Сейчас постараюсь нарисовать.
-
для енкодера лучше использовать выводи для внешнего прерывания: D2, D3;
Валкодер у меня работает не по прерываниям, но, все же так будет лучше.
Также подпишите выводы контроллера нормально, например PORTB1. Не понимаю я в этом Ардуино, что такое А6 и пр. Или заглядывать все время надо, что такое А6?
-
Только дешифратор имеет инверсию выходов. Там постоянно лог 1, т.е. входной код надо инвертировать, программно наверное это просто, вместо единиц нули.
Программно это не возможно. Так устроен этот дешифратор. Логика работы дешифратора заложена в нём и она ни как не может быть изменена.
https://www.microshemca.ru/ID3/
-
Программно это не возможно.
Ну почему? Допустим надо нам лог. 1 на порт 5, мы заливаем код 0101 вместо 1010
-
Также подпишите выводы контроллера нормально
Ок.
-
Выходи К155ИД3 - с инверсии. С Вашего примера: выход 5 = HIGH (при все другие = LOW) нет в таблици состоянии
(и невозможнно сделать, представьте это как: при LLLL...HHHH по входом как "бегущий ноль" к выходам 0..15).
-
Да точно. Тогда включу через инверторы. 123123
-
CMOS 4028 у Вас нет?
-
Есть такая только наша ИД1. Только у CD4028 10 выходов...
-
Я бы даже что-то подключю к I2C (expander, др.). Так освободим выводы о другом в будущем. Но схема: Ваша :).
---
Сколько выходов необходими? 16?
-
Да 16.
-
Подкорректировал схему. Не хватило портов. В итоге:
1. LSB/USB будет вне синтеза через тумблерок, синтез будет видеть только состояние тумблера чтобы учитывать частоту опорника в прошивке.
2. Обозначил порты для Владимир_К за исключением А6 и А7. На них я обозначения не нашёл.
3. Добавил управление ГУНами и делителем смесителя.
4. Рассчитал делители кнопок.
На всякий случай распиновка ардуины.
-
Один стаб на генератор не нужен, трнанзюки на шине i2c тоже выкиньте и через 10к к 3.3 Вольта . Если конечно у вас ваша ардуинка 3 вольтовые выводы имеет , а если 5 вольтовые то транзюки нужны. В вообще почему не регистры сдвига то? Там вообще нет ограничений на их количество. Просто к шине spi их и все.
-
А там 5 вольт i2c. Про стаб понял, уберу. Про регистры почитаю, я в этом не бум бум. Постараюсь разобраться и подкорректировать схему.
-
Бегло нагуглил. От МК, как видно, требуется только четыре выхода. Одним (RESET) мы сбрасываем состояние регистра. Из второго (Data) побитно вылазит байтик, а тактовый CLC обеспечивает продвижение битов по регистру. Самих регистров тут три. Они сцеплены паровозом. Когда переполняется первый, то биты из него вылазят во второй, потом в третий. Итого, 24 вывода.
Катоды диодов подключены все вместе через транзистор и как только будет слово мы подаем сигнал Ready и зажигаем всю эту ботву.
Наполнять регистр просто:
1) Поднимаем и держим RESET в 1
2) Выдаем первый (старший) бит на Data.
3) Опускаем в 0 и поднимаем в 1 тактовый выход. На восходящем фронте происходит занос в регистр и сдвиг всей цепочки на один шаг.
4) Повторить со второго пункта пока все биты не выдадим.
А для сброса достаточно уронить Reset в ноль на пару микросекунд.
Все просто :)
-
Как к этому отнесётся Владимир_К ??
-
Подкорректировал схему под сдвиговый регистр + учёл замечания Сергея RA0AHC id99
Руководствовался этой статьёй http://robocraft.ru/blog/arduino/519.html cr123
Прошу опытных внимания 123123
-
Как к этому отнесётся
А как я к этому отнесусь, если у меня именно так и сделано. Вы схемы мои смотрели? 123123
-
lllol Да я особо не вникал в переключатель т.к. хотел дешифратор в итоге пришёл к сдвиговому регистру.
Прошу проверить схему, если всё ок буду рисовать плату.
-
По-моему нет смысла ноги МК занимать коммутацией ГУН, это можно организовать через диодные "или" на выходе дешифратора диапазонов.
Освободившиеся ноги лучше применить скажем на секвенсер, полезная вещь чтобы реле в передатчике не подгорали или всякие переходные щелчки в приемнике подавлять.
-
Ненужны мне ни какие RX-TX в синтезе.
-
Прошу проверить схему
Да схема то правильная, только зачем Вы выводы все время меняете. Вы же понимаете, если Вы поменяли вывод процессора, например - у меня data на выводе PD2, Вы ее зачем то переносите на PB3. Чтобы я программу корректировал? У меня так разведено в трансивере, и его я могу использовать как макет для проверки. Если я в программе поменяю вывод, тогда мне придется отсоединять этот вывод, а то и дорожку резать..
Смотрите мою схему и делайте максимум по ней. Можно конечно что-то изменить, но выводы то зачем менять, они ведь все равнозначные.
-
Потому что выше сказали что валкодер лучше вешать на PD2, PD3 dontt44
-
Потому что выше сказали что валкодер лучше вешать на PD2, PD3
А тогда да 123123. Валкодер у меня на других выводах, но я боюсь, что Ваш валкодер придется юзать на прерываниях. Все же 400 импульсов не 100.
Поэтому, делайте по Вашей схеме. Ошибок я вроде не вижу.
-
Ок. Буду делать макетку и после начнём ее оживлять? 123123
-
Пошарил у себя в запасах я не нашёл сишки(( в магазинах тоже нет. Придётся заказывать с алиэкспресс. Это время. Владимир_К без сишки можно будет код редактировать?
-
Заказал такой модуль
-
Это время. Владимир_К без сишки можно будет код редактировать?
Что спаяете, то и будем проверять. Код управления сишкой пока отключу. На этот модуль вроде подходят разъемы SMA. Я у себя на модулях поставил и заказал там же и кабель с ответным разъемом. Оно неплохо выглядит, легко снять модуль. Правда у меня модули все самодельные.
-
Да это для тестов. Ещё заказал пять штук сишек и пару опорников. Модуль чисто для макетов. Делаю плату.
-
Заказал такой модуль
А что там за дополнительная схема собрана на каких-то транзисторах? cr123
-
Согласование уровней
-
Согласование уровней
Каких? cr123
-
С ардуино выходит лог 1 5 вольт а схема конвертирует в 3.3
-
А, понял. Там, похоже, ещё и стабилизатор есть на 3.3 В, или мне показалось? pl33
-
Да да lllol
-
1yep cr123 lol22
-
Обожаю это форум за смайлики lol22 ещё бы те смайлы что в аське были внедрить. lol22
-
Да ну, их тут и так хватает. Основной есть lol22.
-
(http://arcanumclub.ru/smiles/gribnik-club-01.gif) (http://gribnik-club.ru/) (http://arcanumclub.ru/smiles/smile9.gif) (http://arcanumclub.ru/smiles/smile80.gif)
-
(http://arcanumclub.ru/smiles/smile109.gif) (http://arcanumclub.ru/smiles/smile148.gif) (http://arcanumclub.ru/smiles/smile221.gif)
-
(https://emojio.ru/images/apple-m/1f92a.png)
-
лог 1 5 вольт а схема конвертирует в 3.3
i2c реализовывается придавливанием к нолю порта. Единица делается путём подтяжки резисторами шины i2c к +3,3вольта. Те два транзистора не нужны. Масло масляное они делают.
-
Ну да, у меня же в ряде конструкций SI управляется 5-вольтовыми процами, просто выход открытым коллектором программируют, и резисторы подтяжки... 1yep
-
1. Для ATmega328 с питанием от 5V согласно документации читаем: минимальнoe напрежение по TWI для HIGH составляет 0,7 * Vcc или 0,7 * 5,0V = 3,5V.
Принимаете ли это во внимание или игнорируете (при Vdevice = 3,3V, при чтении регистра с устройства), зависит от конструктора. Я предпочитаю следовать документации микроконтроллера (связь 5V -> 3,3V устройство через Bi-Directional Logic Level Converter).
---
2. Ето тестовая конструкция, плата. Преставьте если предыдущая программа, загруженная в Arduino перед нашим тестом, использовала А4 и А5 как выходи, с неблагоприятной для нас статической логический уровень: HIGH (в случая: +5V). Подключаем Si5351 к Arduino I2C, мы забыли, что новую (для Si) программу не загрузили, загружаем. Что происходит с Si5351 (питание 3,3V) с напрежение на два входа 5V в течение напр. нескольких минут? Понятия не имею (толерантны ли входы к 5V или нет?, будет дефект или нет?), но не хочу догадываться и бессмысленно экспериментировать. И опять предпочитаю включить converter с 2 транзистора.
Есть и другие интерфейсы. Да:
5V to 3.3V logic level translation/conversion/shifting: how to interface a 5V output to a 3.3V input:
https://next-hack.com/index.php/2017/09/15/how-to-interface-a-5v-output-to-a-3-3v-input/
Но я предпочитаю этот с 2 транзистора (он Bi-Directional: читаю из Si регистри, не только пишу внутри). Даже до 800 kHz проблем с 30-сантиметровыми кабелями по I2C пока не заметил. Поэтому я предлагаю оставить патент Philips там, где он принадлежит: между 5V-микроконтроллером и 3,3V-устройством.
-
Я как то года три назад делал на кухню приёмник на чипе RDA5807. Она тоже управляется по I2C. Я на прямую от А4, А5 подал без преобразователя уровней, всё чётко отрабатывает. С SI5351 лучше все по уму сделать, чтобы потом не нарваться.
-
... на чипе RDA5807. .. на прямую от А4, А5 подал без преобразователя уровней, всё чётко отрабатывает.
Если Вы ничего не меняли в Wire.h (SDA и SCL включени по умолчанию с pull-up к +U(5V)), вероятно, так и работало: +5V, input pull-up 20..50 kOhm) -> вход RDA5807 и ограничение внутр. диодов. А если бы в предыдущем скетче было как пример мой (2), не знаем, что бы произошло :) . (с RDA и я пытался в такой случай (2) за несколько секунд, чип останавливается -> входные токи вероятно протекали до ограничения тока по выхода MCU (40 mА?)).
-
Третий год работает как есть 44443 пока вроде норм, да и люди не жалуются.
-
123123 не о том тема.
-
Заканчиваю монтаж. 444tom 123123
-
пока так. 123123
-
жду указаний от Владимир_К cr123 id99 123123 rrr7777 1yep
-
жду указаний
Скачал Вашу схему, правлю порты... Полчаса, где-то с тестированием...
Схемы делайте в Splane, ибо эту нечем и распечатать, уже два раза уменьшал, а она один хрен не помещается...
-
Ок. Схему завтра скину. Она у меня на работе в ноуте
-
Не малость я погорячился. Полчаса не получается, а тут еще внук перед сном поиграться хочет 123123.
Надо еще пересчитать напряжения в делителе кнопок, так как там тоже поменялось и всего лишь из-за того, что у меня семь кнопок, а у Вас пять.
-
Так я там напряжения все написал
-
напряжения все написал
Контроллер не понимает, что такое 2 вольта. Ему нужно перевести из условия, что 5v=1024. И не только перевести, но и записать куда надо cr123
Ну то ладно. Мне нужна таблица. № диапазона - № Гуна - Частота минимальная(то что отображается на дисплее) - Частота максимальная (то что отображается на дисплее) - частота на выходе Si максимальная (а лучше формулу соотношения между частотой приема и частотой SI, а то уже мозги не работают dontt44), частота на выходе Si минимальная - делитель включен 1, выключен 0.
Это чтобы я не анализировал схему Игоря и не разбирался, какая частота делится, какая нет, а просто тупо записал в программу.
-
А там сложно потом в исходнике редактировать эти параметры?
А тозабили бы рандомно диапазоны, номера гунов и делитель, а я потом сам бы подредачил.
-
Где то видел Игорь2 выкладывал таблицу для Андрея ILF там как раз номер гунов делителей и частота сишки.
-
Так вот же
-
А там сложно потом
Да не. Оно в одном месте будет, в таблице. Но дело в том, что просто поменять не получится, там надо иногда и в подпрограмме Si кое-что править. Может быть придется на некоторых диапазонах делитель в сишке задействовать. А это ведет к изменению шага, ну в общем, есть некоторые моменты. Конечно, можно вылизать программу так, что задал ей параметр, а она все сама сделает. Но это время. Надо сейчас оживить, а потом апгрейдить, по мере надобности.
Главное получить чистый сигнал... Остальное все приложится, со временем 123123
-
Так вот же
Ну вижу 9 диапазонов, а где остальные 7?
-
пока остальные возьмите с начала. 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7
-
остальные возьмите с начала.
123123
-
33wr 1yep
-
1. Для ATmega328 с питанием от 5V согласно документации читаем: минимальнoe напрежение по TWI для HIGH составляет 0,7 * Vcc или 0,7 * 5,0V = 3,5V.
Принимаете ли это во внимание или игнорируете (при Vdevice = 3,3V, при чтении регистра с устройства), зависит от конструктора. Я предпочитаю следовать документации микроконтроллера (связь 5V -> 3,3V устройство через Bi-Directional Logic Level Converter).
TWI работает но низкому уровню. И даже при подтяжке к +2,5V и питании меги 5 вольт проблем не было замечено! Структуру портов можно рассматривать но где в TWI вы видели чтоб высокий уровень устанавливался как Portc.4 = 1? Именно установкой в высокий уровень порта настроенного на выход? Тогда бы и резисторы для подтяжки в высокий уровень были бы не нужны! А без них ни как или используют встроенные в чип резисторы но на самой низкой скорости передачи. Потому что шина двунаправленная и если мега являясь ведущим устройством установит высокий уровень на порту а ведомое устройство при обмене данными прижмёт шины к земле то получится кто кого пересилит- ведущий или ведомый!
Шина i2c без подтягивающих резисторов всегда будет в не определённом состоянии.
i2c это не spi. Несколько иначе работает. Всегда смотрю на пропадание и появление низкого уровня на шине. Если нет низкого уровня то это значит что он высокий и ни как иначе. И ни каких пробле.
С SI5351 лучше все по уму сделать, чтобы потом не нарваться.
Да не нарвётесь ни на что. Скорее на чудесатые полевики можно нарваться в согласователе. Это всё от не знания. Да собственно вам оно по сути и не нужно так глубоко копать. Пока по крайней мере не надо.
PS: много раз доводилось прошивать контроллеры с питанием 3,3 вольта и питанием от программатора UABASP. При прошивке пять вольт вместо 3,3 шло на мегу + si5351 и такое она выдерживает без проблем. Живучая...
-
... но где в TWI вы видели чтоб высокий уровень устанавливался как Portc.4 = 1? Именно установкой в высокий уровень порта настроенного на выход? Тогда бы и резисторы для подтяжки в высокий уровень были бы не нужны!
в Arduino: здесь:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c
т.е. если twi.c/wire не модифицирована, при инициализация оригинальной Wire.h, внутренные pull-up всегда включаеться к +Vcc.
Для для тест, даже для многих устройства внутреннйе pull-up резисторы часто достаточно (20..50 kOhm).
выдерживает без проблем. Живучая...
Да, нормально, но режим вне документации (при чтение). Как я уже писал, решает конструктор.
(по крайней мере, стараюсь избегать таких режимов, по крайней мере, еще при первоначальном анализе.
Ето интересно, а и 6 деталей не сильно меняют схему. А проще просто снизить напряжение питания до 3,3V).
-
Давайте закроем эту тему. Транзисторы стоят в китайских модулях значит так нужно
-
Транзисторы стоят в китайских модулях значит так нужно
Они там стоят потому что китайцы тупо копируют модуль QRP LAB точно так же игнорируя нормальную подачу питания на сишку! Давайте закроем эту тему.
Принято. Просто интересно что выйдет в итоге.
PS: на счёт индикации на МАХ7219. Ни каких проблем с ней нет при правильной подаче питания. Страх перед динамической индикацией преувеличен и тянется с тех времён когда светодиоды были тусклые и жрали неменяно токи. Современные матрицы 8 штук при потреблении 50мА МАХ7219 ядовито светят. И помехи она не излучает. Но не все могут сделать разводку питания так чтоб потребляемый индикацией ток не промодулировал весь трансивер. 444tom
Кстати МАХ7219 позволяет обновлять только нужный разряд + прямое управление сегментами и не загонять в регистры целиком все разряды если обновилась всего одна цифра из восьми. Передаётся 16 бит где 8 бит разряд и 8 бит данные для вывода.
-
У меня кстати в данном виде с тестовой прошивкой когда гоняет 1111 222 и т. д. при всех восьмёрках потребление около 210ма. dontt44 Всё же статическая индикация лучше. Зачем лишний гемор с помехами да и UT2FW проверил этот индикатор в мелкой серии своих DN
-
Просто интересно что выйдет в итоге.
Мне самому интересно что получится. Хочется попробовать чудо синтез Игоря2 с параметрами которые не имеют Японцы за 5 тыс евро. Он заявлял вроде что лучше его синтеза нет. lllol pl33 lol22 Детали заказал, сухарями питаюсь вторую неделю, две трети пенсии вывалил уже dontt44 а что поделать, кому сейчас легко adm
-
потребление около 210ма
- а почему не уменьшите ток, яркости там с запасом..
-
Аппарат настольный будет там +- ничего страшного
-
Будем откровенны, японцы дорогие догнали Игоря. Сейчас фазовые шумы в основных параметрах ТОР трансиверов. Ну и внутри нормальные синты, а не микрухи DDS стоят.
-
Это же хорошо. За копейки получаем синтез как у аппарата за 5000 зелени 1999
-
Сделаем плату управления синтезом и будет счастье. Хоть спурты без антенны перестанут пиликать.
-
У меня кстати в данном виде с тестовой прошивкой когда гоняет 1111 222 и т. д. при всех восьмёрках потребление около 210 ма.
Это получается, около 4 мА на сегмент.
Тут, конечно индикатор не совсем правильно сделан, для современных индикаторов яркости с избытком. Идеальное решение, конечно, запитать сегменты через резисторы. Если бы это не была конструкция, по словам автора, неоднократно проверенная, я бы на такое решение не пошел. Кстати, в сети несколько раз видел печатки, в которых предусмотрены места для резисторов. Но размер индикаторов там побольше, 0,5 дюйма.
Сегодня времени на программу я уделить не смог.
-
Эх...Понял. dontt44 33wr 1yep
-
Дела неотложные.. Могилы родственников, которых к сожалению много...
По схеме вопрос. Контроль LSB/USB. Это что, кнопка или выход порта для управления чем-то?
-
Дела неотложные..
Да конечно, как время есть и желание. Тут всё на энтузиазме. 123123 1999 1yep 1999
По схеме вопрос. Контроль LSB/USB.
Это аналоговый вход. Когда лог. 1 то одна ПЧ, когда 0 то ПЧ смещается. Типо 500кгц и 503. Я планирую тумблерком переключать опорники в второй пч, и чтобы синтез видел это и корректировал частоту ПЧ. 1yep
-
Всё же статическая индикация лучше. Зачем лишний гемор с помехами да и UT2FW проверил этот индикатор в мелкой серии своих DN
Это было актуально лет 20 лет назад. Другого просто не было. Если бы у пана Тарасова тогда были бы МАХ7219 уверен он бы её использовал без проблем вместо кучи "ирок".
Тогда было такое время появились импортные АЛС засветить которые хватало тока с К561ИР2. Но они тут работают в режиме сколько сможет выдавить в нагрузку. У меня пару раз сдыхали и уж если делаете то берите их с запасом и с одной партии для замены в случае чего. Микросхемы с другой партии могут другой ток обеспечивать и это сразу же видно на АЛС. Бывает что даже между микросхемами с одной партии разхрос есть. В макеевской шкале как то пришлось все шесть микросхем менять так как одна цифра после замены CD4015 начала отделятся по яркости от других.
Тут, конечно индикатор не совсем правильно сделан, для современных индикаторов яркости с избытком. Идеальное решение, конечно, запитать сегменты через резисторы.
Если использовать АЛС с общим анодом то можно подавать регулируемое напряжение на аноды АЛС и менять яркость. Я такое же делал с 74НС595 и АЛС подавая 1,8 вольта через стабилизатор на общий анод АЛС.
-
Что есть то есть. Да нормально. Тут же не то чтобы необходимость спаять с меньшими затратами, а чисто в удовольствие.
-
Это макет на печатке можно и смд резисторы заложить.
-
Подкорректировал схему
А что за опора на SI стоит на 50 МГц? С фазовыми шумами у неё всё в порядке? cr123
-
Вот пробуйте, первый блин 123123. Прошивка для синтеза опоры. Тут все согласно Вашему ТЗ, кроме программы управления Si5351A, она отключена.
Пока нет индикации шага валкодера. Пока тестируйте то что есть. На дисплей должна быть выведена минимальная частота первого диапазона 1800000 гц, при вращении валкодера она должна меняться. При достижении максимальной частоты данного диапазона, частота прыгает назад, на минимум. Нажатеи кнопок диапазон вверх вниз, соответственно должна меняться частота на дисплее, на выходах регистров должна появляться единица в соответствующем месте. Кнопки Step должны менять шаг, вверх-вниз. Соответственно и на дисплее частота должна меняться валкодером на значение установленного шага. При нажатии кнопки блокирования валкодера, должен зажечься светодиод на выходе порта D6 и должен блокироваться валкодер. Повторное нажатие кнопки отменяет предыдущее действие. Тумблер переключения боковой пока не задействован.
Пока даже не прогнал программу в пошаговом режиме,так что работоспособность под большим вопросом, но попытка не пытка. Ничего не сгорит lol22.
-
появились импортные АЛС засветить которые хватало тока с К561ИР2.
Я так никогда не делал, ибо это противоречит даташиту, и ставит микросхему раком.
В размерах, как я понимаю, ограничений нет, транзисторы буферами туда поставить, и дело с концом... pl33
-
Кино https://youtu.be/4AQxzrDNu3g
Прокоментирую видео. При включении частота 02,000,00. На энкодер ноль реакции, хотя импульсы есть. Пока впаял механический. Из кнопок работает только ШАГ ВВЕРХ, остальные ноль реакции. Если ШАГ ВВЕРХ гонять быстро, то на дисплее кракобязины вылетают и синтез клинит. На видео видно. Пока так 1yep dontt44
-
Если ШАГ ВВЕРХ гонять быстро, то на дисплее кракобязины вылетают.
Ну вроде один косяк нашел. Я при отладке убрал задержки при выдаче импульса записи в индикаторы, так как при отладке слишком долго отрабатывает. И забыл их вернуть.
Насчет кнопок. Гляньте схему Ардуино. Какое напряжение там подается на вход AREF, это 17 нога. Или замерьте.
Новая прошивка, вернул задержки.
Если опять будут проблемы, я спаяю у себя макет. Или поставлю "Протеус". Иначе будем переписываться до "второго пришествия".
-
Так кнопки вроде на PC0 висят?! cr123
-
Так кнопки вроде на PC0
Да, а AREF это опорное напряжение, с которым сравнивается входное на входах АЦП.
-
На AREF 5.1 Вольт. Проверил кнопки нажимая по очереди там напряжения все согласно схеме.
Залил новую прошивку. Ни чего не поменялось. Так же клинит и работает одна кнопка Диапазон ВВЕРХ. Остальные кнопки не работают как и валкодер.
-
Ладно, пока отложите. У меня индикатор подключен, кнопки на макете есть, только надо резисторы другие припаять, валкодер тоже есть, разъемы надо к нему припаять. Проверю, потом продолжим.
С наскоку не получилось. Но! Каждое уважающее себя устройство, не начинает работать сразу. lol22
-
Проверю, потом продолжим.
Ок. Хорошо. Надеюсь всё получится! lol22 123123 1999 id99 cr123 lol22
Каждое уважающее себя устройство, не начинает работать сразу.
Опорник должен получиться бомба. 1999
-
А что за опора на SI стоит на 50 МГц? С фазовыми шумами у неё всё в порядке? cr123
Обычный прямоугольник, генератор на 50мгц. Типо такого. https://www.chipdip.ru/product/50mhz-hcmos-ttl?utm_source=google&utm_medium=cpc&position_type={position_type}|k50id|pla-293946777986|cid|11948935153|aid|488788063566|gid|114124782205&utm_campaign=G_tovarnieobjavlenija&utm_content=text1_ga&utm_term= Пока ничего там нет, сишка в виде модуля с китая едет и когда приедет пока вопрос. Потом гиацинт поставлю с умножителем по вашей схеме.
-
Обычный прямоугольник, генератор на 50мгц.
Имейте в виду, что шум хотя бы -130 дБ/Гц от него нужно получать, в противном случае, за общий фазовый шум я не ручаюсь.
Давал ранее схему удвоения кварца на 25 МГц - с ней всё гарантированно получится... 1yep 1999
-
А как на счёт Гиацинт-М ? Если 10 гармонику взять?
-
Без проблем. По-моему, тоже выкладывал. Гиацинт не шумит. 123123 cr123 1999
-
Гиацинт по стабильности хороший?
-
Лучше не найдёте. Только прогревать его долго.
-
Ок ок. Как вы его калибруете ? Дайте методику.
-
Как вы его калибруете ?
По РВМ. Калибрую раз в полгода тот, что вставлен в Р-160, добиваясь при частоте приёма 4996 кГц 1 колебание в 40 секунд - разбег 0.025 Гц. Частота гетеродина при этом порядка 44 МГц.
Вот и считайте точность от 44000000 Гц сдвиг 0.025 Гц.
Естественно, это точность кратковременная.
По нему все остальные выставляю... pl33
-
Нулевые биения ка
К смотрели?
-
В Р-160 специально индикатор есть.
-
А без р160 как измерить?
-
А без р160 как измерить?
Да элементарно. Настраиваетесь на РВМ (4996, 9996), когда она несущую даёт, выставляете на выходе тон 1 кГц, и, подкручивая свой Гиацинт, который опора в синтезе, выставляете по любому частотомеру нужные 1 кГц на НЧ выходе. Точности частотомера 6 знаков хватит за глаза.
Для полного счастья, чтобы цифры не особо прыгали, включаете телеграфный фильтр - у меня он во многих слабосигналках есть.
И на его частоте меряете... lllol
-
Звуковую карту компа можно использовать?
-
На всякий случай сгенерите ей 1 кГц и частотомером гляньте, насколько она врёт...
-
Звуковую карту тоже желательно откалибровать, если это дешевка бортовая или какая-нибудь с-media.
Обычно это делал по программам sstv и rwm сигналу, потом уточненный семплрейт задаем в настройках и "вуаля".
Иногда попадались кривые карты с ошибкой до 300-600ppm.
-
Иногда попадались кривые карты с ошибкой до 300-600ppm.
Вот и я про то же... 1yep dontt44 cr123
-
А можно поделить 1кгц и деление загнать в какой то прибор который стрелкой бы показывал 1кгц
-
Конечно можно, только вот точность у стрелочных приборов вряд ли выше 1% будет. Что к частоте гетеродина 14 МГц даст точность, 10 Гц, для Гиацинта это сильно грубо...
-
Откалибровать стрелочный прибор
-
Возьмите нормальный кварц, поделите его до 1 кГц, полайте на смеситель, на второй вход смесителя - сигнал НЧ с приёмника, с которого с эфира 1 кГц получаете, на выход смесителя - стрелочный прибор, который будет болтаться с разностной частотой.
Если Вам так хочется со стрелкой... 44443
-
Да проще звуковую откалибровать любым приемником (точность частоты не важна) по sstv+rwm потом любым спектролабом смотреть-измерять, введя в него ppm или прямо скорректированное значение sample rate.
Можно еще с 5-долларового GPS-модуля NEO-7( NEO-8 ) взять любую частоту для сравнения, они генерируют на выбор, там внутри синтез синхронизируется по 1pps. Можно и прямо 5МГц задать и потом даже не калиброванной звуковой сравнивать биения с "геоцинта".
-
Ок понял. У меня карта ugm96. Третий сорт но что имею то имею
-
Тогда гиацинт будет поточности как 1 кГц кварц
Тогда у гетеродина, тактируемого сишкой, которая, в свою очередь, тактируется Гиацинтом, на частоте РВМ+ПЧ (это больше 10 МГц) будет АБСОЛЮТНАЯ ошибка та же самая, что у кварца на 1 кГц. АБСОЛЮТНАЯ.
Т. е., если кварц с ошибкой 1 Гц (относительная ошибка 0.1% - такие кварцы сразу в помойку 44443), то с той же ошибкой 1 Гц будет и гетеродин, если его частота 10 МГц, это будет относительная ошибка 0.00001% lllol
-
Третий сорт но что имею то имею
Третий сорт не брак так как четвёртый ещё не последний. lol22
-
Надо бы стендик для калибровки придумать
-
Сегодня подключил валкодер. Отладил программу, раньше забыл в одном месте внести изменение, связанное с заменой выводов порта.
Если есть желание, можете проверить. Si5351A пока отключена.
Что-то не везет последнее время, надо на дачу ехать, а в тачке повороты не работают 56511. Так что, у меня сегодня более интеллектуальные задачи были. Какой-то м...к до меня, напутал в схемах проводки, а я теперь долбаюсь (говорили мне, покупай новую dontt44).
Хотел новую, но не хватило денег. Купил старую, остались деньги, можно прикупить еще козу, но коза мне не нужна.
-
Залил прошивку. Вроде все работает, но при нажатии на кнопку лок не горит светодиод лок. Ещё не проверял дешифратор и управление гун и делителем. Чуть позже проверю
-
Сдвиговые регистры диапазонов работают, правда задом на перед, ну это все ерунда.
выбор ГУНов и упр. делителя не работают. И нет индикации ШАГа перестройки на табло.
Валкодер на 400 импульсов нормально отрабатывает. Но он очень резкий получился. Надо будет искать с меньшим шагом или как то делитель приспосабливать. Очень резкий валкодер. Острая настройка в паре с подшипником не дают точно настроиться. Как скальпель.
Правда когда быстро крутишь табло немного пульсирует по яркости.
Хотелочка: а ни как нельзя сделать в прошивке чтобы предыдущая частота запоминалась? А то с переходом с диапазона на диапазон синтез стартует с той частоты которая прописана в прошивке. 123123
А так в целом пока всё круто очень получается 1999 1999
-
Вроде все работает, но при нажатии на кнопку лок не горит светодиод лок. Ещё не проверял дешифратор и управление гун и делителем.
У меня на макете кнопка lock работает, светодиод горит и валкодер блокируется. Проверьте монтаж и напряжения на входе АЦП, У меня напряжения такие:
0,93, 1,48, 1,99, 2,5, 2,98. Если не нажата ни одна кнопка, напряжение 5,03. Хотя, причина скорее не здесь, там интервал очень большой.правда задом на перед
Если это напрягает, могу и переделать. Но позже, наверное к вечеру.
выбор ГУНов и упр. делителя не работают. И нет индикации ШАГа перестройки на табло.
Я еще не делал это.
Но он очень резкий получился.
Потому я такие и не применяю, 60 импульсов, да еще интеллектуальный, самое то. Три синтезатора в народ пошли, довольны. Один товарищ для Р-143 хотел с переключением шага. Я сделал, потом предложил ему попробовать прошивку с интеллектуальным валкодером, после чего, от переключения шага он отказался. А у него диапазоны сплошные, не только любительские.
а ни как нельзя сделать в прошивке чтобы предыдущая частота запоминалась?
Можно, не вопрос. Но, если делать запоминание при выключении, тогда надо доработать схему. Надо запитать контроллер по двум линиям. На вход АЦП надо подать напряжение питания, а по питанию контроллера надо поставить электролит. То есть, контроллер проверяет напряжение питания схемы, как только оно упадет до некоторого значения, контроллер прерывает работу, запоминает частоту в ЕЕПРОМ. Все это время он получает питание от электролита, развязанного с остальной схемой диодом. Но, насколько хватит ЕЕПРОМ, не знаю. Гарантируют то производители много, кажется 100000 записей, но я один раз посадил память. Не знаю, что произошло.
-
У меня на макете кнопка lock работает, светодиод горит и валкодер блокируется.
Всё ок. Светодиод дохлый оказался.
Если это напрягает, могу и переделать.
Можно и так оставить. Просто записал на каком диапазоне какой пин задействован и всё.
-
123123
Индикацию шага, в течение какого времени показывать, на 0,5 сек, или меньше?
-
Можно, не вопрос. Но, если делать запоминание при выключении, тогда надо доработать схему.
ЕЕПРОМ не стоит наверное. Пусть стартует с запрограммленых частот. Только когда с диапазона на диапазон переключаешь было бы не плохо чтобы частота запоминалась. Привычка с старого аппарата ешё такая. А интелектуальный валкодер, не очень люблю. Пробовал как то, очень на любителя. Я по старинке шагами.
Кстати вопрос. А сишка сможет точно шагать, там ведь чтобы перестроиться на 10гц вроде надо шаг сишки чуть ли не пол герца...
-
Индикацию шага, в течение какого времени показывать, на 0,5 сек, или меньше?
0,5 думаю хватит. А то слишком долго будет напрягать.
-
А сишка сможет точно шагать, там ведь чтобы перестроиться на 10гц вроде надо шаг сишки чуть ли не пол герца...
Да я как-то этим не особенно заморачивался. Когда подгонял частоту опорника с моим частотомером, вроде все совпадает до нескольких герц, но потом постепенно частоты уходят, или в синтезаторе кварц при нагреве уходит, или в частотомере. Он у меня также самодельный.
Поэтому, получить точную частоту до долей герца я не пытался. Это надо посмотреть математику Сишки, я уже не помню значение делителя в знаменателе. От него зависит минимальный шаг перестройки. Так что тут есть определенные сложности.
-
Так то у Игорь2 сишкой тактируется да и Сергей делал опорник на дискавери + сишка. Работать должно. lol22 123123
-
Кстати, на дружеском форуме, как говорит Игорь, где его гоняют lol22, нашёл схему делителя для валкодера на 4.
-
Это всё дела программерские 123123 не стоит пладить корпуса микрух. Антидребезг, деления, реверс, интеллектуальный шаг - это все делают программисты.
-
Антидребезг
Кстати антидребезг было бы неплохо внедрить. А то на один щелчёк механического энкодера синтез делает несколько шагов. Я осцилом смотрел там дребезг реально есть. 123123
-
Кстати, сам не думал еще, Владимир вы не покажите свой вариант интеллектуального изменения шага перестройки rrr7777
Я все больше склоняюсь, что это правильно.
-
вы не покажите свой вариант интеллектуального изменения шага перестройки
Да не вопрос. Полный исходник в архиве. Но это синтезатор моего трансивера. Схему я выше выкладывал. Не знаю, кто как делает. У меня это так: таймер настроен на определенное время (уже не помню, несколько миллисекунд). Валкодер считает шаги в течение этого времени и число шагов сохраняется в буфере. Когда происходит прерывание по таймеру, смотрим, если в буфере не ноль (крутили валкодер), переходим к обработке. Частота, новая, равна прежней частоте плюс шаг, умноженный на квадрат содержания буфера валкодера. Таким образом, если за время заданное таймером вы накрутили валкодер на один шаг, частота увеличится также на один шаг, накрутили два шага, частота увеличится, или уменьшится на 4 шага. Таким образом, при шаге 10 герц и числе делений валкодера 60, я могу, крутнув валкодер (а он на подшипниках) перестроиться на несколько кгц.
Антидребезг, деления, реверс, интеллектуальный шаг - это все делают программисты.
Да, это так. Тем более, память контроллера заполнена меньше чем на четверть. Ну, еще добавится чуть чуть. Все равно места пустого много. Пока не знаю, как поделить импульсы валкодера. Скорее всего, опять же, будет какой-то буфер. В нем накапливается число, когда оно достигнет, скажем 4-х, в основной буфер добавляем единицу. По срабатыванию таймера, частота изменится на эту единицу, таким образом, число импульсов будет поделено на 4. Вроде все логично, но надо пробовать, может что неожиданное вылезет.
-
Игорь2 по сколько сишка должна шагать чтобы обеспечить шаг на выходе вашего синтеза в 10гц?
-
На нижних диапазонах - 10 Гц, на верхних - 5...
-
Где делитель на 2 там 10Гц шаг сишки = 10гц на выходе гунов, и где 4 делитель там 5гц = 10гц на выходе гун, правильно? 123123
-
сколько сишка должна шагать чтобы обеспечить шаг
Да не шагает она никуда. Частота которую выдает сишка определяется так:
Делим число 900000000/частота. Получаем какое-то значение. Дробная часто отбрасывается. Например, частота 20012021 гц. 900000000/20012021=44. Если бы получилось нечетное число, то его уменьшаем на единицу, то есть число всегда четное, целое. Затем умножаем 20012021*44=880528924. Вот на этой частоте будет работать ГУН сишки. Дальше программа вычисляет делитель в цепи PLL, который представляет собой число а+в/с. Где с - знаменатель дроби мы задаем, обычно я беру максимальное значение, оно определяется разрядностью делителя и равно 1048575 (это FFFFF, в шестнадцатеричной системе).
То есть частота кварца, умноженная на (а+в/с), должна составлять 880528924. а - целое число. в - также целое число, максимальное значение его также FFFFF.
Таким образом, в принципе возможно получить точность генерируемой частоты в доли герца. Но для этого, надо бы менять и с, но этого мало никто не делает. Делает программа компьютерная, от производителя сишки, которая может управлять и платой, от их же, которая стоит сотни долларов. Вот та программа может выдать любую частоту с большой точностью.
-
Частота которую выдает сишка определяется так:
(http://arcanumclub.ru/smiles/smile42.gif) сложно даже представить этот алгоритм в программном коде..как это всё вычислять при повороте ручки валкодера))
никто не делает
А у вас софт вычисляет С ?
-
А у вас софт вычисляет С ?
Нет, я выше писал, я беру его максимальным. А вот насколько точно выдает сишка частоту, это может сказать тот у кого есть частотомер, с точностью, скажем 0,1 гц.
Но, погрешность в математике тут конечно присутствует. Наверное, ее можно свести к нулю (точнее к точности частоты опорного кварца), если опорный кварц будет выдавать точно 27000000 гц, без всяких запятых и пр. Но это может сказать тот, кто дружит с математикой и у него есть желание в этом ковыряться.
-
Ошибку можно будет опорником подстроить как я понимаю?
-
правильно?
Да...
-
Нет
На разных диапазонах разная ошибка будет. Поэтому надо в расчетах подстраивать частоту кварца до 1 гц , тогда математика будет работать везде.
Веселин определил , что максимально возможная частота кварца (опоры) не должника превышать 66 мгц. И с этим согласен!
-
максимально возможная частота кварца (опоры) не должника превышать 66 мгц.
Странно. У меня до 95 МГц, насколько помню, одна из сишек ещё работала. cr123
И на 75 МГц я даже ориентировался поначалу... cr123
-
... Веселин определил , что максимально возможная частота кварца (опоры) не должника превышать 66 мгц. И с этим согласен!
Ето не так, а такой был мой макс. доступной кв. генератор, с которой Si работала.
---
3 лет назад перед написанием кода я сначала попробовал много вариантов вычисл. с помощью Excel.
В расчете в MCU погрешность выше (есть float в вычисл., а в avr-gcc float: 6-7 ч. после запетаи), но с uint64_t (и без float, в Arduino нет double), при необходимости можно братить внимание и на погрешность. А и так она достаточно мала.
Ниже: в случае алгоритм вычисл.: при с' = 0xFFFFF и частота: 23,201500 MHz.
-
А то на 80м даже 10гц на слух чуят lllol
-
Сишка это один сплошной нюанс. Конечно лучше было бы поставить ad9850, но там опора 125мгц которая плывет и гиацинт уже не поставить.... И нет готовых решений по кодам
-
У меня кстати ад9850 есть)) в виде модуля с али.
Вопрос для Владимир_К. Возможно ли ад9850 к этому синтезу присобачить чтобы не париться с коэф-ми для сишки? Вроде Игорь2 говорил что спуры его синтез схавает...
Вопрос для Игорь2 реально ли гиацинт умножить до 125мгц чтобы затактировать ад9850?
-
... И нет готовых решений по кодам.
1. Ничего сложного, 40 бит (с 8 "нулями" в конце) из одного расчета и все.
---
2. Все ето на мой взгляд это не нужно (+ AD9850), сделайте какая-то частота (обязательно OCXO?) в нужном диапазоне и все заработает. Даже с 5 MHz можно попробовать, я попробовал с 10,000 000 MHz TCXO (вне диапазона по документации). А и с возможными внутренними коэффициентами все можно рассчитать "на бумаге" до того, как попробовать "в железе".
-
Это вы про ад9850?
-
певрое: о AD9850/51
второе: о вн. генератор к Si5351
---
A, я понял! (РУ->БГ). Вы хотите заменить Si5351 на AD9851. Код управления оч. прост. И ток над 100 mA/5V только для AD9851 чипа :/.
-
Понял. Главное чтобы погрешности не было.
-
Вопрос для Игорь2 реально ли гиацинт умножить до 125мгц чтобы затактировать ад9850?
Ставите куча катушек, чтобы мусор подавить, и нет проблем.
-
Не выдумайте и не усложняйте . 5351 у меня работает в монстре. При хорошей экранировки ничего не свистит. В пч сишку я точно ставить не буду, потом блох гонять. У меня горячий опыт в трансивере Ильи с этими сишками . Их реально в кожух запаивать надо.
Я уже 3 синта Игоря собрал на сишках!!! Все работает как Часы.
-
Тоже везде в опорах синтеза 5351. Никаких проблем - именно с ними и давал все параметры... dontt44 cr123
Хотя, вопросом насколько точно там синтезируется частота при идеально точном опорнике не занимался. dontt44
Вроде бы, производитель пишет про нулевую погрешность в этом случае, вот только будет ли она такой, при заливке, отличной от того, что производитель рекомендует... lol22
-
Шота я вижу, ребенок еще не родился, а его уже не любят dontt44.
-
Опытом давим lllol фактами lllol
Без обид
-
Да все нормально. Следуем планам
-
Владимир_К реально прикрутить ад9850 к вашему синтезу?
-
Вчера ввел индикацию шага перестройки. В общем, вывод такой - функция совершенно бесполезная. Во-первых индикация, даже если ее сделать 1 сек. мало информативная, через какое-то время, уже и забыл, какой шаг.
Ну, в общем смотрите, как оно будет выглядеть. Пауза сейчас 1 сек. Ввел также переключение делителя. Осталось ввести управление номерами ГУНов и запоминание частоты при смене диапазона, вроде так... Управление ГУНами я бы сделал на регистрах. Сейчас у нас задействовано 16 выводов на 16 диапазонов. И на хрена они, 16? Выкинуть 4 диапазона, 12 оставить (с головой хватит) и на освободившиеся поцепить ГУНы. Освободятся 4 вывода портов.
Решайте...
реально прикрутить ад9850
Да реально, только надо код новый написать для нее, или в интернете можно найти. Но у меня микросхемы нет и проверить мне будет не на чем.
-
Да можно и 12. Я тоже думал что переборщил с диапазонами. Разумное решение. А кстати код для 9850 есть у Веселина veso_74. Там правда в редакторе ардуино иде написано, но думаю для инфо глянуть можно. А модуль у меня есть, могу запаять и проверим. Прошивку сейчас опробую отпишу.
-
Ввел запоминание частоты.
-
Прошивку сейчас опробую отпишу.
Сейчас я выкину 4 диапазона и на регистры посажу переключение ГУНов. Исправьте схему регистров, там где выход регистра Band_13, будет ГУН1, Band_14, будет ГУН2, Band_15, будет ГУН3, Band_16, будет ГУН4,
-
123123 залил программный HEX код. Всё работат. Даа, шаг виден, шаг работает. Частоту запоминает. 1999 но действительно не очень удобно. Лучше конечно светодиодами. Может повесить ещё один регистр последовательно? И туда выводить на светодиоды шаг? dontt44
-
А вот у Веселина нашёл код под AD9850 на два диапазона в редакторе АРДУИНО ИДЕ.
-
Выкинул 4 диапазона, на оставшиеся повесил управление ГУНами. Проверьте пока это, потом будем думать насчет светодиодов и еще одного регистра.
Индикацию шага можно сделать на дешифраторе, каком-нибудь. У нас есть выходы регистра, задействованные 10,11,12 диапазонами. Эти выводы можно кинуть на дешифратор и из трех получить 8 выходов. Один хрен корпус надо добавлять, или регистр или дешифратор.
в редакторе АРДУИНО ИДЕ
Достает меня этот редактор. Ни отладчика, ни хрена. И памяти занимает в три раза больше.
-
Ок. Проверяю. А код чисто для ознакомления
-
123123 вроде работает всё. Спасибо за работу. Очень крутая штукенция получается. 1999 1999 1999
-
Ну а ад9850 попробуете прикрутить к этому синтезу? pl33 123123 lol22
-
ад9850 попробуете прикрутить
Попробую, но чуть попозже, может и завтра. Но тут проблема нарисовалась, пока ее не решу, с временем напряг. Вечером изучаю проблему, днем пытаюсь решить, но пока без результата.
Программирование AD9850, как я мельком глянул, намного проще Si5351A. Но для SI все готово, а с AD надо еще смотреть, хоть оно и просто...
-
Ок. Я пока ее впаяю. Вы только скажите какие порты задействуем под ее управление.
-
Вы только скажите какие порты задействуем
Написал тестовый код управления AD9850.
Подключение:
PC1 - подключаем к 25 выводу микросхемы (Data);
PC2 - подключаем к 7 ноге микросхемы (WCLK);
PB4 - подключаем к 8 выводу микросхемы (FQ_UD;
С опорником 125 мгц, микросхема должна выдать сигнал частотой 10 мгц.
Это тестовая прошивка, никакие функции синтезатора работать не будут, только ДДС и должен моргать светодиод, подключенный на вывод PD4 (Lock).
Файл назван AD9832, не обращайте внимание, он для AD9850.
Если будет работать, прицеплю ее к синтезатору.
-
Паяю ддс.
-
1. Ничего сложного, 40 бит (с 8 "нулями" в конце) из одного расчета и все.
Добрый день!
У меня к Вам пара вопросов. В Вашей прошивке, последнее слово, которое Вы загружаете в AD9850 "0b00000000".
shiftOut(DATA, W_CLK, LSBFIRST, 0b00000000);
В даташите "0b001xxxxx" где d6 это Power-Down. Уточните пож. что туда ставить?
И еще, например частота 500 гц, в двоичном коде это 111110100. Как надо загружать в микросхему, в каком порядке?
Я понял что - сначала младший бит, т.е. 0, потом 0, 1,0 и так далее, или наоборот? LSBFIRST- это значит с младшего бита?
-
Все из pdf-а (9850.jpg). LSB first = "младший значащий бит первым". LSBFIRST, MSBFIRST находятся во встроенной функции shiftOut(dataPin, clockPin, bitOrder, value) в Arduino IDE.
Просто нужно вызвать функцию, она готова.
shiftOut():
https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout\ (https://www.arduino.cc/reference/en/language/functions/advanced-io/shiftout\)
и
http://arduino.ru/Reference/ShiftOut
a если нужно ее сам сделать:
(C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\wiring_shift.c)
void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) {
uint8_t i;
for (i = 0; i < 8; i++) {
if (bitOrder == LSBFIRST) {
digitalWrite(dataPin, val & 1);
val >>= 1;
}
else {
digitalWrite(dataPin, (val & 128) != 0);
val <<= 1;
}
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
---
A ето "младший бит" :).
(lsb.jpg)
-
val >>= 1;
Спасибо. Вот это мне и нужно было, куда двигать?
Так val >>= 1, или наоборот val <<= 1.если нужно ее сам сделать:
Да я так обычно и делаю, только было сомнение, куда двигать.
-
Если используемом IDE или у Вас нет своего, я бы экспортировал множество макросов/функции, уже встроенных в Arduino IDE, в вн. файл, библиотека. Они экономят время для писания кода и строки давно проверены (bitRead, bitSet, lowByte(w) ... max(a, b) ... abs(x), map(...), constrain(amt, low, high)). Часто обращаюсь к Arduino сроки, которые даже за CCS для PIC я недавно переписал, уже строко на полстраницы :). Кто как привык.
-
я бы экспортировал множество макросов/функции, уже встроенных в Arduino IDE,
Я иногда это делаю, но, потом забываю, что у меня есть, а чего нет. Программированием я не часто занимаюсь, больше времени уделяю слесарным работам, да паяю..
-
У меня к Вам пара вопросов. В Вашей прошивке, последнее слово, которое Вы загружаете в AD9850 "0b00000000".
Это регистр фазы который по сути не используем и там же младший бит включение внутреннего умножителя такта. Если ноль то не умножать, если единица включено умножение на шесть для 9851. Зависит какой опорник на плате ддс 30 или 180МГц. Кстати АД9850 с алиэкспресса все работают с умножением на четыре если этот бит установить. А так же без проблем с внешним тактом до 200МГц. Естественно при питании 5 вольт. На 40МГц тактовый генератор умножается на четыре. Расчёт такта ведётся всегда с учётом множителя если он включен. Если генератор 30 то такт 180 и т.д. 9851 и 9850 самые простые в управлении ддс.
-
Это регистр фазы который по сути не используем и там же младший бит включение внутреннего умножителя такта.
Не, меня немного смутил 5 бит последнего байта. Пример на Ардуино, там ноли, а в даташите - 1. Обозначен этот бит как Power Down. И как это понимать, выключение это когда, если 1 или наоборот?. И вообще, что это за отключение. Спящий режим?
-
а в даташите - 1.
Дайте точного цитата из pdf (скрийн екрана), пожалуйста.
---
нашел Figure 13:
W32 = 0, W33 = 0, W34 = 1, W35..39 = x ето режим Serial Load Power-Down Sequence / Последовательность отключения. Точно, "спящий режим".
Нам нужна непрерывная работа AD (без программно выключения), фаза 0, без уножитель, поэтому все биты равны нулю.
Даже пробовал там телеграфная манипуляция (директно на основняя частота), рядом в приемника звучит неплохо.
-
Припаял DDS, залил программный код. Мигает светодио, на выходе DDS ничего нет. dontt44
-
на выходе DDS ничего нет.
Ну вот, чего я и боялся. Если бы у меня была микросхема, мог бы попытать у себя. Если бы у меня не работала, тогда 100% надо ковыряться в программе. А что сейчас думать, не знаю. Хотя, остается небольшая надежда, прогоню в пошаговом режиме, может где "косяк" допустил..
Покажите схему подключения. Обратите внимание, для переключения в последовательный режим записи, надо ногу 2 на землю, ноги 3 и 4 на + питания. Проверьте генерацию опорника.
-
123123 123123 123123
-
Опорник генерит 125мгц. 123123
-
Модуль у меня вот такой. 123123
-
Модуль у меня вот такой.
А кто подскажет.. RESET - надо туда что-то подавать?
Схему, что Вы выложили, там же ни хрена не видно.. Вот сравните с этой схемой.
-
У Веселина он ресет на массе сидит. 123123
Там кстати D7 ещё на ардуину идёт. 123123 123123
-
Тоесть включать как на вашей схеме ддс?
-
Ок. Сейчас заземлю что не заземлил как у вас в схеме
-
Там кстати D7 ещё на ардуину идёт.
Я не знаю, что такое D7. Я выше писал:
PC1 - подключаем к 25 выводу микросхемы (Data);
PC2 - подключаем к 7 ноге микросхемы (WCLK);
PB4 - подключаем к 8 выводу микросхемы (FQ_UD;
Но это выводы не модуля, а микросхемы. Так что сравнивайте со своим модулем. Ну или по схеме, что я выше выложил.
А понял, D7 это седьмой бит, при параллельной загрузке и он же используется как вывод ДАТА, при последовательной загрузке, как у нас. На микросхеме это 25 нога. На модуле, это вроде четвертый вывод?
-
как на вашей схеме ддс
Это не моя схема. Когда-то паял ее, там программа была не моя.
Еще раз, по порядку.
1 вывод модуля - питание:
2 вывод модуля - WCLK:
3 вывод модуля - FQ_UD:
4 вывод модуля - Data:
5 вывод модуля - Земля:
6 вывод модуля - Земля:
10- вывод модуля - Выход сигнала:
-
Ну в схеме что вы выложили как раз и есть модуль 444tom
-
Подключил согласно этой схеме. Нет выхода 56511 dontt44 123123
-
Нет выхода
Не мучайте. Есть косяк в программе.
Пробуйте с этой прошивкой.
-
dontt44 залил. Нет выхода..и светодиод лок горит постоянно. 123123
-
Нет выхода..и светодиод лок горит постоянно.
Блин.. Забыл вернуть задержки. В пошаговом режиме я их убираю, иначе "шагать" будет до второго пришествия... А вернуть взад забыл.
Но это, могло повлиять на светодиод, он теперь горит, на самом деле не постоянно, но с большой частотой, так что создается впечатление, что горит он постоянно. А вот ДДС-ка вроде работать должна бы.
Я сейчас сделал чтобы ДДС-ка загружалась постоянно. Попробуйте увидеть импульсы на выходах управления. Дата - там сигнал не периодический. Clk - периодический с большой частотой. И сигнал FQ_UD - периодический, но с большой скважностью, вряд ли Вы его увидите.
-
Данные идут, вижу пачки на двух выходах и длинный сигнал на РB4
-
Наверное лучше подождём сишку. А то вы своё время тратить будете попусту. Без макетки сложно, будет до второго пришествия тут пробовать.
-
Пример на Ардуино, там ноли, а в даташите - 1. Обозначен этот бит как Power Down
Если единица то выход выключен. С генератором 125 ноли отправить.
Есть там всего два нюанса.
Раз - после включения сперва нужно перевести ддс в режим последовательной загрузки
Clk = 0 ;clk
Fq = 0 ;Fq
RCALL us_1 ;пауза 1us
Clk = 1 ;clk
RCALL us_1
Clk = 0 ;clk
RCALL us_1
Fq = 1 ;Fq
RCALL us_1
Fq = 0 ;Fq
Два
Расчёт константы требуется один раз
Fdd_sclk = CLKIN * 2^32 ;Const 4 байта с плавающей точкой для расчёта где CLKIN тактовая частота генератора умножить на 2 в 32 степени
Расчёт регистров 4 байта
Reg_dds = Chastota * Fdd_sclk ;Reg_dds 4 байта без плавающей точки
Загрузка в регистры 5 байт 4+1
Fq = 0 ;порт в ноль- разрешить загрузку в буфер ддс
передать 4 байта рассчитанного значения Reg_dds где младший бит идет первым а Clk активный уровень высокий.
передать пятый байт ноль если умножение такта не используется или 1 если нужно опору умножать на 6
Fq = 1 ;порт в единицу - защёлкнуть данные.
Проще не бывает и не надо ни каких либ и прочего ардуиновского замороченного кода с кучей строк.
-
Подключил согласно этой схеме. Нет выхода
12 пин случайно не заземлили? В модуле он дублируется с 4 выводом. И ножка ресет 5 вывод должна быть на земле.
-
Раз - после включения сперва нужно перевести ддс в режим последовательной загрузки
Во, вот так постепенно узнаем все тонкости (читать даташит на англицком лень). Спасибо!
Fq, это что такое? То, что в даташите обозвали как FQ_UD?
-
Core, попробуйте. AD9850, 10 000 000 Hz чтобы узнать, работает ли хардуерная часть.
Не пробовал код, такой тип модуля AD9850 у меня нет.
Не гарантирую, что загрузчика не будете удалить :).
880/9 байта
-
и длинный сигнал на РB4
Откуда он там? В программе он не задействован!
Ну да, в программе он, действительно не задействован, а в 260 сообщении, я написал, что на него цепляется;
PB4 - подключаем к 8 выводу микросхемы (FQ_UD); Но, сигнала там не должно быть! Должен быть сигнал на PB2.
А надо на PB2. Могли бы и сами догадаться lol22 lol22.
Так что переставьте.. Но программу по последней рекомендации от zenit я пока не успел доработать..
-
Прошивка с учетом последних рекомендаций.
Пробуйте, если еще не надоело 123123.
-
Пробуйте, если еще не надоело .
AD9832.zip (5.42 КБ - загружено 0 раз.)
Да как бы Вам, Владимир не надоело всё это. lllol Все мои хотелки в жизнь воплощать lol22 Я уже наверное Вас достал. Это всё голодуха, сухари с в водой. lllol lol22 dontt44 nea33 56511 lol22 lllol 444tom 123123
Перекинул я с PB4 на РВ2, загрузил крайнюю версию кода и модуль ДДС начал генерить 10мгц id99 1999 Значит всё работает. Но PB2 занят в схеме. а нём табло висит вроде. 123123 123123 123123
-
Но PB2 занят в схеме. а нём табло висит вроде.
Это все невнимательность. Видать склероз уже начинается cry333. Смотрел на схему, какие порты свободны, решил использовать PB4 и даже написал, что на него цеплять надо. А запрограммировал на PB2. Исправленную тестовую прошивку я Вам сбрасываю. Проверьте, а то чем черт не шутит, может и при замене 4-х цифр ошибусь. Итак, PB2 меняем на PB4.
-
123123 123123 Поменял на РВ4. Работает lol22 1999 10мгц.
-
Ок! Завтра состыкую.
-
Ок. Вот и родится синтез крутой. 123123 кстати 26.000 вы специально размножили в предыдущих кодах? Или это глюки кода?
-
кстати 26.000 вы специально размножили
А что такое 26.000?
-
Начало диапазона.
-
Из-за этой хреновины (16 диапазонов) я полдня потратил на поиски ошибки, которой в общем и не было. Тут такая ситуация возникла:
- в определенном месте программа проверяет номер диапазона и, если он больше 4-х, то программа выдает сигнал на включение делителя (согласно таблице от Игоря). Начинаю тестировать. Светодиод, который я повесил на выход для наглядности, включается, при включении диапазона 20 метров, так как этот диапазон 5-й, в списке. Потом дохожу до диапазона 26.000, светодиод горит, потом на табло появляется 1,8, 3,5 и т.д., а светодиод не гаснет. дохожу до 26.000, появляется 1,8 светодиод гаснет cr123. И вот тут переклинило. Какого хрена? Лишь потом вспомнил, что у нас то 16 диапазонов, 9 нормальных, а дальше опять появляется 1,8 мгц. Но он не 1-й, а 10-й, соответственно диод продолжает гореть как и положено. Поэтому я и внес в программу 9 нормальных диапазонов, а остальные, вплоть до 16-го, повторил 26.000. Потом часть убрал, чтобы освободить выводы регистра. Но все равно, в конце несколько осталось повторяющихся. Так что, то никакой не глюк. И лечится он просто.
В качестве условия, можно было бы поставить частоту. Но она занимает 4 байта, а номер диапазона - всего байт. Так что с ним, оперировать проще. Хотя, разницы особой нет.
-
Понял. Ну а в конце концов дадите исходник и инструкцию где пч поменять и подкорректировать частоты ?
-
Я бы ещё вас хотел очень попросить сделать версию синтеза с ад9850 как основной первый гетеродин. Можно было бы применять его в простых конструкциях. Только опять же показали где в исходнике меня пч и границы диапазонов.
Это вообще шедевр а не синтез получится!
-
версию синтеза с ад9850 как основной первый гетеродин.
AD9850, более менее сносный сигнал выдает до частоты 30 мгц. Для трансивера с гетеродином "всегда сверху", да еще если гетеродин должен выдавать удвоенную частоту, она никак не проходит. Поэтому, надо Si5351A.
Ну и таких синтезаторов, с прямым синтезом, у меня, а тем более в интернете, десятки вариантов. И именно такой я и выложил здесь:
http://analogtrx.com/SMF/index.php?topic=6.585
Начиная с 591 сообщения.
-
Вот как раз на семисегментниках + статическая индикация + 9850 и нет 1999
У меня на 9850 уже второй год аппарат с пч 10,7мгц на 80 и 40 работает. Сигнал нормальный, есть конечного пиликалки (спуры) если антенну вытащить, но в условиях городского шума эфира на полноразмерную антенну их не слышно. У меня в планах сделать на нч бенды с ПЧ 500кгц (монстрик с эмф) аппаратик с вашим синтезом. Так что вот. Было бы неплохо иметь у себя такой синтез. Так что прошу 123123 123123 123123
-
Да, снизу гетеродин ставить не стоит - выигрыш по фазовым шумам, понятное дело, будет, но кучу появившихся прямо в ближней зоне ложных каналов, подавить будет проблематично. dontt44
К примеру, на скрине слева ложные каналы при приёме на 14 МГц, ПЧ=9 МГц и гетеродине сверху, справа - снизу.
Ложный канал приёма на 16 МГц справа подавлен смесителем лишь на 14 дБ.
Стрелкой показан основной канал приёма... no88 lol22
-
Да да 123123 Я тоже сторонник гетеродина сверху. Но допустим при пч 500кгц лучше сделать его снизу, там полосовик будет эффективнее давить зеркалку, ну и на 40м где зеркалка нет вещательных станций. Так что для простого аппарата самое то.
-
У меня в планах сделать с ПЧ 500кгц аппаратик с вашим синтезом.
Делайте, как только появится что-то в железе, через пару дней будет и прошивка. 123123 123123
-
Так железка есть в виде макетки. И АД9850 впаяна и вы запустили кодом на 10мгц. 123123
-
Так я Вам более того скажу - при такой низкой ПЧ, радикального выигрыша гетеродина сверху нет, скорее даже, наоборот - зеркалку легче удавить при гетеродине снизу.
См. ниже картинки - слева - гетеродин выше, справа - ниже.
Два диапазона - 3.5 и 7 МГц. Основной канал приёма обозначен стрелками... 123123 1999
-
И АД9850 впаяна и вы запустили кодом на 10мгц.
Проверяйте. Прошивка к Вашему макету. Cинтезатор прямого синтеза на Ad9850 cо стандартным расположением гетеродина. ПЧ - 9000000.
-
lol22 ок. Ближе к вечеру проверю. Синтез не брал с собой 123123
-
если можно сразу пропишите пч 10,7 чтобы гетеродин был сверху. Я могу и макет к самодельному аппарату подключить, послушать эфир 1999
-
если можно сразу пропишите пч 10,7 чтобы гетеродин был сверху.
Если предыдущая будет нормально работать, тогда пропишу. Если в предыдущей есть ошибки, зачем плодить прошивки с ошибками?
-
Нет конечно. После 18:00 проверю.
-
есть конечного пиликалки (спуры) если антенну вытащить,
Это только те спуры, которые пролезли в тракт ПЧ напрямую. А есть ещё спуры, на которых будет идти преобразование. И наличие которых вы заметите только подав достаточно мощный сигнал на вход трансивера. То есть, если с нормальным ГПД подав на вход какой то сигнал, то вы его услышите только на одной частоте. При наличии спур, кроме основного сигнала, при перестройке вы найдёте с десяток сигналов, у уровнями на 50-60-80 дБ ниже основного тона. И использование ключевых смесителей, усугубляет проблему спуров в разы. Ведь преобразование идёт не только на основной частоте ГПД, но и на 3-5-7 гармониках, и даже на чётных, только там подавление побочных каналов будет повыше. Так что проверка поражёнок при отключенной антенне, это способ обмана. В данном случае, похоже что самого себя.
-
Залил код. Генерит на нч гетеродин вверх, на вч вниз, все как полагается. Но не работает валкодер. 123123
-
Так что проверка поражёнок при отключенной антенне, это способ обмана.
Да, это т. н. свистелки, а название "ложные каналы приёма" говорит само за себя - помимо основного канала, приёмник принимает и кучу других.
У меня под смесители на FST аналогичные по параметрам Скидану, написана матмодель (вон, чуть выше скрины как для гетеродина сверху, так и снизу), которая с довольно высокой точностью ни только частоты вычисляет, но и уровни подавления этих каналов смесителем. 1999
Написано, повторю, под Скидана, но и с двумя трансами вполне себе всё повторяется. lllol
-
которая с довольно высокой точностью ни только частоты вычисляет, но и уровни подавления этих каналов смесителем.
Это только для основного тона. Ещё бы найти программку которая и наличие спур учитывало, и их уровень. А это похоже, только на реальном железе возможно измерить.
-
Ещё бы найти программку которая и наличие спур учитывало, и их уровень.
Так у меня же и считает уровень ложных каналов приёма прямо со входа смесителя. Модель под Скидана, но и под два транса, практически, то же самое и видел. Если откинуть искажения входного транса, о которых написал выше.
А свистульки я не считаю - при нормальном монтаже их просто не будет. dontt44
Под иные смесители написаны другие пресеты, к примеру, есть под ADE-1H, там всё по-другому, есть под один ключ, там тоже своё, так что, универсальную программу Вам никто не напишет... lol22
-
Тема не о том 123123
-
1yep dontt44 rrr7777
-
Но не работает валкодер.
Какие же Вы капризные, все что-то не работает 123123
А ежели так:
-
Работает валкодер, но валкодер не реагирует на кнопку лок. И ПЧ 10,7 пропишите. 123123
-
Работает валкодер, но валкодер не реагирует на кнопку лок.
Конечно не реагирует, ибо я эту функцию убрал.. Просматривал программу, смотрю строка какая-то. Думаю, на хрена она? Убрал. Оказывается это была блокировка валкодера. Я не могу в голове держать кучу программ, к сожалению старый я уже 123123.
-
Работает. 123123 Только ПЧ 9мгц.
-
Только ПЧ 9мгц.
Держите 10700. Гетеродин всегда сверху.
-
Она прежне 9мгц dontt44
-
Не понял... Еще раз сбрасываю. Такая ситуация была как-то на сайте CQHam. У sgk был какой-то глюк с XLoader. Попробуйте перезапустить его, потом снова укажите на нужный файл.
-
1999 работает.
-
Держите исходник. Можете править его по-своему усмотрению. Я к нему больше не возвращаюсь. Разве что, по большой нужде 123123 123123
Только сохраните мой вариант, для потомков 123123 123123, или если надо будет откатиться назад.
-
Спасибо огромное! 123123
-
В папке проекта, что я Вам сбросил, есть Ваша схема. Но она не исправлена.
Надо особенно с регистрами уточнить, выбор ГУНов и пр. Внесите пожалуйста исправления, чтобы схема соответствовала функциям заложенным в программе. Надо привести в порядок материалы... Время пройдет, забудется, что к чему. Придется потом искать, почему не работает.
-
Вот тут, как понимаю, можно задавать состояния регистров? 123123
-
можно задавать состояния регистров?
Да. Только делать это надо открыв проект. Запустите AVR Studio 4.19. В меню нажмите Progekt - Open Progekt. Укажите путь к папке. Жмите на файл с расширением .aps. Он со значком божьей коровки lol22. Откроется проект. Слева в окошке увидите перечень файлов проекта - Source Files, Header Files и пр. Нажмите на крестик, откроются файлы соответствующие. Нажмите на имя файла, он откроется в главном окне.
После внесения изменений надо проект компилировать. В меню Build - Clean - Rebuild All. После компилирования внизу появится сообщение, если с красной точкой Error, значит что-то сделали не так. Также могут появиться предупреждения, это не ошибка, но желательно без них.
После компилирования в папке проекта Default найдете обновленный НЕХ-файл. Главный файл проекта main.c. В нем находится главная функция int main (void).
Таблица, которую Вы показали, содержит содержание регистров. При работе программы в регистры выводится строка соответствующая диапазону (во, пока писал, нашел ошибку) в таблице. Попробуйте сами ее увидеть lol22. Подскажу немного. Внизу, последние 4 строчки - там кроме включения соответствующего ДПФ, также включаются ГУНы. А в предыдущих строчках их нет. Цифра, стоящая справа (то есть младший бит байта) идет первой, то есть она загоняется в конец регистра.
После компиляции нажмите Save Progect. При запуске Studio в следующий раз проект откроется. Но для этого надо зайти в настройки и указать там, чтобы при запуске студии открывался последний проект. В общем, думаю, разберетесь.
-
Спасибо за раскрытый до мелочей ответ. 1999 123123 id99
-
раскрытый до мелочей
Это можно подробно тут прочитать: http://easyelectronics.ru/avr-uchebnyj-kurs-programmirovanie-na-si-chast-1.html
Судя по картинке, что Вы выложили (подсвеченный шрифт) Вы проект уже и сами открыли и мои пространные опусы, лишние 123123.
-
Судя по картинке, что Вы выложили (подсвеченный шрифт) Вы проект уже и сами открыли.
Да, это через редактор. Попробовал скомпилировать, всё получилось.
Ещё такой вопрос, если у меня будет задача уменьшать кол-во диапазонов, то что редактировать? Я как понимаю там удаление лишних столбцов в начале, где прописываются границы и стартовые частоты и удаление строг регистров не обойтись.
-
/************ Частотный план трансивера *******************/
unsigned long freq_max[13]={2000000, 3800000, 7200000, 10150000, 14350000, 18168000, 21450000, 24990000, 30000000, 30000000, 30000000, 30000000};
unsigned long freq_min[13]={1810000, 3500000, 7000000, 10100000, 14000000, 18068000, 21000000, 24890000, 26000000, 26000000, 26000000, 26000000};
unsigned long frequency_1[13]={1810000, 3500000, 7000000, 10100000, 14000000, 18068000, 21000000, 24890000, 26000000, 26000000, 26000000, 26000000};
Найдите эту таблицу. Вот я подсветил числа, относящиеся в диапазону 0. Удалив эти цифры, Вы исключите этот диапазон. Но, теперь нулевой диапазон уже будет не 160 метров, а 80 метров.
Число в квадратных скобках должно быть на 1 больше, чем диапазонов в таблице.
В программе надо найти еще места, где надо внести изменения. Во-первых убрать строки из таблицы, которую Вы выложили.
Во-вторых, вот здесь:
if (l==7)
{
_band=_band+1;
if (_band>11)
_band=0;
}
if (l==6)
{
_band=_band-1;
if (_band==0xFFFF)
_band=11;
При каждом нажатии кнопки переключения диапазона, номер диапазона увеличивается на 1. Тут есть условие if (_band>11) _band=0. То есть, при достижении максимального номера, идет перескок в начало.
А ниже строки, если достигли нулевого диапазона, переходим на последний.
Дальше, вот тут:
//if (_band<4) y_1=y_1+pch;
// else y_1 = y_1-pch;
y_1 = y_1+pch;
В зависимости от номера диапазона, ПЧ прибавляется или наоборот вычитается. Здесь условие закомментировано двумя //, то есть эти строки компилятор игнорирует (чаще делайте так, не убирайте строку, а просто закомментируйте ее, потом легче вернуть), и здесь ПЧ всегда прибавляется (последняя строка).
Обращайте внимание на всякие скобки, запятые и пр. Тут их никак нельзя игнорировать. Каждая запятая или скобка несет определенный смысл.
-
Ок. Понял. Буду вникать.
-
Подцепил макет синтеза с прошивкой от Владимир_К адаптированную под AD9850 к приемнику.
https://youtu.be/3Yz4_tmKHJA
-
Чистый эфир... cr123
-
Прикольно. А без антенны как? Свистулек много ?
-
Свистулек много да.
-
Свистулек много
Собирайте ГУНы. Программу доработаю. Также в планах под индикатор на МАХ7221. И варианты на AD9850 и Si5351A.
-
Комплектующие едут 123123
-
На диапазонах, где частота меньше 10 мгц, слева нуль незначащий. Его можно убрать.
В программе найдите строки:
send_l(led);
led=(Numbers[(int)N1]);
Замените так:
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b00000000;
-
123123 ок
-
к приемнику.
А какой у Вас приемник, эфир 80ка очень чистый 1999 и какие условия приема? dontt44
-
Четверть монстр с ленинградским фильтром.
-
Четверть монстр
- схема на полевых или биполярных?
-
На кт610
-
Я в Сочи вообще эфир потерял , все станции ка dx звучат.
3000 м горы Кавказа закрыли Россию
-
горы Кавказа закрыли Россию
У меня бывает соседская зарядка закрывает эфир))
-
Посмотрел кино от Коре, а почему афтор не гасит нули МГц?
Обычно это считалось должным сервисом синтезаторов, после всяких старых ЦШ без гашения...
-
А мне так нравится когда все индикаторы горят.
-
Я в Сочи вообще эфир потерял , все станции ка dx звучат.
Летом семёрка рулит по ночам на Москву cr123.
Я-то знаю... 1yep
-
А мне так нравится когда все индикаторы горят.
Аналогично! 123123
-
а почему афтор не гасит нули МГц?
Афтор вот так пишет:
На диапазонах, где частота меньше 10 мгц, слева нуль незначащий. Его можно убрать.
В программе найдите строки:
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b00000000;
Припозднились Вы что-то, читайте 328 сообщение.
-
Пришёл модуль на SI5351 и квадратный опорный генератор на 50МГц 123123 lol22 1999
-
и квадратный опорный генератор на 50МГц
И какие у него фазовые шумы? cr123
-
Этот опорник чисто чтобы отладить опорник. Вместо него будет гиацинт с умножителем по вашим схемам.
-
1yep
-
Владимир_К на форум не заходил уже почти месяц dontt44
-
Да был меньше часа назад... cr123
-
был меньше часа назад...
Вы же так зашифровались, что с другого компа так и не смог зайти, а был я не дома 123123. Набираю логин, пароль, хренушки.. Выдает - нет такого члена cr123. 16 вернулся. Да и сейчас, с телефона не могу. Ну телефон, то хрен с ним..
-
Не знаю, что там за шифровка, у меня десяток компов с любого вхожу без проблем, как и с любого провайдера... dontt44
-
Буквально пару часов назад форум упал. У меня тоже не заходило.
Владимир_К я почитал письмо. К понедельнику подготовлю все и начнём.
-
Буквально пару часов назад форум упал.
Он раньше упал. Исправлено... pl33
-
у меня десяток компов с любого вхожу без проблем
На одну буковку ошибся (причем маленькую), при вводе пароля, и уже не пускаете. Капризные шото стали cry333
-
Капризные шото стали
dontt44 cr123
-
при вводе пароля
Ну вот... А я свой не помню уже.
Слетит (как личные кабинеты регулярно в налоговой и прочих госуслугах) и усё.
-
Слетит (как личные кабинеты регулярно в налоговой и прочих госуслугах) и усё.
Нельзя так к паролям относиться. cr123
К примеру, у меня есть ZIP архив, куда все они собраны, который, в свою очередь, заперт на длиннющий пароль, который не забудется. И ничего никогда не теряется.
Файл хранится на рабочей машине, не связанной с Интернетом. lol22
Все документы задублированы не менее чем трёхкратно.
Так что я с форума не потеряюсь. 1999 123123
-
длиннющий пароль, который не забудется.
В сантиметрах? lllol
-
48 сантиметров высота пароля
-
В сантиметрах?
Берите больше... cr123
-
А я свой не помню уже
-пишите везде в пароле имя и день рождения тещи 33wr lllol lllol lllol,гарантирую , будите помнить всегда.. 1yep 44443
-
Шо та заглохла тема. Чтобы расшевелить, прошивка для синтезатора Core на Si5351a. Это пока прямой синтез. Не проверено, ибо не на чем проверить.
На выходах регистров:
- первые 12 выходов - управление переключением ДПФ и ФНЧ;
- последние 4 выхода - управление ГУНами. Эта функция уже работает, но это на потом, когда эти самые ГУНы будут присутствовать. Такая же ситуация и с управлением делителем.
Все остальное, вроде соответствует пожеланиям, высказанным в этой теме. Если что-то не упустил. Частоты выдаваемые на выходе Si5351A соответствуют прямому синтезу.
-
Владимир, разгребу текущие задачи, вернусь к этому проекту обязательно.
-
Появился некоторый интерес к синтезатору, поэтому выкладываю исходник программы и схему. Схему надо рассматривать творчески. Она делалась для себя и очень давно, поэтому неточностей там может быть достаточно. Схема самого трансивера вообще полностью переделана и на нее не надо обращать внимания. Все в одной папке и мне не хотелось что-то из нее выбрасывать и плодить еще папки. Тем более, что все это на CD.
Кратко об особенностях синтезатора:
- синтезатор прямого синтеза на Si5351A;
- индикатор частоты светодиодный со статической индикацией, схема индикатора от Тарасова UT2FW;
- SW-метр в виде линейки светодиодов (8 шт);
- Переключатель диапазонов галетный, принцип примерно такой-же как у Тарасова, но выполнен на регистре.
- Кнопки нефиксируемые, поэтому для индикации, какая кнопка была нажата, возле каждой кнопки расположен светодиод, индицирующий что функция включена. повторное нажатие выключает функцию;
Файл main.zip - НЕХ-файл прошивки. Проект на Си, среда AVR Studio 4.19.
-
Небольшое дополнение. Программа не будет работать без подключения Si5351A, так как по шине I2C направляется запрос к Сишке. Если ее нет, нет и ответа от микросхемы. Для тестирования без Si5351A в программе в функции управления сишкой, надо вставить возврат из функции (return:), тогда после перехода в функцию, будет осуществлен возврат в основное тело программы.
В файле Si5351A.c изменить строки, вот так:
void si5351aSetFrequency(unsigned long z) // Функция управления частотой frequensy -параметр переданный в вызове функции из main
{
return;
uint32_t pllFreq; // Определение переменных: pllFreq, XTALFreq, l, f, mult, num, denom, divider
uint32_t xtalFreq = XTAL_FREQ;
uint32_t l;
float f;
uint8_t mult;
uint32_t num;
uint32_t denom;
uint32_t divider;
if (z<11000000)
-
Появился некоторый интерес к синтезатору
Спасибо,что оживили тему! 123123
-
Дальше, вот тут:
//if (_band<4) y_1=y_1+pch;
// else y_1 = y_1-pch;
y_1 = y_1+pch;
В зависимости от номера диапазона, ПЧ прибавляется или наоборот вычитается.
Владимир,в выложенном Вами исходнике не нашел этих строк,но там есть следующее:
/******************** Вычисление частоты **************/
void sub_freg()
{
frequency =frequency_t;
if (rit_1==0)
{
//frequency =frequency_t;
frequency=frequency+chagi*bufEnc*abs(bufEnc);
if (frequency > (freq_max[(int)_band])) frequency=(freq_min[(int)_band]);
if (frequency < (freq_min[(int)_band])) frequency=(freq_max[(int)_band]);
frequency_t=frequency;
}
else
{
rit=rit+chagi*bufEnc;
frequency=frequency+rit;
}
}
Я правильно понимаю,что править нужно здесь,чтоб частота на выходе SI5351 была Fприема+Fпч?
-
Я правильно понимаю,что править нужно здесь,чтоб частота на выходе SI5351 была Fприема+Fпч?
Нет, не здесь. Что-то я не нахожу строк, которые Вы здесь выложили. У Вас, подозреваю, не тот исходник. Вот те строки, которые в Вашем сообщении выделены как цитата, откуда они? Их нет в исходнике, который я выложил в 361 сообщении. Разархивируйте исходник, откройте AVR Studio 4.19. Зайдите в меню, закройте проект, который сейчас открыт - Project - Close Progect. Затем откройте тот, что сбросил в 361. В проекте откройте файл si5351a.c.
В функции
void si5351aSetFrequency(unsigned long z)
найдите строки:
if (z<11000000)
z=z+pch;
else z=z-pch;
z=z;
Вот здесь условие, если z<11000000 (if (z<11000000)), то есть переданный в функцию аргумент (frequency), в самой функции ему присвоено обозначение z, проверяется его значение и если оно меньше 11000000, то частота ПЧ прибавляется, иначе (else) вычитается. Для того, чтобы частота всегда прибавлялась, сделайте вот так в этих строках:
//if (z<11000000)
z=z+pch;
//else z=z-pch;
z=z;
То есть, перед строками, которые надо убрать, ставится двойное //. Это называется "закомментировать" строку. Компилятор эти строки проигнорирует. Таким образом останется строка
z=z+pch; то есть, всегда ПЧ будет прибавлятся к z, а z, как я выше писал, есть не что иное как frequency, аргумент, переданный в функцию при ее вызове.
Ну и я бы не рекомендовал сейчас что-то править. Соберите схему, хотя бы макет, запустите в таком виде. Затем можно вносить правку и сразу проверять в "железе". Вообще желательно, делать правку хотя бы одной строки, компилировать (при компиляции, если будут ошибки в синтаксисе, компилятор об этом сообщит). Затем прошиваете и проверяете работу. Если что-то пойдет не так, сразу можно вернуться. Если сделать сразу много правок, потом трудно разобраться, где допущена ошибка. Синтаксис компилятор проверит, но он не проверит, если ошибка будет в алгоритме программы.
Кроме того, этот синтезатор выдает частоты, соответствующие частотам гетеродина, а у Вас по схеме Игоря, там есть и деление и пр. Поэтому пока ничего не правьте, запускайте пока так, все равно потом много чего надо изменять.
И еще, в 361 сообщении также выложен НЕХ-файл (main.zip) прошивки. Его Вы сразу можете программатором зашить в контроллер и проверить работоспособнось. Предварительно извлеките из архива.
Если Вы делаете правку, потом компилируете, компилятор создает новый НЕХ-файл. Он находится в папке default проекта - main.hex.
Еще заметил - строка z=z: совершенно лишняя. Просто удалите ее. Не понял зачем я ее воткнул..
-
Понял,благодарю!Если что-то меняю,делаю для себя пометки о том,когда и что поменял и сохраняю в разные папки,чтоб не запутаться.Сделаю как Вы сказали 123123 1yep
-
Если что-то меняю,делаю для себя пометки о том,когда и что поменял
Эти пометки Вы можете делать в тексте программы, для этого, в строке программного кода, ставите две косые черты // и дальше пишете свой комментарий, компилятор на него внимание не обращает. Но, комментарий должен быть в одной строке, если он переносится на другую строку, он также должен начинаться с двух косых черт.
Также все что находится между /* какой-то текст */ косая черта и знак умножения (звездочка) и заканчивается */ будет проигнорировано. Кроме того, редактор текста, все что игнорируется компилятором, выделяет зеленым цветом.
Строки текста программы желательно не удалять, а выделять знаком комментарий, т.е. двумя чертами, тогда легко будет восстановить, убрав комментарий.
Смотрите на мой текст программы, как оно все выглядит. Если что не понятно, спрашивайте. По образцу легче понять логику...
-
Эти пометки Вы можете делать в тексте программы, для этого, в строке программного кода, ставите две косые черты // и дальше пишете свой комментарий, компилятор на него внимание не обращает. Но, комментарий должен быть в одной строке, если он переносится на другую строку, он также должен начинаться с двух косых черт.
Также все что находится между /* какой-то текст */ косая черта и знак умножения (звездочка) и заканчивается */ будет проигнорировано. Кроме того, редактор текста, все что игнорируется компилятором, выделяет зеленым цветом.
Строки текста программы желательно не удалять, а выделять знаком комментарий, т.е. двумя чертами, тогда легко будет восстановить, убрав комментарий.
Да-да,все так и делаю! 123123 1yep
-
Владимир,а такой вариант управления индикаторами не рассматривали?
-
Нет. Но это не сложно, практически то же самое. Если спаяете такой индикатор, программу подкорректирую. Просто у меня была пара готовых от Тарасова, их и применял. Надо бы попробовать индикатор на базе MAX7921, но никак руки не доходят. Его надо проверить на наличие помех. Он поменьше раэмером, и плата проще. То есть, я бы с ним пробовал.
-
Владимир,добрый день!Собрал индикатор и почти собрал макетку управления.Появились вопросы по кнопкам.Нашел RIT дважды.Могли бы Вы написать инструкцию по назначению кнопок?Может быть какие-то из них имеют двойной функционал или функции,не подписанные на схеме? 123123
-
И еще вопрос.Нужно ли где-то в исходниках прописывать частоту опоры SI5351? 123123
-
Появились вопросы по кнопкам.Нашел RIT дважды.Могли бы Вы написать инструкцию по назначению кнопок?
Добрый день! Там все просто. Каждая кнопка выполняет только одну функцию. Кнопки подключены к делителю, таким образом, нажатие кнопки выдает определенное напряжение, которое подается на вход аналого-цифрового преобразователя процессора. Через определенные промежутки времени (уже не помню, через сколько точно, примерно 4-5 миллисекунд) процессор проверяет, нажата ли какая-нибудь кнопка. Если ни одна кнопка не нажата, напряжение на входе ADC процессора равно напряжению питания, т.е. около 5 вольт. Тут одно надо понимать, ADC преобразовывает напряжение на входе в цифру. Напряжению 5 вольт соответствует 1024.
Проверка нажатия вот строки (файл Radio_76.c)
if (AdcBuf>950) // Кнопка не нажата - выходим
{
n=1;
}
}
т.е. если после преобразования переменная AdcBuf меньше 950 (950 взято для запаса, вдруг напряжение по какой-то причине просядет и будет не 1024, а меньше), то программа начнет отрабатывать алгоритм нажатия кнопки и, какая именно нажата. Если не нажата, программа возвращается в основной цикл.
Вот строки, где определяется какая кнопка нажата:
if (Adc_1 < 250) l=0; //AGC, т.е. если Adc меньше 250, то l=0 и т.д.
else if (Adc_1 < 500) l=1; //RIT
else if (Adc_1 < 800) l=2; //Att
else l=3;
Таким образом, в программе, фактически задействованы только три кнопки - AGC (кнопка переключения АРУ - ручная регулировка или авт.), RIT- кнопка включения расстройки. При этом частота приема будет указана на экране, частота передачи будет той, которая была до нажатия кнопки RIT. И последняя кнопка - кнопка включения аттенюатора.
Все эти кнопки без фиксации. При нажатии кнопки функция включается, при повторном - отключается.
Напряжения, при котором включается та или иная фуннкция (но переведенные в цифру) должны соответствовать напряжениям, которые выдает Ваш делитель. То есть, тут надо учитывать точность резисторов. Ну например, при нажатии какой либо кнопки у Вас напряжение на входе ADC равно 2,5 вольта, это 1024*2,5/5,0, т.е. 512. Условие пишем так:
if (Adc_1 < 530) l=0; //AGC
почему именно 530, а не 512. Это вроде запаса, о котором я выше упомянул. Количество кнопок можно добавить, наример в одном варианте их было 12 штук. Но там надо тщательнее измерять. Обычно напряжение выбираются из ряда U1=0,5 вольта, U2=0,5*1,5, U3=0,5*1,5^2 и т.д. Т.е геометрическая прогрессия, где 1,5 коэффициент, который надо выбрать таким образом, чтобы напряжение от первой кнопки было 0,5 вольта, от последней - 4,0 примерно. Т.е. в зависимости от количества, больше кнопок - меньше коэффициент. Можно и проще, каждая кнопка дает напряжение, например на 0,5 вольта больше предыдущей.
На схеме нарисованы 7 кнопок, в программе задействовано кажется 6 (это я имею ввиду собранный и работающий вариант трансивера. Программу мог перепутать. Пока не будем искать соответствие, оно не важно, уточним потом.
Нужно ли где-то в исходниках прописывать частоту опоры SI5351?
Да, конечно. Она прописана в файле Radio_76.c, вот строка:
#define xtal 26691697 // Частота кварца платы приемника
При вызове функции, которая управляет сишкой, этот параметр передается, вот так:
si5351aSetFrequency(frequency+pch_1, xtal);
где указана рабочая частота - frequency, к ней прибавляется частота ПЧ - pch_1 и передается частота кварца - xtal. Частоту кварца, в принципе, можно указать где угодно. Компилятор найдет.. Но все же, надо придерживаться какого -то порядка. Если, генерируемая частота будет отличаться от нужной, значит кварц генерит другую частоту и цифру в программе надо скорректировать. После прогрева, измеряете. Например если частота, которую выдает сишка, больше на 10 процентов, чем нужно, значит кварц выдает другую частоту, чем прописано в программе и, вот эту частоту теперь и надо записать в программе, т.е. увеличить именно на 10 процентов.
Я примеры взял из первой попавшейся программы, может у Вас другой исходник (уже не помню какой). Короче поищите в своем исходнике, потом, ежели что, уточним.
-
Да, еще. Выше в этой теме, есть диагностическая программа для проверки индикатора. Коль Вы его собрали, можете проверить работу..
-
Я примеры взял из первой попавшейся программы, может у Вас другой исходник (уже не помню какой).
Да, все же не тот исходник я открыл. Поэтому у Вас будет файл не Radio_76.c, а main.c и частота кварца прописана в файле Si5351A.h:
#define XTAL_FREQ 32004212 // Crystal frequency
Давно это уже было, понемногу забывается. Да и сейчас в основном использую STM-32, а не Atmega328. Пока они дешевле...
-
частота кварца прописана в файле Si5351A.h
Да,нашел.Благодарю! 123123
-
Здравствуйте,Владимир.Посмотрите пожалуйста,верно понял распиновку с контроллера на индикатор?Смутила надпись SK на разъеме контроллера.И правильно ли я понимаю,что тестовая прошивка может работать с контроллером и индикатором без клавиатуры и прочего обвеса?
-
.Посмотрите пожалуйста,верно понял распиновку с контроллера на индикатор?Смутила надпись SK на разъеме контроллера
Добрый день! Схема индикатора от А.Тарасова UT2FW. Такой индикатор был применен в одном из его трансиверов. Поэтому обозначение другое. То есть SK на моей схеме это Clk у Тарасова. Тестовая прошивка будет работать без всех примочек, только проц. и индикатор. Единственное на что надо обратить внимание, так это на инвертор DD15C. В начале темы я об этом писал, почитайте там. Я с телефона пишу, неудобно, и не помню, вроде инвертор не нужен. Но я уточнить не могу, это надо открыть исходник тестовой программы и там посмотреть полярность сигнала Strobe на выводе порта PB1.
Кроме того, это зависит от того какие матрицы светодиодные применены. На схеме они с общим катодом, можно применить и с общим анодом при соответствующей коммутации питания, также надо проинвертировать все биты знакогенератора.
Если индикаторы у Вас с общим катодом, то надо только определиться с необходимостью инвертора.
-
На схеме они с общим катодом, можно применить и с общим анодом при соответствующей коммутации питания, также надо проинвертировать все биты знакогенератора.
Добрый день,Владиимр!На мою беду китайцы прислали индикаторы с общим анодом nea33.Долго искал косяки,пока коллега,а потом и даташит,не ткнули носом.Перекинул плюс питания на эмиттер транзистора,соответственно сменив транзистор с npn на pnp.Дисплей ожил,тестовая прошивка замерцала индикаторами.Только цифр нет,почти все разряды залиты сплошняком,включая точки...Можно как-то исправить это дело в прошивке,не меняя разводки платы индикации?
-
Инвертор выкиньте со схемы. Владимир про это говорил.
-
Только цифр нет,почти все разряды залиты сплошняком,включая точки...
Сначала попробуйте выбросить инвертор, как выше коллега советовал. Если в плате нет ошибок, то цифры должны высвечиваться, но инверсно. Если же засвечиваются все сегменты, то тогда где-то косяк.
Тестовая прошивка работает так - на индикаторе все нули, затем все единицы, меняется примерно через полсекунды и т.д. до девяток, затем снова.. У Вас, когда должны высвечиваться единицы, будут светиться все сегменты, кроме сегментов b и с. Если это так, то плата у Вас работает правильно, только надо в знакогенераторе все единицы заменить нулями и наоборот. Это я сделаю завтра.
Также попробуйте подпаять резистор примерно 1 ком между эмиттером и базой транзистора.
-
Сначала попробуйте выбросить инвертор, как выше коллега советовал.
Нет, в Вашем случае инвертор нужен. В программе для включения индикатора, на выход порта PB1 выдается единица, которая открывает транзистор (в этом случае инвертор не нужен), у Вас для включения индикации на базу надо подавать ноль. Поэтому инвертор оставьте. Если его у Вас изначально нет, тогда и не надо, я просто в программе поменяю сигнал Strobe на инверсный.
-
Владимир,еще такой момент.Вы ранее писали,что заливаете прошивку через программу Xloader.В моем случае чистый контроллер atmega328 с кварцем 16МГц, без загрузчика.Заливаю через avrdude.Без инвертора индикаторы не горят.UPD.Залил тестовую прошивку с первой страницы,с ней наоборот,без инвертора светит,с ним нет.
-
Владимир,еще такой момент.Вы ранее писали,что заливаете прошивку через программу Xloader.
С помощью его я заливаю прошивку в Ардуино. Т.е. если есть файл .hex сгенерированный какой-либо программой (не Arduino IDE) и его надо залить в Ардуино, т.е. плату на Atmega в которой есть загрузчик. Если в "голую" Atmega, то или avrdude или Sinaprog. Обычно ейною, больше к ней привык.
Теперь, что касается тестовой программы.
Внизу исходник тестовой программы. Это та, которую сделал для проверки индикатора для коллеги с ником Core. У него индикаторы с общим катодом. Инвертор не нужен.
Чтобы адаптировать программу для индикаторов с общим анодом надо сделать следующее. Программой AvrStudio 4.19 (насколько я понял она у Вас установлена) открываете проект, предварительно открыв архив. Открываете файл ldc.h, находите в нем строку
char Numbers[10] = {0x88,0xeb,0xc4,0xc1,0xa3,0x91,0x90,0xcb,0x80,0x81};
Это знакогенератор. То что в фигурных скобках это указание, какие сегменты надо включить чтобы зажечь какую либо цифру. Например на первом месте стоит 0х88, "0х" указывает, что цифра шестнадцатиричная. В двоичном коде это 10001000. Вот для Вашего индикатора все нули надо поменять на единицы и наоборот. Т.е. должно быть 01110111 или, в шестнадцатиричном это будет 0х77. Вторая цифра 0хeb. Это 11101011. Меняем цифры. 00010100 Или, в шестнадцатиричном это будет 0х14. И так надо изменить все цифры. После преобразований строки будет выглядеть так. Т.е. исходную строку "комментируете" двумя косыми, а ниже вставляете исправленную.
//char Numbers[10] = {0x88,0xeb,0xc4,0xc1,0xa3,0x91,0x90,0xcb,0x80,0x81};
char Numbers[10] = {0x77,0x14,0x3b,0x38,0x5c,0x6e,0x6f,0x34,0x7f,0x7e};
Далее. В этом же файле находите строки:
PORTB &=~(_BV(PB1)); // эта команда выдает на вывод порта PB1 нуль.
PORTB |=_BV(PB1); // а эта - единицу.
Если у Вас индикатор без инвертора, то строки надо поменять местами. Если инвертор есть, ничего делать не надо.
После всех манипуляций компилируете проект. НЕХ-файл (main.hex) находится в папке default.
Если это сделать сложно, тогда я исправлю проект, скомпилирую и НЕХ-файл сброшу, только уточните, есть ли у Вас инвертор?
-
сли это сделать сложно, тогда я исправлю проект, скомпилирую и НЕХ-файл сброшу, только уточните, есть ли у Вас инвертор?
Не сложно поправить и скомпилировать,Владимир.Инвертор имеется.Благо,пока все в относительно *черновом* варианте.Да,самое главное забыл - не уточнил у Вас ,какую печатку из архива выше использовать для индикатора 56511 Сейчас ловлю блох в разводке,ищу ошибки на предмет не правильной разводки и т.п.
-
какую печатку из архива выше использовать для индикатора
В архиве файл печатки. Посмотрите, может возможно упростить. Делал давно. Металлизации отверстий нет, поэтому при распайке придется некоторые пятачки(у меня это третий2 и восьмой выводы индикатора), которые находятся на разных сторонах платы, соединить отрезками проволоки, примерно 0,25 мм диаметром. Это для распайки индикатора. Так как при установке индикатора на плату, некоторые пятачки находятся под индикатором и к ним доступа нет. Поэтому я делал так - в отверстие пятачка, который окажется под индикатором, вставлял проволочку и припаивал ее к пятачку, но так, чтобы отверстие было открытым. Затем вставляется индикатор и его выводы паяются к пятачкам, вместе с проволочками. Короче, тут творчески подходите. К тому же, возможно и распиновка Ваших индикаторов другая (хотя, скорее она стандартная). Некоторые выводы микросхем также паяются с обоих сторон. Но там доступ есть, поэтому проще. Индикаторы у меня вроде 0,36 дюйма.
Да, еще. Индикаторы и микросхемы распаиваются на пртивоположных сторонах платы.
Видео проверки с тестовой прошивкой здесь:
https://www.youtube.com/watch?v=JqKkpXOt4MY
-
Как-то сразу не вспомнил.. В общем, ситуация такая - этот индикатор имеет некоторый "косяк". И заключается этот косяк в том, что здесь отсутствуют токоограничительные резисторы. Индикаторы, изготовленные по этой схеме применялись во многих конструкциях Тарасова, я их применял неоднократно и, никаких проблем не видел. Но, везде индикаторы были с общим катодом. Микросхема 4015 для зажигания сегмента выдает на выход ток. И он, в этой микросхеме и подобных, видимо как-то ограничен, скорее всего исходя из способа управления ключом. Тут работает верхний транезистор. Он стоком подключен к источнику питания, напряжение на затворе транзистора, когда он открыт, равно напряжению источника, даже, скорее всего, меньше. Так как светодиод подключен к истоку ключа, напряжение на истоке повышается, соответственно разность напряжения затвор-исток уменьшается.
В Вашем случае, при зажигании сегмента, ток от источника через светодиод будет втекать в микросхему через нижний ключ. И вот тут может быть неприятность. Поэтому, я бы сначала попробовал с одним светодиодом. Возьмите любую МОП- микросхему и подключите к ней светодиод в двух режимах, когда м/с выдает единицу и светодиод анодом подключен к выходу микросхемы и, когда на выходе ноль, а светодиод анодом к источнику питания, а катодом к выходу. Вроде когда-то такой эксперимент я делал, но уже не помню. Что-то меня ситуация со светодиодными индикаторами с общим анодом, малость напрягает... dontt44
А паять еще и десятки резисторов, как-то не вдохновляет. Хотя место для них вполне можно найти.
-
Владимир,сильно благодарен за информацию! 123123 Буду копать дальше,глядишь дожму проект.
-
Почему не применить такой дисплей?
Смотри, что есть на AliExpress! 7-сегментный светодиодный индикатор для Arduino DIY за 121 ₽ - уже со скидкой -31%
https://sl.aliexpress.ru/p?key=bIxYGUO
Избавит от возни с кучей регистров.
-
Избавит от возни с кучей регистров.
Он с динамической индикацией, много помех вырабатывает.
-
Это все идет из ссср когда индикаторы потребляли большой ток. Эти индикаторы при правильном питании не шумят.
-
Если у кого есть желание попробовать, могу в рассматриваемом здесь синтезаторе заменить индикатор на китайский на микросхеме MAX7221 (МАХ7219). Создает ли он помехи, не знаю, не проверял. Индикатор намного проще, меньше, не надо заморачиваться с пайкой нескольких микросхем. С белым свечением особенно нравится..
Скорее всего, проблему помех от индикатора можно решить и, не думаю, что это сложно.
-
Я извиняюсь, немного со своей "колокольни"....
Может заменить индикатор на что-то типа SSD1309? Задействованы ноги РС0 и РС1 (I2C). Библиотек в инете полно, шума от индикатора нет.
-
Тут «прикол» в индикаторах как у микроволновки.. 44443
-
Увы мне,увы.Не взлетело.Итак,имеющееся железо:индикаторы с али с общим анодом(как выяснилось позднее) 3912AG,управляемые 561ИР2,контроллер Atmega-328P PU с кварцем 16МГц,программаторы SI-Prog и USB-asp, Avrdude.Печатку проверил несколько раз,выявил небольшие огрехи,исправил,теперь все верно.МК прошивал и тестировал в управлении другим синтезом от Андрея UR3ILF,программа работала.С последней тестовой прошивкой переключение сегментов раз в несколько секунд.Менял местами строки,как советовал Владимир.Пока не могу понять,что делаю не так.Прошивка для теста скомпилилась без ошибок.
-
С последней тестовой прошивкой переключение сегментов раз в несколько секунд.
Если у Вас применена микросхема Atmega328, Вы должны помнить, что фьюзы в микросхеме на заводе прошиты таким образом, что тактирование процессора осуществляется от внутреннего RC-генератора работающего на частоте 1 мгц. В моей программе переключение индикатора происходит через 0,5 сек. Это при частоте тактового генератора 8 мгц. Я обычно кварц на ставлю, а тактирую от RC-генератора частотой 8 мгц. То есть, если Вы не переустанавливали фьюзы, то у Вас переключение будет происходить через 4 сек.
Прочитайте программатором какие у Вас установлены фьюзы. Потом надо будет установить нужные.
Это что касается частоты перенключения. А то, что на индикаторе отсутствуют нужные цифры, с этим разберемся потом.
-
контроллер Atmega-328P PU с кварцем 16МГц
Чтобы микросхема тактировалась от кварца, для этого надо прописать фьюзы должным образом. Иначе кварц, даже если он запаян, не работает, а может и работает, но тактирование от него не происходит.
-
Прочитайте программатором какие у Вас установлены фьюзы.
Вот так сейчас
-
Перепрошил 123123 Сейчас обновляется как на Вашем видео.Но цифры не отображаются,а лишь сегменты,видимо все же залетел с индикаторами nea33 Придется копать даташит и кроить печатку....
-
Ну вроде все так, как я выше писал. У Вас такт от RC-генератора и включен делитель на 8. Поэтому такт от 1 мгц. Сначала оставьте все как есть, но CKDIV8 измените на противоположное. У Вас он включен (птичка установлена), эта долбаная PonyProg пытается запутать народ. Вообще правильно считается - фьюз установлен, когда в нем записан ноль. И обычно так все и считают. Но тут Понипрог подсуетилась...
Вот ссылка на калькулятор фьюзов.
https://radioaktiv.ru/avr_fuses_calculator.html?part=ATmega328P
-
Сейчас обновляется как на Вашем видео.Но цифры не отображаются,а лишь сегменты,видимо все же залетел с индикаторами
Да ничего страшного. Это все правится в программе. Ничего с печаткой делать не надо. Напишите что у Вас отображается на индикаторе, по порядку, потом будем кумекать и править программу.
Вам надо главное разобраться с индикаторами. То есть к каким выводам подключены сегменты. Сегменты расположены так - верхний -а, справа вверху - в, справа внизу - с, нижний - d, ну и так далее. Сравните со схемой индикатора у Тарасова. Но я не думаю, что там что-то напхимичили китайцы. Обычно, чтобы удобно выводить сегменты на выводы, применяют стандартное расположение. Но, еще раз - ничего с платой делать не надо. Это все просто сделать в программе.
-
Кроме того, надо посмотреть на какие ноги 561ИР2 выводятся биты. Например число 10100110. Оно заталкивается начиная справа (а может слева, не помню, это сейчас не важно). То есть, в конце цикла, когда все биты будут записаны в регистр, после сигнала Strobe все эти биты будут выведены на ножки ИР2. То есть, сегиент, подключенный к выводу, на которм будет единица в Вашем индикаторе будет светиться. Таким образом, меняя цифры в знакогенераторе программы мы можем вывести любые цифры, а то и другие знаки, которые можно получить комбинируя зажженные зегменты.
-
Ничего с печаткой делать не надо
Нашел даташит.Если паять по схеме на эту же печатку,то получается,что индикаторы должны быть со стороны микросхем.Если ИР держать к себе,то индикаторы с их стороны,над ними и точками вверх 56511
-
то получается,что индикаторы должны быть со стороны микросхем
Не надо обращать внимание на схему. Главное правильно подать нитание на микросхемы и нндикаторы. Если цифры выводятся не те, что надо, это правится в программе.
Давайте сделаем следующее:
Откройте проект, зайдите в файл lcd.h. Найдите строку:
char Numbers[10] = {0x88,0xeb,0xc4,0xc1,0xa3,0x91,0x90,0xcb,0x80,0x81};
Измените ее вот так:
char Numbers[10] = {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x30,0x80,0x80};
С такими знакогенератором на индикатор будет каждый раз выводиться (подсвечиваться) только один сегмент. А в самом начале вообще ни одного не должно светиться. Таким образом, программа выдаст нам какой сегмент соответствует установленному в программе. И тогда абсолютно станет ясно, какое число надо записать в знакогенератор, чтобы высветить например двойку.
Паять микросхемы со стороны индикаторов нехорошо, так как микросхемы будут упираться в переднюю панель, а у меня там, под индикаторами, между платой индикаторов и передней панелью, еще плата со светодиодами, которые показывают уровень сигнала.
-
Не надо обращать внимание на схему.
Эх,поторопился....Перенес индикаторы на сторону микрух....И да,безрезультатно.Но начали моргать точки,до этого они просто светились cr123 Сейчас все починю обратно,ибо точки наверху не комильфо.
-
Вот так оно выглядит с измененной строкой https://cloud.mail.ru/public/Dhzg/gmSsfuhst
-
Вот так оно выглядит с измененной строкой
Ну так все хорошо. Я просто сгоряча, написал так, как должно быть в моем индикаторе. У Вас же наоборот, там где единица в знакогенераторе, там сегмент не горит. Вот еще раз взгляните на знакогенератор. Первое число сейчас 0х00. То есть, на выходе микросхемы все нули. Так как у Вас к выходам микросхемы подключены катоды индикаторов, то светятся все сегменты. Второе число в строке 0х01, или в двомчном коде - 00000001. То есть на одном выводе микросхемы будет единица и семент не светится.
Поменяйте в строке нули на единицы, т.е. там где 0х00, у Вас будет 0хff, где 0х01, надо записать 0хfe (это будет 11111110). В общем, думаю понятно.. Тогда при включении, сначала не будет ни одного сегмента, потом светится один, у Вас это сегмент a ну и так далее. Короче все работает, надо только поправить числа.
-
Все же есть неверное отображение у Вас. Первые семь комбинаций верно. Где-то косяк? Гляньте в программе в строке. Скорее там ошиблись? Вполне мог я ошибиться, проверьте следующее: например число 0x20. x - должна быть английская буква, я же набирал не помню как, возможно втулил русские буквы. И если Вы скопировали строку из моего сообщения, то будет явная ошибка. Хотя, тогда бы вообще не понятно что отображалось бы...
-
Владимир,разобрался!Спасибо огромное за подсказки 123123 Строка должна выглядеть вот так : char Numbers[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; Фух....Выдохнул.Все работает и отображается корректно.То есть получается,можно использовать индикаторы с общим анодом.Нужно лишь поменять транзистор на pnp ,завести + в эмиттер и прописать вышеупомянутую строку в файл дисплея. 1999 123123
-
Владимир,еще вопрос.Где и что поправить,чтоб завести S-метр на вход ADC5? В Вашем варианте задействован ADC7.И,как я понял,Si у Вас выдает два сигнала.Где и как поправить,чтоб она давала только один сигнал на CLK0?
-
Строка должна выглядеть вот так : char Numbers[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
Ну нормально.. Хотя, есть и более изящный вариант. Чтобы не править всю строку знакогенератора, можно было бы поменять местами две строчки, вот здесь:
tmp=led;
for (t=0; t<8; t++)
{ if (tmp & 0x80)
PORTB |=_BV(PB2);
else PORTB &=~(_BV(PB2));
tmp <<= 1;
_delay_us(2);
PORTB &=~(_BV(PB0));
_delay_us(2);
PORTB |=_BV(PB0);
Это фрагмент кода из файла lcd.h. Что здесь происходит? Мы берем очередное двоичное число частоты (после преобразования частоты из десятичного значения в двоичный код), этому числу присвоено имя (переменная) led. Мы его значение присваиваем переменной tmp(над tmp мы будем кое-что делать, а led не должно изменяться). И выполняем цикл, восемь раз. Умножаем число на 10000000 (0x80), то есть выполняется логическое "и". Если левая цифра 1, то при умножении получаем единицу, то есть это будет "истина" и, если мы получили истину, то
PORTB |=_BV(PB2);, то есть на выход порта PB2 выводится единица. Если левая цифра была ноль, то при умножении получим ноль, т.е. "ложь" и, тогда:
else PORTB &=~(_BV(PB2));
т.е. на выходе порта будет выдан ноль.
Затем число сдвигается влево на один шаг:
tmp <<= 1;
Умножаем на 10000000 и т.д. все повторяем, 8 раз.
Это для моего индикатора. В Вашем случае, надо бы эти строки поменять местами, т.е. если левая цифра ноль, то на выход порта надо выдать единицу и наоборот.
Но это так, мысля вчера пришла перед сном. А коль все работает, то пусть так и остается. Теперь Вы должны в файле lcd.h полной программы синтезатора заменить строки так, как это сделано в тестовой программе.
Где и что поправить,чтоб завести S-метр на вход ADC5?
Сбросьте сюда архив исходника, который Вы используете, чтобы не было путаницы.. Потом я подскажу, где исправить..
Или укажите, из какого сообщения Вы используете исходник?
-
Сбросьте сюда архив исходника, который Вы используете, чтобы не было путаницы.. Потом я подскажу, где исправить..
Вот 1yep
-
Где и что поправить,чтоб завести S-метр на вход ADC5?
Это сделать нельзя. PC4 и PC5 эти выводы задействованы как выходы аппаратного модуля I2C, им управляется Si5351A. Если бы шина I2C не использовалась, тогда эти выводы можно было бы использовать как входы ADC. Кроме того, вход ADC7 у меня используется для измерения уровня сигнала, вырабатываемого схемой АРУ. И потом выводится на линейку из 8 светодиодов. Это было сделано из-за отсутствия места на передней панели для ствелочного индикатора. Надо ли Вам это? Оно не очень красиво.. Хотя кому как.
Что касается выходов Si.
В файле main.c уберите или заккоментируйте строку:
si5351aSetFreq_op(0); //устанавливаем опорную частоту
Вот так:
// si5351aSetFreq_op(0); //устанавливаем опорную частоту
Также в файле si5351a.c уберите (закоментируйте) строку:
i2cSendRegister(SI_CLK1_CONTROL, 0x4F | SI_CLK_SRC_PLL_B);
вот так:
//i2cSendRegister(SI_CLK1_CONTROL, 0x4F | SI_CLK_SRC_PLL_B);
-
Это сделать нельзя. PC4 и PC5 эти выводы задействованы как выходы аппаратного модуля I2C, им управляется Si5351A.
Точно,посмотрел назначение выводов....Не беда,внешний S-метр сделаю
-
Кстати если в ардуину заливать прошивку через программатор, то можно задействовать порты D0 и D1.
-
Не беда,внешний S-метр сделаю
Именно это я и имел ввиду (стрелочный индикатор). Но если надо, почему именно ADC5. Есть же еще свободный вывод ADC6.. В одном трансивере я столкнулся с такой проблемой - АРУ выдает крайне нелинейный сигнал и поэтому отметка на шкале S9 находится далеко от центра справа, почти в конце шкалы и там они все слились почти. S9+10 ... S9+60. А если программно, то можно преобразовать точнее.
И кстати, я вижу, что в этом варианте программы светодиодный S-метра как раз и нет. Скорее всего, я его выбросил, когда адаптировал программу для Core. Хотя, уже не помню... Бардак с программами dontt44, точне с их хранением и обозначением. В файле main.c в самом начале иногда пишу, что это за программа, какие ее отличия, когда изменена и т.д. Но часто забываю поправить.
-
можно задействовать порты D0 и D1.
Этого я стараюсь избегать. Это порты RXD и TXD. То есть приемник и передатчик аппаратного модуля USART. В некоторых синтезаторах я применял САТ.
-
Чтобы не править всю строку знакогенератора, можно было бы поменять местами две строчки
А я так и сделал,кстати.Причем менять их пришлось именно в секции кода ниже комментария *вывод частоты на индикатор*,иначе дисплей кратковременно моргал после включения и больше не подавал признаков жизни.Строку знакогенератора также пришлось менять,потому что точки были на местах,а символы с вариантом строки оригинала отображались не корректно. К слову,без fusebit doctor-a в моем случае было бы совсем тоскливо.После прошивки фьюзов атмега перестала определяться,пришлось обнулять полностью.Не силен в программировании,увы dontt44 .В прикреплении архив с полной программой для ПЧ 45МГц(в теме обсуждался способ изменения ПЧ) и исправленным конфигом для индикаторов с общим анодом(3912AG в моем случае).Такие индикаторы найти проще,чем индикаторы с общим катодом,как оказалось.
-
Тут «прикол» в индикаторах как у микроволновки..
Именно!Олдскульно и *лампово* cr123 Не то что эти ваши 1602,SSD1306 и TFT бездушные pl33 444tom Плюс самый важный для меня фактор - морозоустойчивость индикатора.
-
Мы берем очередное двоичное число частоты (после преобразования частоты из десятичного значения в двоичный код), этому числу присвоено имя (переменная) led. Мы его значение присваиваем переменной tmp(над tmp мы будем кое-что делать, а led не должно изменяться). И выполняем цикл, восемь раз.
А не проще объявить массив из 10 констант и брать константу согласно числа. "0" с нулевым адресом, "1" с первым адресом и т.д. Это будет гораздо быстрее чем перемножение в цикле 8 раз.
const __code char digit[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}
-
const __code char digit[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}
Чем Ваш массив отличается от фрагмента исходника. выложенного коллегой выше, вот оно:
char Numbers[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
-
Да, можно и так, но тогда мы занимает оперативную память переменной, а то что я написал - статический массив во флешь, оперативка не используется. Разницы нет, просто у меня привычка еще с 80-го семейчтва экономить оперативку lllol
-
Это будет гораздо быстрее чем перемножение в цикле 8 раз.
Экономить здесь особенно не надо. Весь синтезатор занимает меньше 8 кб. Можно применить даже Atmega8. Меня больше заинтересовало Ваше сообщение насчет перемножения. Как без него, вот это интересно..
-
Мы друг друга не совсем поняли :) Просто ваша запись предполагает расположение переменной типа char в оперативной памяти и, похоже, переменная объявлена глобально , а моя как раз во флешь, которой в избытке, там-же где и код самой программы.
Я обычно последовательный вывод чисел на индикаторы делаю через sprint. Для примера вашего случая (7 знакомест) sprintf(c, "%7d", indikator); Переменная с объявляется прямо в процедуре вывода (char c[7]; ) и по выходу из процедуры оперативка освобождается. А потом в цикле j=0; j<7; j++) берется значение для индикатора из массива по значению в с[j] (digit[с[j]]) и выводится побитно (сдвигом) в порт. Просто в этом случае не нужно трогать саму программу при смене типа индикатора, а править только массив значений индикатора const __code char digit[].
-
Просто ваша запись предполагает расположение переменной типа char в оперативной памяти и, похоже, переменная объявлена глобально , а моя как раз во флешь, которой в избытке, там-же где и код самой программы.
Если честно, то я толком и не разбирался, где и какая lol22. EEPROM знаю, а остальное как-то не отложилось.. К тому же, программирование для меня это не самоцель и тонкости этого процесса я постигаю, если есть необходимость.
В свое время были проблемы только с индикаторами 1602 из-за их медлительности. Тогда пришлось изощряться, так как не корректно отрабатывал валкодер. Можно было бы еще позаниматься библиотекой Si5351A. Когда-то анализировал, сколько времени уходит на подсчет и загрузку регистров микросхемы. Вышло где-то около 3 миллисек, хотя некоторые товарищи затрачивают на это дело около 0,5 миллисек. Правда пишут на ассемблере. Но, сейчас вроде особой необходимости не вижу..
-
Владимир ,подскажите пожалуйста,какую функцию выполняет кнопка *Menu*? не нашел входа/кнопки PTT...Или menu и есть сигнал управления PTT,судя по одноименному выходу с ULN2003 на управление RX\TX?
-
Если честно, то я толком и не разбирался, где и какая lol22. EEPROM знаю, а остальное как-то не отложилось.. К тому же, программирование для меня это не самоцель и тонкости этого процесса я постигаю, если есть необходимость.
1999 Ну работает программа и ладно rrr7777 Просто когда начинаются блуждающие глюки типа переполнения стека, вот тогда и начинаешь разбираться и экономить оперативку. Просто для информации... Flash память - это куда записывается код программы. И туда-же желательно писать константы типа знакогенератора. Завтра захочется выводить еще десяток символов и оп-па вылезают непонятные глюки с зависанием.
-
Владимир ,подскажите пожалуйста,какую функцию выполняет кнопка *Menu*?
Это резервная кнопка, на случай, если что-то еще понадобиться на нее повесить. Но, применение я ей так и не нашел.Или menu и есть сигнал управления PTT,судя по одноименному выходу с ULN2003 на управление RX\TX?
Что-то не помню уже.. Трансивера того давно нет, а судя по программе, управление RX/TX производится кнопкой подключенной к порту PD6.
Вот строка:
if (bit_is_clear(PIND, 6)) tx();
Но, этот порт подключен к разънму, который идет на плату переключения диапазонов.. В общем, я затрудняюсь что-то внятно объяснить. Поэтому, лучше повесить эту кнопку на свободные выводы порта PC1, PC2 или PC3(если индикатор стрелочный). Соответственно перепишите строку, которую я выше указал:
if (bit_is_clear(PINС, 1)) tx(); То есть в данном случае используется порт PC1.
Правда надо будет еще сконфигурировать этот порт на вход. Сейчас они все сконфигурированы как выход. Потом сделаю, когда определитесь к какому выводу будет подключена кнопка. Кнопка подключается между выходом порта и землей. Но, пока не подключайте, вывод порта сконфигурирован на выход и замкнув его на землю, можно сжечь.
-
Можно было бы еще позаниматься библиотекой Si5351A. Когда-то анализировал, сколько времени уходит на подсчет и загрузку регистров микросхемы. Вышло где-то около 3 миллисек, хотя некоторые товарищи затрачивают на это дело около 0,5 миллисек. Правда пишут на ассемблере. Но, сейчас вроде особой необходимости не вижу..
Чего-то долго. И почему вы не используете аппаратный I2C Atmega32? Если интересно, сброшу кусок кода для работы с встроенным I2C (ноги PC0 PC1).
-
Это резервная кнопка, на случай, если что-то еще понадобиться на нее повесить. Но, применение я ей так и не нашел.
Так может ее и задействовать под PTT?А выход PTT вывести на PC1 ,например
-
Так может ее и задействовать под PTT
Кнопки здесь работают от делителя напряжения. В зависимости от того, какая кнопка нажата, напряжение поступающее на вход аналого-цифрового преобразователя разное, таким образом контроллер определяет какая кнопка нажата. Кнопку отпускаем, но режим остается. Для отключения этого режима, кнопку надо нажать повторно. То есть, если использовать кнопку menu для включения передачи, то для перехода на прием ее надо отпустить и нажать еще раз. Я думаю, это неудобно. Поэтому переключение RX/TX надо делать другой кнопкой, которая работает без ADC.
Также ее (кнопку) можно подключить к выводу ADC. Он же у Вас также свободен. Просто его надо сконфигурировать как порт, на вход..
-
Просто его надо сконфигурировать как порт, на вход..
Давайте попробуем 1yep
-
попробуем
Открыл исходник и обнаружил там ошибки и, откуда они взялись, ума не приложу. Вот что имеем:
// ++++ функция инициализации МК ++++
void initialization(void)
{
PORTB=0xE7;
DDRB=0x00;
PORTC=0x3E;
DDRC=0x00;
PORTD=0x7C;
DDRD=0x80;
Ну это чепуха... Теперь по порядку. DDRB=0x00; //или в двоичном виде 00000000, что означает, что все порты настроены как вход. Если на каком-то месте записана 1, значит это выход. У нас все линии порта В должны работать как выходы, кроме 3 и 4 пина, к которым подключен валкодер. Поэтому должно быть 11100111.Окончательно строка будет выглядеть так (превращаем число в шестнадцатиричное):
DDRB=0xe7;
Строка:
PORTB=0xE7; // определяет на какие пины порта подается напряжение от плюча питания через внутренний резистор, так называемая подтяжка.
Для пинов порта В она не нужна, так как только 3 и 4 пины являются входами, а они подключены к схеме валкодера на выходе которого триггеры.
Поэтому, тут должно быть:
PORTB=0x00;
Глядя на строки настройки порта В, видим, что они перепутаны местами.
Аналогично, проверьте все остальные порт D и порт C. Загляните в исходник тестовой программы, у Вас же индикатор работает, следовательно там по порту В вопросов быть не должно.
Попробуйте откорректировать все сами, потом я проверю, сейчас есть некоторые проблемы, которые надо решить..
-
Попробуйте откорректировать все сами, потом я проверю
Такое я не осилю,по всей вероятности.Не знаком с программированием. dontt44
-
Сегодня откорректирую, сейчас не дома..
-
Итак, файл main.c
Найдите строки:
// ++++ функция инициализации МК ++++
void initialization(void)
{
PORTB=0xE7;
DDRB=0x00;
PORTC=0x3E;
DDRC=0x00;
PORTD=0x7C;
DDRD=0x80;
Исправьте следующим образом:
PORTB=0x00;
DDRB=0xE7;
PORTC=0x80;
DDRC=0x0E;
PORTD=0x00;
DDRD=0x7C;
Как видно из текста строки DDR и PORT перепутаны местами. Кто это так пошутил, не знаю... dontt44
Сейчас вывод порта PORTC7 включен на вход. То есть к нему подключаете кнопку, второй ее конец на землю. И на этот же вывод подаете плюс питания через резистор 10 ком. Этот порт подтянут к питанию внутренним резистором процессора, для этого PORTC=0x80, то есть седьмой бит установлен в единицу. Но внутренней подтяжки иногда не хватает (а может китайцы там начудили, если процессор от них). Все кнопки без фиксации.
Для переключения RX/TX кнопку надо нажать и удерживать, после отпускания, включается прием.
В этом же файле найдите строку (почти в самом низу):
if (bit_is_clear(PIND, 6)) tx(); //Измените ее вот так:
if (bit_is_clear(PINC, 7)) tx();
Не забудьте перенести в этот исходник откорректированную строку знакогенератора из файла ldc.c исходника тестовой программы. Откомпилируйте. Ну как обычно...
-
Сейчас вывод порта PORTC7 включен на вход. То есть к нему подключаете кнопку, второй ее конец на землю.
Это который PC6 или PC0? И,соответственно,при включенном RIT при замыкании ноги на землю,RIT должен отключиться?
-
А где ADC7?. Подозреваю, что у Вас процессор не с 32 выводами, т.е. в другом корпусе.
Надо уточнить, атмега бывает в трёх разл. корпусах. Например в ДИП корпусе 28 выводов, и портов PORTC6 и 7 у нее нет.
Если на приеме включен режим RIT, то частоту можно установить любую, даже за пределами диапазона. При переходе на передачу, установится частота, которая была до включения режима RIT.
Так пожелал товарищ, которому отдал трансивер. Порядок управления в этих режимах, можно сделать любым. За
-
А где ADC7?. Подозреваю, что у Вас процессор не с 32 выводами, т.е. в другом корпусе.
Все верно,у меня атмега 328 в DIP28.Вы говорили,что S-метр выкинули из программы.То есть освобождаются выводы PC1 PC2 PC3.Может быть на какой-то из них повесить PTT?
-
Если на приеме включен режим RIT, то частоту можно установить любую, даже за пределами диапазона. При переходе на передачу, установится частота, которая была до включения режима RIT.
Отлично 123123
-
Для переключения RX/TX кнопку надо нажать и удерживать, после отпускания, включается прием.
В этом же файле найдите строку (почти в самом низу):
if (bit_is_clear(PIND, 6)) tx(); //Измените ее вот так:
if (bit_is_clear(PINC, 7)) tx();
Это нужно сделать в ****** Основная программа ********* или в ********* Передача ********* ?
-
Все верно,у меня атмега 328 в DIP28
Понятно.
То есть освобождаются выводы PC1 PC2 PC3.
Можете использовать любой на свой выбор.
Вот эта строка, которая управляет кнопкой:
if (bit_is_clear(PINC, 7)) tx();
Здесь кнопка на выводе порта С, седьмой вывод. Смотря как удобнее на плате, можете вместо семерки написать 1,2 или 3. Кстати, тут я ошибся, судя по даташиту вывод ADC7 не является портом. Зная, что ADC1 и прочие до ADC5 могут быть как входами преобразователя, так и портами, я это применил и к ADC6, 7, а это не так.
Это нужно сделать в ****** Основная программа ********* или в ********* Передача ********* ?
Это нужно сделать везде. И в основной программе и в функции передача.
if (bit_is_clear(PINС, 7)) tx(); Это строка в основном модуле программы. Переписываете ее так:
if (bit_is_clear(PINС, 1)) tx(); //Как выше написал, вместо единицы можно также 2 или 3.
Строку из функции передача, надо откорректировать вот так:
while (bit_is_clear(PINС, 1)); // Кнопка нажата - продолжаем передачу
-
Это нужно сделать везде. И в основной программе и в функции передача.
if (bit_is_clear(PINС, 7)) tx(); Это строка в основном модуле программы. Переписываете ее так:
if (bit_is_clear(PINС, 1)) tx(); //Как выше написал, вместо единицы можно также 2 или 3.
Строку из функции передача, надо откорректировать вот так:
while (bit_is_clear(PINС, 1)); // Кнопка нажата - продолжаем передачу
Понял.Благодарю Вас,Владимир! 123123 Отпишусь позднее о результатах,как впаяю кнопку и скомпилирую hex 1yep
-
Отладку я делаю последовательно. Сначала я бы подключил индикатор, затем валкодер. При этом, валкодером должна изменяться частота. Потом переключатель диапазонов. И так далее. Правда есть одна проблема, без Si5351A программа, скорее всего, работать не будет. При обращении к Si5351A, процессор ждет ответа от чипа и, если ответа нет, программа "виснет". Если такое происходит (если у Вас пока не подключена Si), то надо блокировать обращение к чипу.
-
if (bit_is_clear(PINС, 1)) tx(); //Как выше написал, вместо единицы можно также 2 или 3.
Строку из функции передача, надо откорректировать вот так:
while (bit_is_clear(PINС, 1)); // Кнопка нажата - продолжаем передачу
После внесения предложенных мной изменений, проект не компилируется. Причина - в этих строках буква C - русская (написана в русской раскладке клавиатуры). Исправьте, переключив клавиатуру на английский.
Сегодня писал для одного проекта, взял этот фрагмент и обнаружил ошибку..
-
После внесения предложенных мной изменений, проект не компилируется. Причина - в этих строках буква C - русская
А я сразу все проверил 1yep .У меня все нормально собралось 123123 .В выходной плотно посижу с этим проектом.
-
После внесения правок имеется следующая картина включения контроллера с валкодером и SI.Нет разделительных точек на индикаторе(в тестовой программе индикатора они есть и на своих местах),нет реакции на валкод(на другом синтезаторе откликается).Проект собрался без ошибок.
-
Нет разделительных точек на индикаторе(в тестовой программе индикатора они есть и на своих местах)
Сбросьте исходник тестовой программы, сравню где расхождение.. Сначала разберемся с точками, потом с валкодером. Файл схемы я открыть не могу, он у Вас как видно по расширению, -Сплан-8. У меня седьмая версия и новую не хотелось бы ставить, я ими (в т.ч. Layout) давно не пользуюсь. В основном Диптрейс. Или сбросьте схему в седьмом или экспортируйте в другой формат.
-
Сбросьте исходник тестовой программы, сравню где расхождение..
Вот 123123 Схема тут же,в архиве 1yep
-
Откройте файл ldc.c исходника синтезатора и файл ldc.h тестовой программы. Функция "Вывод частоты на индикатор".
Строки в файле ldc.c:
led=(Numbers[(int)N5]);
led=led|0B10000000;
send_l(led);
Перепишите так как в тестовой программе (файл ldc.h), т.е.
led=(Numbers[(int)N5]);
led=led & 0x7f;
send_l(led);
Также строки -
led=(Numbers[(int)N2]);
led=led|0B10000000;
send_l(led);
Скорректируйте таким образом:
led=(Numbers[(int)N2]);
led=led & 0x7f;
send_l(led);
Далее... Откройте файл encoder2.c из исходника синтезатора.
Строку:
New =((EncoderPinPort>>6) & 0b11);
Измените следующим образом:
New =((EncoderPinPort>>3) & 0b11);
То есть, сдвигаете прочитанное число из порта В вправо не 6 раз, а три.
Не знаю, откуда все это появляется. Я ведь в самом начале нашей с Вами совместной работы, взял исходник, который выложил в этой ветке для Core и, вроде все было корректно. Хотя, видимо некоторая моя безалаберность присутствует. В компе уже столько мусора, почистить бы. Но я уже точно знаю, что-то лежит годами и не нужно. Стоит выбросить, как через день оно понадобится.
-
Сделал,прошил,точки на месте 123123
-
точки на месте
А валкодер?
-
А валкодер?
Молчит dontt44
-
Может отрубить пока SI и проверить без нее?
-
Может отрубить пока SI
Если у Вас после включения высвечивается частота и только и не на какие действия (нажатие кнопок, переключение диапазонов и т.д.) программа не реагирует, тогда да, надо попробовать отключить (точнее заблокировать) Si5351A. Делаем это так:
Откройте файл Si5351a.c
Строки:
void si5351aSetFrequency(unsigned long z) // Функция управления частотой frequensy -параметр переданный в вызове функции из main.
{
uint32_t pllFreq; //Определение переменных: pllFreq, XTALFreq, l, f, mult, num, denom, divider
uint32_t xtalFreq = XTAL_FREQ;
Перепишите вот так:
void si5351aSetFrequency(unsigned long z) // Функция управления частотой frequensy -параметр переданный в вызове функции из main.
{
return;
uint32_t pllFreq; //Определение переменных: pllFreq, XTALFreq, l, f, mult, num, denom, divider
uint32_t xtalFreq = XTAL_FREQ;
Т.е. в функцию дописываем оператор return:
При этом, при обращении к этой функции, сразу будет возврат в исходную точку, из которой происходил вызов этой функции.
Что касается гашения незначащего нуля на индикаторе для частот меньше 10 мгц. Вот из 328 сообщения:
На диапазонах, где частота меньше 10 мгц, слева нуль незначащий. Его можно убрать.
В программе найдите строки:
send_l(led);
led=(Numbers[(int)N1]);
Замените так:
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b00000000;
Теперь, перед выводом левого знака, программа проверяет, равен ли он нулю. Если нет, то знак выводится. Если равен нулю, то все сегменты гасятся.
-
Замените так:
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b00000000;
Кажется ошибся.. У Вас же индикатор другой..
Вот так правильно:
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b11111111;
-
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b11111111;
Попробую 1yep Последней строкой нужно вписать send_l(led); ?
-
Последней строкой нужно вписать send_l(led); ?
Вот так в исходнике, в котором нуль высвечивается:
led=(Numbers[(int)N2]);
led=led & 0x7f;
send_l(led);
led=(Numbers[(int)N1]);
send_l(led);
PORTB &=~(_BV(PB1)); //PORTB |=_BV(PB1);
}
Вот так надо изменить, чтобы первая слева цифра не высвечивалась.
led=(Numbers[(int)N2]);
led=led & 0x7f;
send_l(led);
led=(Numbers[(int)N1]);
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b11111111;
PORTB &=~(_BV(PB1)); //PORTB |=_BV(PB1); - было для индикатора с общим катодом
}
То есть, строка
send_l(led);
Заменена на несколько строк...
send_l(led);
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b11111111;
То есть, если число N1 не равно нулю, то оно отображается на индикаторе, если ноль, то все сегменты гасятся.
-
Переписал.Ноль впереди все равно светит,точки на месте ,реакции на валкод нет dontt44. Валкод сделал оптический,с формирователем на логике.Проверил в конструкции,в которой по умолчанию предусмотрен механический.Работает 123123 .То,что контроллер битый исключено.Жонглирую тремя штуками,перепрошивая.Два с алика и один оригинальный.В компиляторе пробовал ставить атмегу 328 и 328P,не дало результата.
-
Переписал.Ноль впереди все равно светит,точки на месте ,реакции на валкод нет
Давайте сделаем паузу. В одном недостроенном аппарате есть такой индикатор, соберу на макете синтезатор, проверю. Это пару дней.
Все же, непонятно с гашением первого знака. Вы пробовали оба варианта, т.е. когда led=0b11111111; и если led=0b00000000;?
-
Вы пробовали оба варианта, т.е. когда led=0b11111111; и если led=0b00000000;?
Да,оба варианта.Перекинул все на ардуинку,то же самое.Ноль все еще горит,энкодер без реакции.