Автор Тема: Опорник от Владимир_К  (Прочитано 73625 раз)

0 Пользователей и 6 Гостей просматривают эту тему.

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #405 : Январь 05, 2025, 11:57:29 pm »
Не надо обращать внимание на схему.
Эх,поторопился....Перенес индикаторы на сторону микрух....И да,безрезультатно.Но начали моргать точки,до этого они просто светились  cr123 Сейчас все починю обратно,ибо точки наверху не комильфо.
« Последнее редактирование: Январь 06, 2025, 12:00:02 am от ZTM »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #406 : Январь 06, 2025, 12:40:37 am »
Вот так оно выглядит с измененной строкой   https://cloud.mail.ru/public/Dhzg/gmSsfuhst

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #407 : Январь 06, 2025, 01:12:55 am »
Вот так оно выглядит с измененной строкой
Ну так все хорошо. Я просто сгоряча, написал так, как должно быть в моем индикаторе. У Вас же наоборот, там где единица в знакогенераторе, там сегмент не горит. Вот еще раз взгляните на знакогенератор. Первое число сейчас 0х00. То есть, на выходе микросхемы все нули. Так как у Вас к выходам микросхемы подключены катоды индикаторов, то светятся все сегменты. Второе число в строке 0х01, или в двомчном коде - 00000001. То есть на одном выводе микросхемы будет единица и семент не светится.
Поменяйте в строке нули на единицы, т.е. там где 0х00, у Вас будет 0хff, где 0х01, надо записать 0хfe (это будет 11111110). В общем, думаю понятно.. Тогда при включении, сначала не будет ни одного сегмента, потом светится один, у Вас это сегмент a ну и так далее. Короче все работает, надо только поправить числа.

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #408 : Январь 06, 2025, 01:43:53 am »
Все же есть неверное отображение у Вас. Первые семь комбинаций верно. Где-то косяк? Гляньте в программе в строке. Скорее там ошиблись? Вполне мог я ошибиться, проверьте следующее: например число 0x20. x - должна быть английская буква, я же набирал не помню как, возможно втулил русские буквы. И  если Вы скопировали строку из моего сообщения, то будет явная ошибка. Хотя, тогда бы вообще не понятно что отображалось бы...
« Последнее редактирование: Январь 06, 2025, 02:10:56 am от Владимир_К »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #409 : Январь 06, 2025, 02:30:35 pm »
Владимир,разобрался!Спасибо огромное за подсказки 123123  Строка должна выглядеть вот так :  char Numbers[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; Фух....Выдохнул.Все работает и отображается корректно.То есть получается,можно использовать индикаторы с общим анодом.Нужно лишь поменять транзистор на pnp ,завести + в эмиттер и прописать вышеупомянутую строку в файл дисплея. 1999 123123
« Последнее редактирование: Январь 06, 2025, 02:44:03 pm от ZTM »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #410 : Январь 06, 2025, 02:39:15 pm »
Владимир,еще вопрос.Где и что поправить,чтоб завести S-метр на вход ADC5? В Вашем варианте задействован ADC7.И,как я понял,Si у Вас выдает два сигнала.Где и как поправить,чтоб она давала только один сигнал на CLK0?

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #411 : Январь 06, 2025, 03:18:56 pm »
Строка должна выглядеть вот так :  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?
Сбросьте сюда архив исходника, который Вы используете, чтобы не было путаницы.. Потом я подскажу, где исправить..
Или укажите, из какого сообщения Вы используете исходник?
« Последнее редактирование: Январь 06, 2025, 03:27:31 pm от Владимир_К »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #412 : Январь 06, 2025, 03:28:10 pm »
Сбросьте сюда архив исходника, который Вы используете, чтобы не было путаницы.. Потом я подскажу, где исправить..
Вот 1yep

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #413 : Январь 06, 2025, 03:47:05 pm »
Где и что поправить,чтоб завести 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);
« Последнее редактирование: Январь 06, 2025, 04:03:23 pm от Владимир_К »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #414 : Январь 06, 2025, 03:51:59 pm »
Это сделать нельзя. PC4 и PC5 эти выводы задействованы как выходы аппаратного модуля I2C, им управляется Si5351A.
Точно,посмотрел назначение выводов....Не беда,внешний S-метр сделаю
« Последнее редактирование: Январь 06, 2025, 03:55:38 pm от ZTM »

Оффлайн Сергей Александрович

  • Newbie
  • *
  • Сообщений: 12
Re: Опорник от Владимир_К
« Ответ #415 : Январь 06, 2025, 04:01:53 pm »
Кстати если в ардуину заливать прошивку через программатор, то можно задействовать порты D0 и D1.

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #416 : Январь 06, 2025, 04:07:28 pm »
Не беда,внешний S-метр сделаю
Именно это я и имел ввиду (стрелочный индикатор). Но если надо, почему именно ADC5. Есть же еще свободный вывод ADC6.. В одном трансивере я столкнулся с такой проблемой - АРУ выдает крайне нелинейный сигнал и поэтому отметка на шкале S9 находится далеко от центра справа, почти в конце шкалы и там они все слились почти. S9+10 ... S9+60. А если программно, то можно преобразовать точнее.
И кстати, я вижу, что в этом варианте программы светодиодный S-метра как раз и нет. Скорее всего, я его выбросил, когда адаптировал программу для Core. Хотя, уже не помню... Бардак с программами dontt44, точне с их хранением и обозначением. В файле main.c в самом начале иногда пишу, что это за программа, какие ее отличия, когда изменена и т.д. Но часто забываю поправить.
« Последнее редактирование: Январь 06, 2025, 04:19:08 pm от Владимир_К »

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #417 : Январь 06, 2025, 04:27:18 pm »
можно задействовать порты D0 и D1.
Этого я стараюсь избегать. Это порты RXD и TXD. То есть приемник и передатчик аппаратного модуля USART. В некоторых синтезаторах я применял САТ.

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #418 : Январь 06, 2025, 09:42:06 pm »
Чтобы не править всю строку знакогенератора, можно было бы поменять местами две строчки
А я так и сделал,кстати.Причем менять их пришлось именно  в секции кода ниже комментария *вывод частоты на индикатор*,иначе дисплей кратковременно моргал после включения и больше не подавал признаков жизни.Строку знакогенератора также пришлось менять,потому что точки были на местах,а символы с вариантом  строки оригинала отображались не корректно. К слову,без fusebit doctor-a в моем случае было бы совсем тоскливо.После прошивки фьюзов атмега перестала определяться,пришлось обнулять полностью.Не силен в программировании,увы dontt44 .В прикреплении архив с полной программой для ПЧ 45МГц(в теме обсуждался способ изменения ПЧ) и исправленным конфигом для индикаторов с общим анодом(3912AG в моем случае).Такие индикаторы найти проще,чем индикаторы с общим катодом,как оказалось.
« Последнее редактирование: Январь 07, 2025, 12:30:10 am от ZTM »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #419 : Январь 06, 2025, 09:57:38 pm »
Тут «прикол» в индикаторах как у микроволновки..
Именно!Олдскульно и *лампово* cr123 Не то что эти ваши 1602,SSD1306 и TFT бездушные pl33 444tom Плюс самый важный для меня фактор - морозоустойчивость индикатора.
« Последнее редактирование: Январь 06, 2025, 09:59:19 pm от ZTM »