Форум Радиолюбителей

Опорник от Владимир_К

415285 просмотров, 466 ответов — стр. 31 из 32

Владимир_К
Сообщений: 1245
22 января 2025 г. в 08:17#451
Откройте файл 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 и, вроде все было корректно. Хотя, видимо некоторая моя безалаберность присутствует. В компе уже столько мусора, почистить бы. Но я уже точно знаю, что-то лежит годами и не нужно. Стоит выбросить, как через день оно понадобится.
ZTM
Сообщений: 362
22 января 2025 г. в 08:44#452
Сделал,прошил,точки на месте
Владимир_К
Сообщений: 1245
22 января 2025 г. в 09:07#453
точки на месте
А валкодер?
ZTM
Сообщений: 362
22 января 2025 г. в 09:18#454
А валкодер?
Молчит
ZTM
Сообщений: 362
22 января 2025 г. в 09:25#455
Может отрубить пока SI и проверить без нее?
Владимир_К
Сообщений: 1245
22 января 2025 г. в 09:34#456
Может отрубить пока 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;

Теперь, перед выводом левого знака, программа проверяет, равен ли он нулю. Если нет, то знак выводится. Если равен нулю, то все сегменты гасятся.
Владимир_К
Сообщений: 1245
22 января 2025 г. в 10:32#457
Замените так:

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;
ZTM
Сообщений: 362
23 января 2025 г. в 01:13#458
if (N1!=0)
led=(Numbers[(int)N1]);
else
led=0b11111111;
Попробую Последней строкой нужно вписать send_l(led); ?
Владимир_К
Сообщений: 1245
23 января 2025 г. в 03:17#459
Последней строкой нужно вписать 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 не равно нулю, то оно отображается на индикаторе, если ноль, то все сегменты гасятся.
ZTM
Сообщений: 362
23 января 2025 г. в 03:35#460
Переписал.Ноль впереди все равно светит,точки на месте ,реакции на валкод нет . Валкод сделал оптический,с формирователем на логике.Проверил в конструкции,в которой по умолчанию предусмотрен механический.Работает .То,что контроллер битый исключено.Жонглирую тремя штуками,перепрошивая.Два с алика и один оригинальный.В компиляторе пробовал ставить атмегу 328 и 328P,не дало результата.
Владимир_К
Сообщений: 1245
23 января 2025 г. в 04:48#461
Переписал.Ноль впереди все равно светит,точки на месте ,реакции на валкод нет
Давайте сделаем паузу. В одном недостроенном аппарате есть такой индикатор, соберу на макете синтезатор, проверю. Это пару дней.
Все же, непонятно с гашением первого знака. Вы пробовали оба варианта, т.е. когда led=0b11111111; и если led=0b00000000;?
ZTM
Сообщений: 362
23 января 2025 г. в 05:08#462
Вы пробовали оба варианта, т.е. когда led=0b11111111; и если led=0b00000000;?
Да,оба варианта.Перекинул все на ардуинку,то же самое.Ноль все еще горит,энкодер без реакции.
ZTM
Сообщений: 362
9 октября 2025 г. в 12:33#463
Вот еще вариант. Пред-финальный, тестовый cr123. Гетеродин всегда сверху.Позднее реализую переключение боковой на одном из выводов. Статическая индикация на 561ир2 работает превосходно.Приехали TCXO для опоры SI5351. Жду с али индикаторы на 74hc595,чтоб уменьшить габариты платы индикации.Код для Avr studio 4.19 , закомментирован.Можно ставить свою частоту ПЧ,частоту опоры SI, частоты\кол-во\границы диапазонов.

ZTM
Сообщений: 362
11 октября 2025 г. в 03:30#464
Версия с индикацией на Oled 1306 0.91"

ZTM
Сообщений: 362
13 октября 2025 г. в 12:55#465
Исправленная версия.Добавил s-метр от S0 до S9+40.Убрал несколько конфликтов.Код с комментариями.Краткое описание внутри архива.Вроде работает