Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
- Сообщения: 28
- Зарегистрирован: Вт апр 07, 2015 14:06:33
To WiseLord: а будет сервисное меню, где можно выбрать тюнер и аудиопроцессор?
- Реклама
Может быть. Особой необходимости в этом ведь нету, функция нужна от силы один раз при сборке устройства, поэтому ручной правки eeprom в hex-редакторе вполне достаточно.
Как ещё один вариант, можно сделать десктопное приложение для редактирования eeprom, позволившее бы и текстовые строки редактировать с поправкой на хитрую кодировку. Может быть, это было бы даже более удобно.
Как ещё один вариант, можно сделать десктопное приложение для редактирования eeprom, позволившее бы и текстовые строки редактировать с поправкой на хитрую кодировку. Может быть, это было бы даже более удобно.
Обновление прошивки.
- В основную ветку (ATmega32) возвращена поддержка знакосинтезирующих дисплеев 16x2 (HD44780/KS0066).
- Исправлены мелкие ошибки, найденные при написании кода для KS0066.
Возможно подключение в режиме 8 бит по параллельному протоколу (выводы подключаются аналогично соответствующим выводам KS0108), либо же через I²C-адаптер PCF8574.
При подключении через PCF8574 плавная регулировка яркости, очевидно, быть невозможна (ШИМ по I2C - это было бы что-то странное, так что поддерживается только включение или выключение подсветки при регулировке яркости), поэтому в этом случае можно подсветку дисплея подключать не к PCF8574, а, как и в случае параллельного включения, к микроконтроллеру через транзистор - там ШИМ генерируется по-прежнему.
Во вложении проект для Proteus и прошивки.
В железе проверено для варианта с PCF8574 (проще было подключить к плате для графического дисплея).
P.S. Исправлен вкравшийся в последнюю прошивку баг с невозможностью настройки будильника, залит новый файл.
- В основную ветку (ATmega32) возвращена поддержка знакосинтезирующих дисплеев 16x2 (HD44780/KS0066).
- Исправлены мелкие ошибки, найденные при написании кода для KS0066.
Возможно подключение в режиме 8 бит по параллельному протоколу (выводы подключаются аналогично соответствующим выводам KS0108), либо же через I²C-адаптер PCF8574.
При подключении через PCF8574 плавная регулировка яркости, очевидно, быть невозможна (ШИМ по I2C - это было бы что-то странное, так что поддерживается только включение или выключение подсветки при регулировке яркости), поэтому в этом случае можно подсветку дисплея подключать не к PCF8574, а, как и в случае параллельного включения, к микроконтроллеру через транзистор - там ШИМ генерируется по-прежнему.
Во вложении проект для Proteus и прошивки.
В железе проверено для варианта с PCF8574 (проще было подключить к плате для графического дисплея).
P.S. Исправлен вкравшийся в последнюю прошивку баг с невозможностью настройки будильника, залит новый файл.
- Вложения
-
- ampcontrol_m32-2dc8fc9.7z
- (62.27 КБ) 358 скачиваний
Последний раз редактировалось WiseLord Ср авг 12, 2015 19:21:15, всего редактировалось 1 раз.
- Сообщения: 64
- Зарегистрирован: Вт окт 08, 2013 15:41:06
Wiselord было совсем отлично если бы было приложение для настройки и сборки прошивки перед первым стартом.
Для сборки нужен компилятор avr-gcc в системе + утилита make, что есть в WinAVR или AVRStudio и этого достаточно. Отдельное приложение для сборки - это лишняя сущность, которая всё равно будет требовать наличия этих компонентов. Открыть терминал и написать make, подправив Makefile (pins.h, eeprom) под себя не так уж сложно.
Вот по поводу редактора eeprom - это другое дело. Было бы удобно иметь приложение, которое бы позволяло создать такой файл под себя, учитывая сложности с правкой текстовых строк в крайне нестандартной кодировке ks0066_ru. Вот это было бы интересно сделать, да.
P.S. Исправлен вкравшийся в последнюю прошивку баг с невозможностью настройки будильника, файл в сообщении перезалит.
Вот по поводу редактора eeprom - это другое дело. Было бы удобно иметь приложение, которое бы позволяло создать такой файл под себя, учитывая сложности с правкой текстовых строк в крайне нестандартной кодировке ks0066_ru. Вот это было бы интересно сделать, да.
P.S. Исправлен вкравшийся в последнюю прошивку баг с невозможностью настройки будильника, файл в сообщении перезалит.
- Реклама
Начал писать приложение для редактирования файлов eeprom для проекта.
Пока готово процентов на 50 (частично написана вычитка eeprom из файла), но хотелось бы просто проверить сборку под Windows.
Код пишется на Qt (версия 5.4.2), исходники доступны на Github в ветке editor.
Просьба кому-нибудь, кто пользуется Windows, проверить, собирается ли в ней. Для сборки нужны библиотеки Qt и (необязательно, можно и из командной строки собирать) IDE QtCreator (идёт в комплекте). Для большей универсальности пробовать стоит, наверное, Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2), но можно и под Visual Studio (если установлена).
P.S. Установил Win7 в Virtualbox, там собрал. Вроде запускается (и на виртуальной WinXP тоже). Проверьте у себя, пожалуйста, запускается или нет, нормально ли отображаются шрифты и т.п. Функционально приложение ещё не доделано, даже сохранять пока результаты работы не умеет. Возможно, до конца выходных доделаю.
P.P.S. Добавлена возможность сохранения результата. Уже можно пользоваться, как минимум, для перевода текстовых меток и настроек аудиопроцессора. Настройки тюнера, добавление станций и прочее будет реализовано чуть позднее.
P.P.P.S. Добавлена возможность выбора и настроек FM-тюнера.
Архив с программой
Пока готово процентов на 50 (частично написана вычитка eeprom из файла), но хотелось бы просто проверить сборку под Windows.
Код пишется на Qt (версия 5.4.2), исходники доступны на Github в ветке editor.
Просьба кому-нибудь, кто пользуется Windows, проверить, собирается ли в ней. Для сборки нужны библиотеки Qt и (необязательно, можно и из командной строки собирать) IDE QtCreator (идёт в комплекте). Для большей универсальности пробовать стоит, наверное, Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2), но можно и под Visual Studio (если установлена).
P.S. Установил Win7 в Virtualbox, там собрал. Вроде запускается (и на виртуальной WinXP тоже). Проверьте у себя, пожалуйста, запускается или нет, нормально ли отображаются шрифты и т.п. Функционально приложение ещё не доделано, даже сохранять пока результаты работы не умеет. Возможно, до конца выходных доделаю.
P.P.S. Добавлена возможность сохранения результата. Уже можно пользоваться, как минимум, для перевода текстовых меток и настроек аудиопроцессора. Настройки тюнера, добавление станций и прочее будет реализовано чуть позднее.
P.P.P.S. Добавлена возможность выбора и настроек FM-тюнера.
Архив с программой
Добавлено приложение для редактирования EEPROM.
Позволяет более удобным способом, нежели hex-редактором, редактировать EEPROM проекта. Только для варианта на ATmega32.
Вроде как все действительно нужные параметры уже поддерживает.
Настройка списка станций пока не реализована, но это (как и обучение пульту) можно и в рабочем режиме делать.
Исходники перемещены в основную ветку на Github, каталог editor.
Постоянная ссылка на сборку для Windows: архив на Dropbox.
Тестируем, отписываемся по поводу багов.
Позволяет более удобным способом, нежели hex-редактором, редактировать EEPROM проекта. Только для варианта на ATmega32.
Вроде как все действительно нужные параметры уже поддерживает.
Настройка списка станций пока не реализована, но это (как и обучение пульту) можно и в рабочем режиме делать.
Исходники перемещены в основную ветку на Github, каталог editor.
Постоянная ссылка на сборку для Windows: архив на Dropbox.
Тестируем, отписываемся по поводу багов.
Доброго вечера!
Хотел разобраться сам с нуля, но залип на подключение энкодера, в связи с чем предварительно сдаюсь и задаю вопрос: "Где найти исходники под мегу8+дисплей16*2+tda7439+rda5807+rc5? можно ссылочку?"
Хотел разобраться сам с нуля, но залип на подключение энкодера, в связи с чем предварительно сдаюсь и задаю вопрос: "Где найти исходники под мегу8+дисплей16*2+tda7439+rda5807+rc5? можно ссылочку?"
Всё там же на Github, в ветке m8. Только всё же лучше на ATmega32 делать, этот вариант пофункциональнее будет, да и поддерживается, в отличие от других.
Обязательно соберу на меге32! Но позже.Только всё же лучше на ATmega32 делать, этот вариант пофункциональнее будет, да и поддерживается, в отличие от других.
ПРоект на меге8 будет поддерживать экран 16*2 HD44780, подключенный через переходник на PCF8574? Или это глупый вопрос и все что весит через PCF8574 будет запускать одинаково?
По поводу веса не понял, а так да, библиотека для ks0066 написана так, что можно выбрать варианты 8бит, 4бит или же через PCF8574.
А МК же должен запускаться если не все подключено? скажем только экран?
В общем чтото у меня не получилось (((
В общем чтото у меня не получилось (((
Если прошиты правильные flash и eeprom и есть все нужные по схеме подтягивающие резисторы - должен запускаться.
eeprom собирается только вышеуказанной програмкой? или те, что есть в проекте bin-файлы в папке eeprom пойдут?
Не хочет прошивать eeprom. Точнее зашивает вроде, а верефицировать не может:
"avrdude: verification error, first mismatch at byte 0x0000
0x6c != 0x00
avrdude: verification error; content mismatch"
Не хочет прошивать eeprom. Точнее зашивает вроде, а верефицировать не может:
"avrdude: verification error, first mismatch at byte 0x0000
0x6c != 0x00
avrdude: verification error; content mismatch"
Программа работает только с eeprom для версии под ATmega32 (1кБайт). Для варианта на ATmega8 идут свои eeprom (512 байт), не совместимые по адресам, их можно править, если надо, только вручную hex-редактором.
Похоже, avrdude у Вас ничего не прошивает на самом деле. Либо не настроен, либо неисправен программатор, либо сам МК.
Если вдруг пользуетесь windows - там программ-прошивальщиков (правда, как правило, всего лишь оболочек для avrdude) достаточно. Посоветовать не могу, не пользуюсь.
Похоже, avrdude у Вас ничего не прошивает на самом деле. Либо не настроен, либо неисправен программатор, либо сам МК.
Если вдруг пользуетесь windows - там программ-прошивальщиков (правда, как правило, всего лишь оболочек для avrdude) достаточно. Посоветовать не могу, не пользуюсь.
Пользуюсь Linux, работаю в eclipse. Я думаю что всеже шьет, т.к. пробую залить проект по проще, все гуд, все включается. А здесь на экране по верхней строке квадраты и все. файл eeprom беру из соответствующей папки в проекте для меги8. Как его править в hex не очень понимаю...WiseLord писал(а): Похоже, avrdude у Вас ничего не прошивает на самом деле. Либо не настроен, либо неисправен программатор, либо сам МК.
Спойлер
avrdude -pm8 -cavrisp -P/dev/ttyUSB0 -b19200 -u -Uflash:w:/home/voffka/Загрузки/ampcontrol-m8/flash/ampcontrol_m8_pcf8574_tda7439_rda5807.hex:i -Ueeprom:w:/home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin:r -Ulfuse:w:0x24:m -Uhfuse:w:0xc1:mavrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x1e9307
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/home/voffka/Загрузки/ampcontrol-m8/flash/ampcontrol_m8_pcf8574_tda7439_rda5807.hex"
avrdude: writing flash (8046 bytes):
Writing | ################################################## | 100% 13.35s
avrdude: 8046 bytes of flash written
avrdude: verifying flash memory against /home/voffka/Загрузки/ampcontrol-m8/flash/ampcontrol_m8_pcf8574_tda7439_rda5807.hex:
avrdude: load data flash data from input file /home/voffka/Загрузки/ampcontrol-m8/flash/ampcontrol_m8_pcf8574_tda7439_rda5807.hex:
avrdude: input file /home/voffka/Загрузки/ampcontrol-m8/flash/ampcontrol_m8_pcf8574_tda7439_rda5807.hex contains 8046 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 7.35s
avrdude: verifying ...
avrdude: 8046 bytes of flash verified
avrdude: reading input file "/home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin"
avrdude: writing eeprom (512 bytes):
Writing | ################################################## | 100% 28.31s
avrdude: 512 bytes of eeprom written
avrdude: verifying eeprom memory against /home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin:
avrdude: load data eeprom data from input file /home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin:
avrdude: input file /home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin contains 512 bytes
avrdude: reading on-chip eeprom data:
Reading | ################################################## | 100% 5.28s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x6c != 0x00
avrdude: verification error; content mismatch
avrdude done. Thank you.
Собрал последнюю прошивку из ветки m8:
Запускаю в Proteus под wine - всё работает:

Используя PCF8574, Вы убедились, что на ножки A0/A1/A2 подан ноль? Или поправили соответственно в исходниках адрес PCF8574 на свой? Обычно на китайских переходниках есть соответствующие перемычки, которые для 000 надо снять, если не ошибаюсь.
P.S. Судя по выводу avrdude, flash пишется-читается нормально, а вот eeprom уже нет.
Попробуйте шить их не одной кучей, а по отдельности - сначала flash, потом eeprom, потом fuse.
Кстати, если подставите свои параметры программатора в Makefile, то сможете шить просто через "make flash", "make eeprom_en".
Спойлер
Код: Выделить всё
wiselord@wiselord /home/AVR/ampcontrol/src $ make AUDIOPROC=TDA7439 TUNER=RDA5807 WIRE=PCF8574
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/main.o main.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/i2c.o i2c.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/ds1307.o ds1307.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/fft.o fft.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/adc.o adc.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/input.o input.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/rc5.o rc5.c
mkdir -p obj/audio/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/audio/tda7439.o audio/tda7439.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/display.o display.c
mkdir -p obj/display/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/display/ks0066.o display/ks0066.c
mkdir -p obj/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/tuner.o tuner.c
mkdir -p obj/tuner/
avr-gcc -g -Wall -Werror -lm -Os -mcall-prologues -fshort-enums -ffunction-sections -fdata-sections -mmcu=atmega8 -DF_CPU=8000000L -DTDA7439 -DRDA5807 -DKS0066_WIRE_PCF8574 -c -o obj/tuner/rda5807.o tuner/rda5807.c
avr-gcc -g -Wall -Werror -mmcu=atmega8 -Wl,-gc-sections -o obj/ampcontrol_m8_pcf8574_tda7439_rda5807.elf obj/main.o obj/i2c.o obj/ds1307.o obj/fft.o obj/adc.o obj/input.o obj/rc5.o obj/audio/tda7439.o obj/display.o obj/display/ks0066.o obj/tuner.o obj/tuner/rda5807.o -lm
mkdir -p flash
avr-objcopy -O ihex -R .eeprom -R .nwram obj/ampcontrol_m8_pcf8574_tda7439_rda5807.elf flash/ampcontrol_m8_pcf8574_tda7439_rda5807.hex
./size.sh obj/ampcontrol_m8_pcf8574_tda7439_rda5807.elf
AVR Memory Usage:
Program: 8040 bytes (.text + .data)
Data: 526 bytes (.data + .bss)
wiselord@wiselord /home/AVR/ampcontrol/src $Используя PCF8574, Вы убедились, что на ножки A0/A1/A2 подан ноль? Или поправили соответственно в исходниках адрес PCF8574 на свой? Обычно на китайских переходниках есть соответствующие перемычки, которые для 000 надо снять, если не ошибаюсь.
P.S. Судя по выводу avrdude, flash пишется-читается нормально, а вот eeprom уже нет.
Попробуйте шить их не одной кучей, а по отдельности - сначала flash, потом eeprom, потом fuse.
Кстати, если подставите свои параметры программатора в Makefile, то сможете шить просто через "make flash", "make eeprom_en".
- Вложения
-
- test_m8.7z
- (297.78 КБ) 279 скачиваний
попробовал прошить отдельно только eeprom, все то же самое не хочет шить...WiseLord писал(а):
Попробуйте шить их не одной кучей, а по отдельности - сначала flash, потом eeprom, потом fuse.
Спойлер
sudo avrdude -pm8 -cavrisp -P/dev/ttyUSB0 -b19200 -u -Ueeprom:w:/home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin:ravrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x1e9307
avrdude: reading input file "/home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin"
avrdude: writing eeprom (512 bytes):
Writing | ################################################## | 100% 28.32s
avrdude: 512 bytes of eeprom written
avrdude: verifying eeprom memory against /home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin:
avrdude: load data eeprom data from input file /home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin:
avrdude: input file /home/voffka/Загрузки/ampcontrol-m8/eeprom/eeprom_en.bin contains 512 bytes
avrdude: reading on-chip eeprom data:
Reading | ################################################## | 100% 5.28s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x6c != 0x00
avrdude: verification error; content mismatch
Из eeprom параметры разные читаются. Если не вычитаются - то даже не знаю, может и не работать. Хотя в Proteus и запускается, но с разными глюками отображения, так как не вычитываются текстовые строки.
Попробуйте скоростью (-B) поиграть в параметрах avrdude, может быть, зашьётся на меньшей.
Попробуйте скоростью (-B) поиграть в параметрах avrdude, может быть, зашьётся на меньшей.
Не удался фокус. Хоть как то реагирует на чип только на 19200.... Может какой другой программатор собрать? У меня щас, стыдно сказать, STK500, сделанный из ARDUINO NANO...WiseLord писал(а):Попробуйте скоростью (-B) поиграть в параметрах avrdude, может быть, зашьётся на меньшей.
Что я еще могу не так делать? В прошлом проекте, я переделал минимум чтобы запустить TDA7439, все прекрасно шьется, все трудится, экран работает, звук идет.
Он когда шьет eeprom, такое ошущение, что запись не идет, светодиоды на ардуине моргают как то не так. Зато когда avrdude доходит до верификации eeprom то со светодиодами все гуд. Запрещается(разрешается) ли гдето запись epprom?
Пока игрался, походу, упалил 2 МК. Перестали шиться. В запасе есть еще мега328, по идее аналогичная?
Но странно что на экране в квадратах верхняя строка... В режиме ожидания у проекта на экране время должно показывать?


