Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
- nbo
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Вт май 06, 2008 20:14:37
- Откуда: Ukraine
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Здравствуйте.
Вопрос к сообществу такого плана: собрал версию m16-20180501 с гитхаба в конфигурации мега16-TDA7313-LM7001. Прошивка собирается, в редакторе EEPROM (редактор для меги8) поменял конфигурацию на TDA7313 и LM7001. Так вот TDA7313 работает очень хорошо, а тюнер нет. Перестройка на экране идет, такое впечатление что нет обмена с LM7001. Сам тюнер заведомо рабочий, на прошивке от dt-andrew работал. Что я делаю не так?
Вопрос к сообществу такого плана: собрал версию m16-20180501 с гитхаба в конфигурации мега16-TDA7313-LM7001. Прошивка собирается, в редакторе EEPROM (редактор для меги8) поменял конфигурацию на TDA7313 и LM7001. Так вот TDA7313 работает очень хорошо, а тюнер нет. Перестройка на экране идет, такое впечатление что нет обмена с LM7001. Сам тюнер заведомо рабочий, на прошивке от dt-andrew работал. Что я делаю не так?
- Реклама
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
С подключением точно всё правильно?
Я такой тюнер уже очень давно не подключал, поэтому лучше бы ещё у кого-нибудь спросить, если пользуется кто-то, рабочий ли. Мало ли, что-то могло сломаться.
P.S. Ещё попробуйте в функцию SPIswInit() (spisw.c) добавить вызов SPIswInitLines(). Похоже, что действительно забыт перевод пинов в режим выхода.
P.P.S. Похоже, аналогичный баг и в ATmega8 варианте. На ATmega32 всё ОК. В общем, для ATmega8 и ATmega16 поправил код и залил на Github.
Код: Выделить всё
// EXT outputs definitions
#define EXT_0 C
#define EXT_0_LINE (1<<2)
#define EXT_1 C
#define EXT_1_LINE (1<<3)
#define EXT_2 C
#define EXT_2_LINE (1<<4)
// Software SPI definitions
#define SPISW_DI EXT_0
#define SPISW_DI_LINE EXT_0_LINE
#define SPISW_CLK EXT_1
#define SPISW_CLK_LINE EXT_1_LINE
#define SPISW_CE EXT_2
#define SPISW_CE_LINE EXT_2_LINEP.S. Ещё попробуйте в функцию SPIswInit() (spisw.c) добавить вызов SPIswInitLines(). Похоже, что действительно забыт перевод пинов в режим выхода.
P.P.S. Похоже, аналогичный баг и в ATmega8 варианте. На ATmega32 всё ОК. В общем, для ATmega8 и ATmega16 поправил код и залил на Github.
- nbo
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Вт май 06, 2008 20:14:37
- Откуда: Ukraine
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Отчет о проделанной работе:
Попробовал собрать исправленную версию. Выдает ошибки:
Severity Code Description Project File Line
Error implicit declaration of function 'SPIswInitLines' [-Werror=implicit-function-declaration] main D:\!Downloads\ampcontrol-m16\main\Debug\main.c 20
Severity Code Description Project File Line
Error 'extFunc' undeclared (first use in this function) main D:\!Downloads\ampcontrol-m16\main\Debug\main.c 20
Severity Code Description Project File Line
Error recipe for target 'build/main.o' failed main D:\!Downloads\ampcontrol-m16\main\Debug\Makefile 151
В файл main.c вставил
стало:
Severity Code Description Project File Line
Error 'extFunc' undeclared (first use in this function) main D:\!Downloads\ampcontrol-m16\main\Debug\main.c 20
Severity Code Description Project File Line
Error recipe for target 'build/main.o' failed main D:\!Downloads\ampcontrol-m16\main\Debug\Makefile 151
Тогда просто сделал:
и проект стал собираться нормально, ну и самое главное радио на LM7001 заработало - УРААА!
Проект собираю в Atmel Studio 7.
WiseLord спасибо за помощь
Попробовал собрать исправленную версию. Выдает ошибки:
Severity Code Description Project File Line
Error implicit declaration of function 'SPIswInitLines' [-Werror=implicit-function-declaration] main D:\!Downloads\ampcontrol-m16\main\Debug\main.c 20
Severity Code Description Project File Line
Error 'extFunc' undeclared (first use in this function) main D:\!Downloads\ampcontrol-m16\main\Debug\main.c 20
Severity Code Description Project File Line
Error recipe for target 'build/main.o' failed main D:\!Downloads\ampcontrol-m16\main\Debug\Makefile 151
В файл main.c вставил
Код: Выделить всё
#include "spisw.h"Severity Code Description Project File Line
Error 'extFunc' undeclared (first use in this function) main D:\!Downloads\ampcontrol-m16\main\Debug\main.c 20
Severity Code Description Project File Line
Error recipe for target 'build/main.o' failed main D:\!Downloads\ampcontrol-m16\main\Debug\Makefile 151
Тогда просто сделал:
Код: Выделить всё
#ifdef _SPISW
// SPIswInitLines(extFunc);
OUT(SPISW_DI);
OUT(SPISW_CLK);
OUT(SPISW_CE);
#endifПроект собираю в Atmel Studio 7.
WiseLord спасибо за помощь
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Да, допустил ошибку, и забыл проверить, компилируется.
Чуть поправил код. Попробуйте, если не сложно.
Чуть поправил код. Попробуйте, если не сложно.
- nbo
- Нашел транзистор. Понюхал.
- Сообщения: 162
- Зарегистрирован: Вт май 06, 2008 20:14:37
- Откуда: Ukraine
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Только что попробовал - все собирается и отлично работает. Ещё раз спасибо за помощь 
- Реклама
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Сегодня в разрабатываемом под STM32F103 варианте полностью поменял формат шрифтов.
Теперь шрифт не ограничен 256 символами, имеется полноценная поддержка Unicode (в стандарте UTF-8).
То есть, если даже прямо в коде написать что-то кириллицей (или любым другим языком), то это будет выведено (естественно, если нужный unicode-символ есть в выбранном шрифте.
Такой подход позволит в дальнейшем сделать более простой локализацию на нужный язык. Возможно, при наличии места в Flash-памяти, все поддерживаемые языки будут в прошивке сразу, нужный будет выбираться в настройках. А если кто-то захочет поменять какие-то надписи под себя, будет оставлена возможность сделать это по аналогии с вариантом на ATmega32.
Основная причина всей этой замены формата шрифтов - надоело рисовать шрифты чуть ли не руками в коде, правя байтики-битики. Сейчас шрифты можно отредактировать или сгенерировать новые в программе LCD Image Converter - наверное самая лучшая и функциональная из всех, что я вообще видел. Плюс, с открытым исходным кодом и собирается (так как написана на QT) не только под Windows.
Судя по отсутствию активности в Github, автор, похоже, её немного подзабросил год назад, поэтому я утянул её к себе, поправил ошибки сборки, пофиксил пару мелких багов и добавил шаблоны для генерации шрифтов, которые подходят для Ampcontrol.
Если кому-то нужна готовая сборка под Windows - можно взять у меня на Github в релизах.
Сами исходники шрифтов в xml-формате и необходимые шаблоны для программы - в исходниках ampcontrol-f103
Также было бы здорово, если бы кто-то захотел взяться за рисование нормальных шрифтов для 320x240 (и выше) дисплеев. Всё-таки то, что есть сейчас - шрифты высотой 8, 24 и 32(цифры) - это хорошо для 128x64, но недостаточно для больших разрешений. Приходится масштабировать символы, и выглядит слишком уж пикселизированно. Было бы здорово иметь хорошие и гладкие шрифты покрупнее.
Лично я пока нахожу очень неплохим вариантом шрифт Terminus, который я сам планировал использовать как базовый в будущем. Но, может быть, кто-то предложит ещё что-то интересное. Например, шрифты а-ля семисегментник (для отображения частоты FM, например).
P. S. Да, иконки в программе тоже можно рисовать, так что если кто-то желает поиграться и с этим - welcome.
Теперь шрифт не ограничен 256 символами, имеется полноценная поддержка Unicode (в стандарте UTF-8).
То есть, если даже прямо в коде написать что-то кириллицей (или любым другим языком), то это будет выведено (естественно, если нужный unicode-символ есть в выбранном шрифте.
Такой подход позволит в дальнейшем сделать более простой локализацию на нужный язык. Возможно, при наличии места в Flash-памяти, все поддерживаемые языки будут в прошивке сразу, нужный будет выбираться в настройках. А если кто-то захочет поменять какие-то надписи под себя, будет оставлена возможность сделать это по аналогии с вариантом на ATmega32.
Основная причина всей этой замены формата шрифтов - надоело рисовать шрифты чуть ли не руками в коде, правя байтики-битики. Сейчас шрифты можно отредактировать или сгенерировать новые в программе LCD Image Converter - наверное самая лучшая и функциональная из всех, что я вообще видел. Плюс, с открытым исходным кодом и собирается (так как написана на QT) не только под Windows.
Судя по отсутствию активности в Github, автор, похоже, её немного подзабросил год назад, поэтому я утянул её к себе, поправил ошибки сборки, пофиксил пару мелких багов и добавил шаблоны для генерации шрифтов, которые подходят для Ampcontrol.
Если кому-то нужна готовая сборка под Windows - можно взять у меня на Github в релизах.
Сами исходники шрифтов в xml-формате и необходимые шаблоны для программы - в исходниках ampcontrol-f103
Также было бы здорово, если бы кто-то захотел взяться за рисование нормальных шрифтов для 320x240 (и выше) дисплеев. Всё-таки то, что есть сейчас - шрифты высотой 8, 24 и 32(цифры) - это хорошо для 128x64, но недостаточно для больших разрешений. Приходится масштабировать символы, и выглядит слишком уж пикселизированно. Было бы здорово иметь хорошие и гладкие шрифты покрупнее.
Лично я пока нахожу очень неплохим вариантом шрифт Terminus, который я сам планировал использовать как базовый в будущем. Но, может быть, кто-то предложит ещё что-то интересное. Например, шрифты а-ля семисегментник (для отображения частоты FM, например).
P. S. Да, иконки в программе тоже можно рисовать, так что если кто-то желает поиграться и с этим - welcome.
-
mixa232323
- Прорезались зубы
- Сообщения: 217
- Зарегистрирован: Вт окт 01, 2013 01:04:31
- Откуда: Гомель
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
WiseLord
Еще 3 дисплея на подходе. ILI9163, ST7735, MC2PA8201(nokia 6300, 5310 и тд).
Добавлено after 3 hours 23 minutes 11 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
WiseLord
вот еще 3 дисплея
последний коммит к которому всё прикрутил "Add fonts sources and templates for LCD Image Converter"
добавьте в гит
Еще 3 дисплея на подходе. ILI9163, ST7735, MC2PA8201(nokia 6300, 5310 и тд).
Добавлено after 3 hours 23 minutes 11 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
WiseLord
вот еще 3 дисплея
последний коммит к которому всё прикрутил "Add fonts sources and templates for LCD Image Converter"
добавьте в гит
- Вложения
-
- ampcontrol-f103-master.rar
- (13.21 КБ) 258 скачиваний
Последний раз редактировалось mixa232323 Сб сен 08, 2018 21:15:27, всего редактировалось 1 раз.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавил в редактор шрифтов / картинок функцию автоматической обрезки (по ширине, по высоте, или по обоим параметрам). Должно сильно упростить и ускорить работу с импортированными из системы шрифтами.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавил в редактор шрифтов функцию масштабирования, в том числе с неким аналогом сглаживания.
Без сглаживания:

Со сглаживанием:

Придуманный алгоритм сглаживания (добавлять в фоновый пиксел "уголки", если возле него есть и по горизонтали, и по вертикали заполненный пиксел) не идеален, но лучше пока в голову не пришло.
Без сглаживания:
Со сглаживанием:
Придуманный алгоритм сглаживания (добавлять в фоновый пиксел "уголки", если возле него есть и по горизонтали, и по вертикали заполненный пиксел) не идеален, но лучше пока в голову не пришло.
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
нашел тут пару шрифтов из старых завалов.
масштабируются, являясь векторными, в любой кегль.
тягал с сайта http://www.ffonts.net
для стилизованного под люминесцентные VFD матрицы шрифта были еще с затенением (отключенные эдементы матрицы).
ярко-зелёные буквы на темнозелёной ячейке знакогенерирующей матрицы смотрелось прикольно.
масштабируются, являясь векторными, в любой кегль.
тягал с сайта http://www.ffonts.net
для стилизованного под люминесцентные VFD матрицы шрифта были еще с затенением (отключенные эдементы матрицы).
ярко-зелёные буквы на темнозелёной ячейке знакогенерирующей матрицы смотрелось прикольно.
- Вложения
-
- DS-Digital-BoldA.png
- (5.81 КБ) 609 скачиваний
-
- DS-Digital-Bold.zip
- (37.54 КБ) 217 скачиваний
-
- DS-Digital-Bold-ItalicA.png
- (6.9 КБ) 554 скачивания
-
- DS-Digital-Bold-Italic.zip
- (37.54 КБ) 181 скачивание
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
высоты шрифта 48 пикселей для матриц 320х240 хватит? если делать такие, то хотя-бы на цифрах остановиться с разделителями и спецсимволами. битовые поля полных шрифтов займут много места на флеше.
Добавлено after 5 hours 39 minutes 1 second:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
конвертер фонтов FontCvtST.exe от пакета Segger EmWin для STM32CubeMX. лежит в репе от куба (STM32Cube\Repository\STM32Cube_FW_F1_V1.6.1\Middlewares\ST\STemWin\Software)
формат выходного С++ файла заточен под EmWin, но подергать готовые битовые поля символов можно.
ну или проект совместить под структуру файла, если софт юзабельнее.
Добавлено after 5 hours 39 minutes 1 second:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
конвертер фонтов FontCvtST.exe от пакета Segger EmWin для STM32CubeMX. лежит в репе от куба (STM32Cube\Repository\STM32Cube_FW_F1_V1.6.1\Middlewares\ST\STemWin\Software)
формат выходного С++ файла заточен под EmWin, но подергать готовые битовые поля символов можно.
ну или проект совместить под структуру файла, если софт юзабельнее.
- Вложения
-
- Times New Roman40.rar
- пример сгенерёного кода
- (197.28 КБ) 231 скачивание
-
- FontCvtST.zip
- (227.47 КБ) 199 скачиваний
-
mixa232323
- Прорезались зубы
- Сообщения: 217
- Зарегистрирован: Вт окт 01, 2013 01:04:31
- Откуда: Гомель
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
[uquote="kloker",url="/forum/viewtopic.php?p=3453859#p3453859"]высоты шрифта 48 пикселей для матриц 320х240 хватит? если делать такие, то хотя-бы на цифрах остановиться с разделителями и спецсимволами. битовые поля полных шрифтов займут много места на флеше.
Добавлено after 5 hours 39 minutes 1 second:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
конвертер фонтов FontCvtST.exe от пакета Segger EmWin для STM32CubeMX. лежит в репе от куба (STM32Cube\Repository\STM32Cube_FW_F1_V1.6.1\Middlewares\ST\STemWin\Software)
формат выходного С++ файла заточен под EmWin, но подергать готовые битовые поля символов можно.
ну или проект совместить под структуру файла, если софт юзабельнее.[/uquote]
Не вариант.
Добавлено after 5 hours 39 minutes 1 second:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
конвертер фонтов FontCvtST.exe от пакета Segger EmWin для STM32CubeMX. лежит в репе от куба (STM32Cube\Repository\STM32Cube_FW_F1_V1.6.1\Middlewares\ST\STemWin\Software)
формат выходного С++ файла заточен под EmWin, но подергать готовые битовые поля символов можно.
ну или проект совместить под структуру файла, если софт юзабельнее.[/uquote]
Не вариант.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Добавил поддержку распаковки шрифтов, упакованных с помощью RLE (упаковку обеспечивает LCD Image Converter, упомянутый мною выше).
В итоге, на 320x240 дисплее, если ранее прошивка с тремя крупными шрифтами (два по 16 (для цифр) символов размерами ~80x40 и ~64x28 и один полный шрифт на 178 символов размером ~64x24) занимала 59 кБайт, то после упаковки - 33 кБайт. При этом базовый размер прошивки ориентировочно 20кБайт, то есть по сути шрифты вместо 39кБ стали занимать 13кБ, т.е. упаковались где-то в три раза.
Вот как это выглядит (шрифты на базе terminus) на ILI9320 (320x240):

Все шрифты и шаблоны для конвертации (как со сжатием, так и без) лежат с исходниками в каталоге ./files/fonts/.
В итоге, на 320x240 дисплее, если ранее прошивка с тремя крупными шрифтами (два по 16 (для цифр) символов размерами ~80x40 и ~64x28 и один полный шрифт на 178 символов размером ~64x24) занимала 59 кБайт, то после упаковки - 33 кБайт. При этом базовый размер прошивки ориентировочно 20кБайт, то есть по сути шрифты вместо 39кБ стали занимать 13кБ, т.е. упаковались где-то в три раза.
Вот как это выглядит (шрифты на базе terminus) на ILI9320 (320x240):
Все шрифты и шаблоны для конвертации (как со сжатием, так и без) лежат с исходниками в каталоге ./files/fonts/.
-
mixa232323
- Прорезались зубы
- Сообщения: 217
- Зарегистрирован: Вт окт 01, 2013 01:04:31
- Откуда: Гомель
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
WiseLord
Размер шрифта не соответствует максимальному размеру вписанного в него символа. Это очень неудобно и занимает лишнее место в памяти. При расчетах остается неизвестный параметр ширина который постоянно надо подсматривать в коде.
Размер шрифта не соответствует максимальному размеру вписанного в него символа. Это очень неудобно и занимает лишнее место в памяти. При расчетах остается неизвестный параметр ширина который постоянно надо подсматривать в коде.
Последний раз редактировалось mixa232323 Вт сен 11, 2018 11:35:06, всего редактировалось 2 раза.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
В смысле не соответствует? И что Вы понимаете под размером шрифта?
-
mixa232323
- Прорезались зубы
- Сообщения: 217
- Зарегистрирован: Вт окт 01, 2013 01:04:31
- Откуда: Гомель
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
[uquote="WiseLord",url="/forum/viewtopic.php?p=3454544#p3454544"]В смысле не соответствует? И что Вы понимаете под размером шрифта?[/uquote]
Символы в шрифте font-terminus-mod-64 имеют максимальный размер 40. 12 лишних точек сверху и 12 снизу.
Символы в шрифте font-terminus-mod-64 имеют максимальный размер 40. 12 лишних точек сверху и 12 снизу.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Это не совсем так:

В любом случае, пустые области шириной в 8пикселов сверху и снизу занимают в flash-памяти ровно по 2 байта каждая.
При добавлении в будущем поддержки других языков там могут быть и другие символы (всякие Â, Ů и прочая диакритика), использующие это "пустое" пространство. Поэтому эти области не обрезаны.
А вот в шрифтах, которые с префиксами -dig (минимальный набор - 10 цифр, точка, запятая, плюс, минус) - там всё обрезано.
В любом случае, пустые области шириной в 8пикселов сверху и снизу занимают в flash-памяти ровно по 2 байта каждая.
При добавлении в будущем поддержки других языков там могут быть и другие символы (всякие Â, Ů и прочая диакритика), использующие это "пустое" пространство. Поэтому эти области не обрезаны.
А вот в шрифтах, которые с префиксами -dig (минимальный набор - 10 цифр, точка, запятая, плюс, минус) - там всё обрезано.
Последний раз редактировалось WiseLord Вт сен 11, 2018 11:48:50, всего редактировалось 1 раз.
-
mixa232323
- Прорезались зубы
- Сообщения: 217
- Зарегистрирован: Вт окт 01, 2013 01:04:31
- Откуда: Гомель
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
а в цифрах зачем зазор?
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
Потому что все символы одного шрифта обязаны быть одной высоты.
P.S. иначе придётся обходить проблему вроде

P.S. иначе придётся обходить проблему вроде
Последний раз редактировалось WiseLord Вт сен 11, 2018 12:12:49, всего редактировалось 1 раз.
-
mixa232323
- Прорезались зубы
- Сообщения: 217
- Зарегистрирован: Вт окт 01, 2013 01:04:31
- Откуда: Гомель
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12
я про шрифты цифр


