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

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

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

ZTM
Сообщений: 362
5 января 2025 г. в 11:57#406
Не надо обращать внимание на схему.
Эх,поторопился....Перенес индикаторы на сторону микрух....И да,безрезультатно.Но начали моргать точки,до этого они просто светились Сейчас все починю обратно,ибо точки наверху не комильфо.
ZTM
Сообщений: 362
6 января 2025 г. в 12:40#407
Вот так оно выглядит с измененной строкой https://cloud.mail.ru/public/Dhzg/gmSsfuhst
Владимир_К
Сообщений: 1245
6 января 2025 г. в 01:12#408
Вот так оно выглядит с измененной строкой
Ну так все хорошо. Я просто сгоряча, написал так, как должно быть в моем индикаторе. У Вас же наоборот, там где единица в знакогенераторе, там сегмент не горит. Вот еще раз взгляните на знакогенератор. Первое число сейчас 0х00. То есть, на выходе микросхемы все нули. Так как у Вас к выходам микросхемы подключены катоды индикаторов, то светятся все сегменты. Второе число в строке 0х01, или в двомчном коде - 00000001. То есть на одном выводе микросхемы будет единица и семент не светится.
Поменяйте в строке нули на единицы, т.е. там где 0х00, у Вас будет 0хff, где 0х01, надо записать 0хfe (это будет 11111110). В общем, думаю понятно.. Тогда при включении, сначала не будет ни одного сегмента, потом светится один, у Вас это сегмент a ну и так далее. Короче все работает, надо только поправить числа.
Владимир_К
Сообщений: 1245
6 января 2025 г. в 01:43#409
Все же есть неверное отображение у Вас. Первые семь комбинаций верно. Где-то косяк? Гляньте в программе в строке. Скорее там ошиблись? Вполне мог я ошибиться, проверьте следующее: например число 0x20. x - должна быть английская буква, я же набирал не помню как, возможно втулил русские буквы. И если Вы скопировали строку из моего сообщения, то будет явная ошибка. Хотя, тогда бы вообще не понятно что отображалось бы...


ZTM
Сообщений: 362
6 января 2025 г. в 02:30#410
Владимир,разобрался!Спасибо огромное за подсказки Строка должна выглядеть вот так : char Numbers[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; Фух....Выдохнул.Все работает и отображается корректно.То есть получается,можно использовать индикаторы с общим анодом.Нужно лишь поменять транзистор на pnp ,завести + в эмиттер и прописать вышеупомянутую строку в файл дисплея.

ZTM
Сообщений: 362
6 января 2025 г. в 02:39#411
Владимир,еще вопрос.Где и что поправить,чтоб завести S-метр на вход ADC5? В Вашем варианте задействован ADC7.И,как я понял,Si у Вас выдает два сигнала.Где и как поправить,чтоб она давала только один сигнал на CLK0?
Владимир_К
Сообщений: 1245
6 января 2025 г. в 03:18#412
Строка должна выглядеть вот так : 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?
Сбросьте сюда архив исходника, который Вы используете, чтобы не было путаницы.. Потом я подскажу, где исправить..
Или укажите, из какого сообщения Вы используете исходник?
ZTM
Сообщений: 362
6 января 2025 г. в 03:28#413
Сбросьте сюда архив исходника, который Вы используете, чтобы не было путаницы.. Потом я подскажу, где исправить..
Вот


Владимир_К
Сообщений: 1245
6 января 2025 г. в 03:47#414
Где и что поправить,чтоб завести 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);
ZTM
Сообщений: 362
6 января 2025 г. в 03:51#415
Это сделать нельзя. PC4 и PC5 эти выводы задействованы как выходы аппаратного модуля I2C, им управляется Si5351A.
Точно,посмотрел назначение выводов....Не беда,внешний S-метр сделаю
6 января 2025 г. в 04:01#416
Кстати если в ардуину заливать прошивку через программатор, то можно задействовать порты D0 и D1.
Владимир_К
Сообщений: 1245
6 января 2025 г. в 04:07#417
Не беда,внешний S-метр сделаю
Именно это я и имел ввиду (стрелочный индикатор). Но если надо, почему именно ADC5. Есть же еще свободный вывод ADC6.. В одном трансивере я столкнулся с такой проблемой - АРУ выдает крайне нелинейный сигнал и поэтому отметка на шкале S9 находится далеко от центра справа, почти в конце шкалы и там они все слились почти. S9+10 ... S9+60. А если программно, то можно преобразовать точнее.
И кстати, я вижу, что в этом варианте программы светодиодный S-метра как раз и нет. Скорее всего, я его выбросил, когда адаптировал программу для Core. Хотя, уже не помню... Бардак с программами , точне с их хранением и обозначением. В файле main.c в самом начале иногда пишу, что это за программа, какие ее отличия, когда изменена и т.д. Но часто забываю поправить.
Владимир_К
Сообщений: 1245
6 января 2025 г. в 04:27#418
можно задействовать порты D0 и D1.
Этого я стараюсь избегать. Это порты RXD и TXD. То есть приемник и передатчик аппаратного модуля USART. В некоторых синтезаторах я применял САТ.
ZTM
Сообщений: 362
6 января 2025 г. в 09:42#419
Чтобы не править всю строку знакогенератора, можно было бы поменять местами две строчки
А я так и сделал,кстати.Причем менять их пришлось именно в секции кода ниже комментария *вывод частоты на индикатор*,иначе дисплей кратковременно моргал после включения и больше не подавал признаков жизни.Строку знакогенератора также пришлось менять,потому что точки были на местах,а символы с вариантом строки оригинала отображались не корректно. К слову,без fusebit doctor-a в моем случае было бы совсем тоскливо.После прошивки фьюзов атмега перестала определяться,пришлось обнулять полностью.Не силен в программировании,увы .В прикреплении архив с полной программой для ПЧ 45МГц(в теме обсуждался способ изменения ПЧ) и исправленным конфигом для индикаторов с общим анодом(3912AG в моем случае).Такие индикаторы найти проще,чем индикаторы с общим катодом,как оказалось.


ZTM
Сообщений: 362
6 января 2025 г. в 09:57#420
Тут «прикол» в индикаторах как у микроволновки..
Именно!Олдскульно и *лампово* Не то что эти ваши 1602,SSD1306 и TFT бездушные Плюс самый важный для меня фактор - морозоустойчивость индикатора.