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

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

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

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #435 : Январь 10, 2025, 12:12:25 pm »
Сегодня откорректирую, сейчас не дома..

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

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #436 : Январь 10, 2025, 01:14:33 pm »
Итак, файл 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 исходника тестовой программы. Откомпилируйте. Ну как обычно...

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #437 : Январь 10, 2025, 03:35:12 pm »
Сейчас вывод порта PORTC7 включен на вход. То есть к нему подключаете кнопку, второй ее конец на землю.
Это который PC6 или PC0? И,соответственно,при включенном RIT при замыкании ноги на землю,RIT должен отключиться?

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

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #438 : Январь 10, 2025, 04:09:52 pm »
А где ADC7?. Подозреваю, что у Вас процессор не с 32 выводами, т.е. в другом корпусе.
Надо уточнить, атмега бывает в трёх разл. корпусах. Например в ДИП корпусе 28 выводов, и портов PORTC6 и 7 у нее нет.
Если на приеме включен режим RIT, то частоту можно установить любую, даже за пределами диапазона. При переходе на передачу, установится частота, которая была до включения режима RIT.
 Так пожелал товарищ, которому отдал трансивер. Порядок управления в этих режимах, можно сделать любым. За

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #439 : Январь 10, 2025, 04:26:41 pm »
А где ADC7?. Подозреваю, что у Вас процессор не с 32 выводами, т.е. в другом корпусе.
Все верно,у меня атмега 328 в DIP28.Вы говорили,что S-метр выкинули из программы.То есть освобождаются выводы  PC1 PC2 PC3.Может быть на какой-то из них повесить PTT?
« Последнее редактирование: Январь 10, 2025, 05:09:17 pm от ZTM »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #440 : Январь 10, 2025, 04:28:15 pm »
 
Если на приеме включен режим RIT, то частоту можно установить любую, даже за пределами диапазона. При переходе на передачу, установится частота, которая была до включения режима RIT.
Отлично 123123

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #441 : Январь 10, 2025, 04:54:32 pm »
Для переключения RX/TX кнопку надо нажать и удерживать, после отпускания, включается прием.
В этом же файле найдите строку (почти в самом низу):
if (bit_is_clear(PIND, 6))    tx(); //Измените ее вот так:
if (bit_is_clear(PINC, 7))    tx();
Это нужно сделать  в ******  Основная программа ********* или в  ********* Передача  ********* ?

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

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #442 : Январь 10, 2025, 05:47:58 pm »
Все верно,у меня атмега 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)); // Кнопка нажата - продолжаем передачу

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #443 : Январь 10, 2025, 06:21:41 pm »
Это нужно сделать везде. И в основной программе и в функции передача.
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

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

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #444 : Январь 10, 2025, 06:56:45 pm »
Отладку я делаю последовательно. Сначала я бы подключил индикатор, затем валкодер. При этом, валкодером должна изменяться частота. Потом переключатель диапазонов. И так далее. Правда есть одна проблема, без Si5351A программа, скорее всего, работать не будет. При обращении к Si5351A, процессор ждет ответа от чипа и, если ответа нет, программа "виснет". Если такое происходит (если у Вас пока не подключена Si), то надо блокировать обращение к чипу.

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

  • Hero Member
  • *****
  • Сообщений: 1211
Re: Опорник от Владимир_К
« Ответ #445 : Январь 14, 2025, 11:58:40 pm »
if (bit_is_clear(PINС, 1))    tx(); //Как выше написал, вместо единицы можно также 2 или 3.
Строку из функции передача,  надо откорректировать вот так:
while (bit_is_clear(PINС, 1)); // Кнопка нажата - продолжаем передачу
После внесения предложенных мной изменений, проект не компилируется. Причина - в этих строках буква C - русская (написана в русской раскладке клавиатуры). Исправьте, переключив клавиатуру на английский.
Сегодня писал для одного проекта, взял этот фрагмент и обнаружил ошибку..
« Последнее редактирование: Январь 15, 2025, 12:06:34 am от Владимир_К »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #446 : Январь 15, 2025, 05:47:01 pm »
После внесения предложенных мной изменений, проект не компилируется. Причина - в этих строках буква C - русская
А я сразу все проверил  1yep .У меня все нормально собралось 123123 .В выходной плотно посижу с этим проектом.
« Последнее редактирование: Январь 15, 2025, 05:52:12 pm от ZTM »

Оффлайн ZTM

  • Sr. Member
  • ****
  • Сообщений: 345
Re: Опорник от Владимир_К
« Ответ #447 : Вчера в 11:17:15 pm »
После внесения правок имеется следующая картина включения контроллера с валкодером и SI.Нет разделительных точек на индикаторе(в тестовой программе индикатора они есть и на своих местах),нет реакции на валкод(на другом синтезаторе откликается).Проект собрался без ошибок.
« Последнее редактирование: Вчера в 11:20:10 pm от ZTM »