PDA

Просмотр полной версии : Приставка-индикатор к Icom IC-736



r0ahh
23.10.2017, 09:46
Доброго дня.
Сделал конструкцию с сайта http://radiodv.net/my_icom_civ.php
У меня ICOM 736 с потекшим дисплеем.
Нашелся только кварц на 18.4320 мгц, в АВР-4 перекомпилировал(как указано в статье) для новой частоты. Прошил программатором USBasp, контролер завелся но на экране крякозяблы. Вроде видно что работает, но радио не видит.Там указано, что надо поменять константы но я не силен в программировании.Дис плей у меня совместимый с HD44780.
Может кто подскажет как можно это исправить или направит в нужном направлении.:-P
Спасибо.

MCLife
23.10.2017, 14:18
Ну судя по фото, в конструкции используется дисплей с поддержкой русского языка. Поэтому у Вас и крякозяблы.

r0ahh
23.10.2017, 18:19
У меня он с поддержкой русского. Там в разных местах символы, а полностью не отображается.

newradiofanat
23.10.2017, 19:13
Скорее всего неверно идет обмен с дисплеем. Посмотрите задержки. Тем более раз вы кварц поменяли...

ew6gn
23.10.2017, 19:33
Возможно, также частоту генерации кварца, и , надеюсь, фьюзы вы выставили правильно. и монтаж проверен.

Владимир_К
23.10.2017, 20:55
Тем более раз вы кварц поменяли...
Задержки программа отрабатывает в соответствии с частотой кварца. То есть, если проект перекомпилирован с новой частотой, то задержки будут соответствовать тем, что указаны в программе. Но, я бы все же этот вопрос не оставлял без внимания. Я вот просмотрел задержки, указанные в файле LCD16х2, который входит в состав проекта, и должен заметить, что в некоторых библиотеках для управления индикатором, они значительно больше. Мало того, для некоторых индикаторов, которые я применял и их приходилось увеличивать в несколько раз. Поэтому, я бы порекомендовал Вам следующее. Откройте файл LCD16х2 и увеличьте все задержки раз в пять. Задержки это вот, например:
Wait_uS(30);
uS - это микросекунды. В данном случае - 30 (цифра в скобках). Поставьте там 150. Для миллисекунд: Wait_mS(2); Ну там, где миллисекунды, достаточно увеличить раза в два.
И вот в этом фрагменте, в начале главной функции:
UINT8 i, nor, tmp_addr, addr1;
UINT16 tmp_br, br1;


cli();

//Вот сюда добавьте задержку, пока установится питание и пр. То есть, вставьте сюда строку

Wait_mS(200);


IOinit();
LCDinit();


Locate(1, 0);
lcd_print_str(" Icom CI-V ");
Locate(2, 0);
lcd_print_str(" (c)UA0LTB'2012 ");
Wait_mS(SHOW_DELAY);

этот фрагмент почти в конце файла Icom_C_V_Atmega_main .c. Потом снова перекомпилируйте проект и прошейте. На всякий случай, сделайте это в копии, исходный проект не трогайте. Просто папку с проектом скопируйте и в AVR Studio откройте проект из новой папки. Тогда, если что, можно всегда вернуться назад. но эти все дела, что я предложил, они никак не сказываются на работе (немного медленнее будет работать с индикатором) программы, а для индикатора, возможно будут полезны.

r0ahh
23.10.2017, 21:57
Сегодня уже поздно, завтра попробую отпишусь. Спасибо.

newradiofanat
23.10.2017, 22:00
Там не только в задержках похоже дело. Сейчас на скорую руку хотел в Протеусе запустить симуляцию этого проекта. Чего-то не хочет. Завтра постараюсь на работе "разобраться" в чем дело...

Владимир_К
23.10.2017, 22:15
Там не только в задержках похоже дело.
Вполне может быть, но я бы сначала добился, чтобы на индикаторе правильно отражалась информация. Например надпись, та которая выводится при включении, в самом начале. Для этого просто отключаю все, оставляю только инициализацию портов, индикатора и вывод двух строк, а потом идем дальше.

r0ahh
24.10.2017, 04:58
Доброго дня.
Поставил для пробы кварц 7.15909, перекомпилировал соответственно. Появилась заставка при загрузке и остальное на месте. Перебирает адреса и скорости, но не находит радио. Вместо надписи "ищу радио" половина русские половина крякозябли. Исходник использовал без изменений как у автора.

r0ahh
24.10.2017, 19:43
В принципе можно смириться с крякозяблями, они только при поиске радио нужны.Ну и пишет когда "радио не найдено".
Верхняя строчка с английскими цифрами и буквами думаю нормально будет(заставка при загрузке выглядит как и положено). Наверное кодировка дисплея кривая.:-P
Но ни в какую не хочет видеть радио, на FT232RL( китайская плата конвертера) с компа работает на 40 порту и 1200b скорости прекрасно.
Что с компа рулится, что с трансивера все нормально.
Схему проверил все нормально, в порт идут импульсы при переборе адресов и скоростей. Даже не знаю куда дальше копать....

ew6gn
24.10.2017, 22:19
Поставил для пробы кварц 7.15909, перекомпилировал соответственн там частота должна быть 7,3728мгц, попробуйте 2вариант с переключением диапазонов. может подойдет. Видимо контролер больших частот не "тянет".

r0ahh
24.10.2017, 22:24
Приветствую всех.
Может быть, что с фьюзами не так. Вот здесь калькулятор http://www.engbedded.com/fusecalc/
Как правильно выставить под кварц 18.4320 МГц.
Спасибо.

Кукин Николай Николаевич
25.10.2017, 09:43
Фьюзы тут не причем.
Авторский текст программы вполне работоспособный. Я его сам анализировал несколько лет назад, и используя некоторые принципы,
заложенные в этой проге, писал интерфейс обмена с icom'om.
Мне кажется, что процентов 99 причина в отсутствии синхронизации по скорости UART'a.
Из опыта отладки уарта: аппаратный уарт авр сохраняет работоспособность при несинхроне в 3-4 % по скорости.
Такая точность вполне обеспечивается внутренним RC генератором процика, и ,поэтому, стабилизация тактовой процика кварцом для этих целей абсолютно избыточная вещь на мой взгляд. Можно запускать все от внутреннего генератора.
Кварц , принятый автором, дает нулевое отклонение от теоретической частоты уарта на скорости 1200 бд.
При такой скорости уарта можно вообще тактировать процик от песочных часов.
Раз у Вас кварц другой частоты, в тексте программы нужно изменить настройки скорости уарта
в соответствии с изменением частоты кварца.
Автор рекомендовал сделать это прямо в настройках компилятора из студии.Поэтому проверьте, сообщения компилятора в нижнем окне студии, куда пишутся все сообщения компилятора при компиляции.
Должно быть 3 фразы запуска компилятора (по количеству файлов, из которых состоит проект).
Вот одна из них:
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=7372800UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Icom_CI-V_ATmega8_main.o -MF dep/Icom_CI-V_ATmega8_main.o.d -c ../Icom_CI-V_ATmega8_main.c

-DF_CPU=7372800UL -- это частота процика,использованн ая автором(жаль, что парень SK), для которой компилятор подбирает цикловые временные задержки, а в тексте программы в функции UARTinit настройки уарта определяются байты, загружаемые в регистры UBRRH и UBRRL.
Сочетание этих байтов и определяет скорость работы уарта.
Так вот, это число должно быть равно частоте используемого кварца в Гц.
Если оно отличается, то Вы неправильно настроили параметры компиляции в авр студии.
Можно задать частоту кварца минуя студию, определив параметр F_CPU в тексте программы, но тогда в студии в окне частоты надо оставить пустое поле.

Компилируем и пробуем.


Проверять работоспособность устройства лучше с терминальной программой, повешенной на порт компьютера, через который идет обмен с трансивером.
Устройство подключить ВМЕСТО трансивера через шнурок, использованный для подключения трансивера.
Можно пользовать прогу Terminal - удобная вещь для просмотра COM порта - видно, что туда поступает и что из него передается.
Поэтому сначала запускаете Terminal, назначаете номер сом-порта, на который село устройство, выставляете скорость порта 1200 бд и начинаете смотреть, что туда шлет устройство после подачи питания.
Оно начинает на скорости 1200 бд домогаться трансивера, посылая запрос частоты, каждый раз меняя адрес трансивера.
Последовательность байтов "FE FE E0 XX 03 FD" Вместо ХХ будет постоянно меняющийся байт адреса трансивера.
Если в ответ на один из запросов послать с компьютера какое-либо значение частоты в соответствии с протоколом обмена, то устройство пропишет это
в памяти и будет думать, что оно общается с трансивером с адресом, который был послан с компьютера.
Если в терминальной программе будет виден несистемный мусор - то налицо отсутствие синхронизации по скорости.
Тогда копать здесь.
Вкратце вот так.

Владимир_К
25.10.2017, 11:37
В качестве терминальной удобно использовать программу Terminal v1.9b. В ней удобный интерфейс, по сравнению например с терминальной программой, которая встроена в операционную систему компьютера.

r0ahh
26.10.2017, 06:56
При компиляции выдает следующее.

make: Makefile: No such file or directory
Build failed with 1 errors and 0 warnings...

Где взять или как создать Makefile?

Стоит ATMEL AVR4 + avr-toolchain

Владимир_К
26.10.2017, 11:19
Стоит ATMEL AVR4 + avr-toolchain
Я пользуюсь AVR Studio 4.19, но в паре в WinAVR2010. Так уже привык.. Поставил тулчейн, предварительно убрав WinAVR, но некоторые старые программы перестали компилиться.
Для создания Makefile надо создавать новый проект. Вот здесь описание как и что..
http://easyelectronics.ru/avr-studio-likbez.html

Кукин Николай Николаевич
26.10.2017, 12:25
Не использую toolchain т.к. это тоже самое, только вид сбоку,но запутанней.Только чистый винавр.
Теперь по порядку.
АВР студия, изначально заточенная разработчиками для программирования на ассемлере,в данном случае всего лишь красивая оболочка, выполняющая следующие функции:
текстовой редактор (довольно удобный),
отладчик для отладки программы на языке программирования и ассемблере,
запуска avr-gcc компилятора с параметрами, которые задает программист.
Параметров может быть великое множество в зависимости от того, что хотим получить на текущий момент.
В штатном режиме avr-gcc это могучий компилятор, запускаемый с командной строки, без всяких красивых менюшек. Эта строка , в которой надо написать много-много ключей, указывающих чего и как делать, обычно не вмещается на экран, и выводится при запуске компилятора в несколько строк.
Поэтому разработчики avr-gcc приляпали к этому делу что-то типа исполняемого пакетного файла, в котором один раз прописываются все ключи запуска, чтобы не повторять их каждый раз, и назвали его гордым именем Makefile.
Это обычный текстовой файл, редактируемый любым редактором. Типовой идет в поставке avr-gcc. В нем можно сразу и описать запуск программатора в автоматическом режиме сразу после компиляции, чтобы меньше шевелить пальцами.
В случае работы с комбайном gcc-avrstudio этот файл создается аврстудией перед КАЖДЫМ запуском gcc на компиляцию.
Сохраняется этот файл в месте , указанном в настройках студии, обычно это папка, названная default, которую студия по умолчанию создает в папке, где сидят файлы текущего проекта.
В эту же папку при компиляции, как правило, записываются все созданные в процессе работы компилятора файлы.
Формируется макефайл на основе настроек проекта, которые осуществляются в окне Project->Configuration Options.
Все, что там указано в виде ключей записывается в макефайл и после этого запускается компилятор авр-гсс.
Он создает прежде всего текст программы на ассемблере, а также несколько файлов, необходимых для отладки и сборки проекта, когда он написан в нескольких отдельно компилируемых файлах.
После этого запускается штатный ассемблер avr studiо, и получается выходной файл прошивки , который уже можно грузить в процик.
В окне Project->Configuration Options имеется несколько подокон, где указывются ключи оптимизации, местоположение библиотек стандартных функций языка, файлы описания каждого конкретного процика,
и много-много чего. В под-окне Custom options можно задавать дополнительные ключи к тем, что ставит студия по умолчанию.
В под-окне General указывается какой использовать Makefile. Если НЕ СТОИТ галочка Use external file, то в командной строке студия по умолчанию укажет gcc искать его в папке default.
Если ставим галочку, указывающую что Вы не хотите пользовать Makefile, сформирорванный студией, то нужно указать его имя (не обязательно Makefile, может быть произвольное имя). Но одновременно читаем указание под галочкой
1. Target name must equal project name.
2. Clean/rebuild support requires "clean" target.
3. Makefile and target must exist in the same folder

По п.3 Makefile ОБЯЗАТЕЛЬНО должен быть в том же месте, где и стартовый файл проекта.

Судя по полученному сообщению компилятора , галочка на внешний makefile стоит, а его естественно нет, ну и компиляция не запускается.
Чтобы не ломать голову, берете из архива автора НЕКОРРЕКТИРОВАННЫЙ файл Icom_CI-V_ATmega8_IC-910_bands.aps(в нем хранятся ВСЕ текущие настройки проекта и настройки запуска компилятора),
пишете его в папку с проектом, запускаете авр студию, тыкнув мышой в этот файл.
Далее тыкать Project->Configuration Options->General и в поле Frequency пишете частоту своего кварца в Гц. Далее "ОК" и F7.
Думаю у Вас все получится.
в папке default берете hex файл и грузите в процик.

Если не поможет, то берете makefile из папки default у автора и записываете его вместе с файлом исходника .

r0ahh
26.10.2017, 17:32
Если не поможет, то берете makefile из папки default у автора и записываете его вместе с файлом исходника .
Так там нету его в исходниках у автора.

Добавлено через 16 минут(ы):


файл Icom_CI-V_ATmega8_IC-910_bands.aps
А это где брать?

Кукин Николай Николаевич
26.10.2017, 18:01
Все есть. Вот то, что я скачал у автора, практически ничего не менял, кроме частоты фразой
#define F_CPU 8000000UL в main файле. Там несколько проектов и авторских макефайлов. Называются My_Makefile. У меня все компилится прекрасно.

r0ahh
26.10.2017, 18:27
Запутался,я уже. Просьба к Вам скомпилируйте пожалуйста с частотой 18.432000 гц.
Спасибо.

Кукин Николай Николаевич
26.10.2017, 18:37
Прошивки под частоты 7.15909 и 18.4320 с соответствующими makefile'ами

Пы сы. мега8, особливо взятая у лунолицых друзей может не потянуть 18 мгц, надо пробовать.
Посмотрите индекс частоты на чипе, если есть 20, то тогда нормально, если его нет, то гарантируется где-то 8 мгц.

r0ahh
26.10.2017, 22:03
Прошивки под частоты 7.15909 и 18.4320 с соответствующими makefile'ами

Пы сы. мега8, особливо взятая у лунолицых друзей может не потянуть 18 мгц, надо пробовать.
Посмотрите индекс частоты на чипе, если есть 20, то тогда нормально, если его нет, то гарантируется где-то 8 мгц.
Так и есть, не вывозит чип. Надо кварц искать другой( а это проблема еще та в нашем городе).
Как найду что отпишусь.
Спасибо всем, за оказанную помощь.
73!

Владимир_К
27.10.2017, 00:13
А почему частота именно 7,15909? Вроде должно быть 1843200 гц и дальше, где последующее число равно предыдущему, умноженное на 2, то есть 3686400 и т.д. Да и например в Ардуино 16 мгц и вполне нормально работает. Отклонение всего 0,16% от стандарта. Может попробовать например 8 мгц.

ew6gn
27.10.2017, 00:45
А почему частота именно 7,15909? Вроде должно Видимо потому, что такой кварц имеется у ТС. Но вобще то должно быть 7,3728мгц (так написано у первоисточнике и завязано с временными интервалами).

Кукин Николай Николаевич
27.10.2017, 07:47
Еще раз.Применение в этой конструкции кварца для стабилизации частоты тактирования процика с целью обеспечить устойчивый обмен по UART избыточное решение. Вполне достаточно точности и стабильности частоты, обеспечиваемое внутренним RC генератором меги.
Ну и ко всему прочему, кварц с частотой 7.15909, который у Вас в наличии дает частоту 1202 бд, что с запасом обеспечивает устойчивую работу уарта.
Разгребу дела на работе, сделаю прошиву под внутренний RC генератор 8 мгц.

Владимир_К
27.10.2017, 08:44
Видимо потому, что такой кварц имеется у ТС.
Ну я так примерно и подумал.. А коль так, зачем искать такой экзотический? В Ардуино кварц на 16 мгц, тоже не дает точной частоты для УАРТ (отклонение от нужной 0,16%), тем не менее без проблем работает в моем синтезаторе с САТ. Да и прошивается через бутлоадер, а это тоже УАРТ. Наверное уже сотни раз прошивал свой, никаких сбоев.
Прошивка на 8,0 мгц. Или кварц, или внутренний RC, но тогда фьюзы надо менять. Это прошивка из проекта, та которую Николай Николаевич выложил.

ua3ycv
27.10.2017, 08:49
может не в тему-но спрошу тут-у меня на любимом ФТ-736 погибает дисплей-яркость ееле еле-может кому поподала инфа перевода на современную базу?(П.С вариант приобритения на е-бее не рассматриваю-при пересылке "стряхивает" накал-уже две платы под столом:-("

VFO
27.10.2017, 10:21
Я в FT-990 ставил дисплей от FT-767, отлично получилось. Так, что рассмотрите и такой вариант. Они конечно не pin-to-pin, но общий смысл у всех одинаковый.

Кукин Николай Николаевич
27.10.2017, 12:58
перекомпилил под 8.000000 мГц и еще немного поменял сообщения.

Пысы. Только сейчас прочитал в личке Ваше сообщение. Заменяйте процик на мегу328 - у них цоколевка полностью идентична, просто перекомпилю под 328 мегу.

Кукин Николай Николаевич
27.10.2017, 23:07
Фьюзы lowbyte=E2,highbyte= D9,extendedbyte=FD

Скомпилировано под внутренний RC генератор 8 мгц.
Сначала залить прошивку, потом установить фьюзы.

r0ahh
28.10.2017, 17:29
Спасибо за прошивку. Низкий Вам поклон (можно сказать прозрел теперь :-P)
Спасибо Всем кто помогал советами в теме,пока с такой индикацией посижу(далее при наличии деталей буду делать как здесь https://blogs.yahoo.co.jp/mizu_ybb/folder/484972.html?m=lc&p=2 )
73!

Кукин Николай Николаевич
29.10.2017, 09:57
Поздравляю Вас с открытием третьего глаза

Добавлено через 10 минут(ы):

Поздравляю Вас с открытием третьего глаза:-P!
В скорректированной прошивке остался мой косяк в выводе сообщения поиска трансивера, но он проявляется только при поиске.Кто захочет, поправит.
На мой взгляд индикатор японца не имеет каких либо преимуществ перед этой конструкцией. Если уж повторять, то конструкцию с полной имитацией фирменного дисплея, как вот у другого японца http://jh6hhk.ham-radio-op.net/home/syuuri_Ic736.htm
Вот скорректированные исходники под мегу328

r0ahh
05.01.2018, 20:29
Приветствую!!!
Подскажите чем можно скомпилировать файлы для PIC16F1827 или можете помочь в компиляции?
Спасибо.

UN7GCE
11.01.2018, 06:19
Подскажите чем можно скомпилировать файлы для PIC16F1827 или можете помочь в компиляции?Выложил прошивки.

r0ahh
25.05.2018, 22:41
Приветствую!!!
Маленько пролетел когда заказывал LCD(ох уж эта не внимательность) с али. Пик заказал 3в , а дисплей от 5в(пробовал подать 3в видно очень слабо).
Если подключить к 5в LCD будет схема работать? Или сделать согласователь уровней?

UN7GCE
26.05.2018, 04:42
Пик заказал 3вЭто какой же ПИК на 3 вольта?

UA0YAS
26.05.2018, 06:44
Приветствую!!!
Маленько пролетел когда заказывал LCD(ох уж эта не внимательность) с али. Пик заказал 3в , а дисплей от 5в(пробовал подать 3в видно очень слабо).
Напряжение на контрастность измените

r0ahh
26.05.2018, 07:00
UN7GCE,
Вот такой PIC16LF1827 питание от 1.8 до 3в, максимальное 4в.
UA0YAS,
Попробую.

Если все удачно будет(тьфу-тьфу), выложу фото и описание.(оригинал на японском, там все в картинках понятно).Думаю может кому пригодится.

r0ahh
28.05.2018, 22:48
Прошил ПИК все нормально, запитал от 5в (так как дисплей 5в).
Хаотично бегают символы на дисплее, пробовал питать ПИК от 3в тоже самое.
При включении загорается кубиками весь верхний ряд(думаю инициализация) потом начинают бегать символы. При прикосновении к корпусу загораются символы всякие (уже не бегают) потом цифры слева (с каждым разом любые секунд 10) потом опять бегать начинают.
Что может быть?