Страница 1 из 5

Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 16:40:56
aurifer
Добрый день всем. Вопрос собственно не столько о статье( http://radiokot.ru/circuit/digital/game/32/ ) сколько о схеме, которую применил автор: http://elm-chan.org/works/sd8p/report.html

Можно ли изменить прошивку для attiny45?

Захотел я собрать музыкальную шкатулку на основе этой схемы, но не смог найти attiny85. Даже в ближайших городах. Заказал в Москве, но почта россии как всегда "оказалась на высоте". И сейчас посылка задерживается... Хотел сделать подарок любимой девушке на день влюбленных, но теперь не успеваю:-( Плата уже готова, схема спаяна, нехватает только контроллера...
Помогите кто может с прошивкой. Сам я не силён в программировании, только учусь.

Re: Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 16:49:14
blackx
Для Attiny45 ничего и менять не придется, если прошивка влезает в 4 килобайта и не использует более 256 байт RAM. А если памяти не хватает - то увы, очень врядли вы сможете это исправить.

ЗЫ. Не поленился, скачал прошивку и посчитал размер. Там чуть меньше 7 килобайт. Облом :(

Re: Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 17:11:45
aurifer
Дело в том, что на другом сайте писали что там можно что-то выкинуть из прошивки, что не используется. Но я там ничего не понял. И к тому же в оригинальной статье упоминается attiny45. И еще, я так понял, в прошивке содержатся значения фузов.(этот момент я вообще не понял).

Re: Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 19:36:19
blackx
По поводу выкинуть - с трудом верится, но признаюсь я не сильно код курил.
Да, в HEX-файл зашиваются фьюзы (описаны в main.c), их прошивающая программа должна определить и зашить прошивку в МК вместе с фьюзами. А если программа это не умеет, то руками надо.

Re: Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 19:52:38
aurifer
Откопал перевод оригинальной статьи http://radioded.ru/skhema-na-mikrokontr ... e-attiny85 где в комментах написано следующее:
"В исходнике куча кода для работы с дисплеем (которого я что-то не вижу) если его выкинуть то получится вполне легковесная прошивка которая без проблем влезет в 45-ю"
Сейчас сижу читаю комментарии и потом форум там же, может чего прояснится.

Re: Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 19:55:10
aurifer
Проблема для меня в том, что я более или менее могу пользоваться только CVavr. А он эти исходники не совсем понимает.

Re: Японский WAV-плеер… по-русски

Добавлено: Ср фев 06, 2013 21:09:25
blackx
Ладно, попробую вам помочь чуть попозже, может получится собрать подходящий hex.

Re: Японский WAV-плеер… по-русски

Добавлено: Чт фев 07, 2013 13:01:19
SSMix
aurifer писал(а): "В исходнике куча кода для работы с дисплеем (которого я что-то не вижу) если его выкинуть то получится вполне легковесная прошивка которая без проблем влезет в 45-ю"
Я то же не видел в исходниках кода для работы с дисплеем. Даже и не знаю, что можно выкинуть из исходника для уменьшения объёма кода в 2 раза! По-моему, затея бесполезная.

Re: Японский WAV-плеер… по-русски

Добавлено: Чт фев 07, 2013 16:07:55
Дрон
http://www.getchip.net/posts/087-attiny ... ng-device/Может эта конструкция Вам поможет с мыслями?

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 10:08:52
aurifer
Спасибо всем, кто откликнулся. Про 45-ую подумал исходя из некоторых фраз на разных сайтах, но если никто так и не подтвердил такую возможность-значит не судьба. Тем более что 85-ая уже на подходе, надеюсь успею...

Возник ещё один вопрос: Как и чем из исходников Чана скомпилировать обычный hex, без фьюзов. Просто пользуюсь CVAVR, и он не понимает такие прошивки. И далее вопрос. Открыл файл main.c там есть такой кусок кода:

Код: Выделить всё

#ifndef MODE
#error Wrong make file.
#endif
#if   MODE == 0	/* Single output */
FUSES = {0xE1, 0xDD, 0xFF};	/* Fuse bytes for mono: Low, High and Extended */
#else			/* Dual output */
FUSES = {0xE1, 0x7D, 0xFF};	/* Fuse bytes for stereo and mono-HR: Low, High and Extended (*HVS mode only*) */
#endif
/* This is the fuse settings of this project. The fuse data will be included
in the output hex file with program code. However some old flash programmers
cannot load the fuse bits from hex file. If it is the case, remove this line
and use these values to program the fuse bits. */
Какую именно строчку нужно убрать, чтобы сделать hex без фьюзов? И как расшифровать данные здесь фьюзы?

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 10:37:32
Дрон
aurifer,насколько я понял из приведённого Вами куска кода,это не биты конфигурации мк,а переключатель стерео -моно,поэтому если эти строки удалить то не услышите свою мелодию.Попробуйте авр студию.

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 10:41:33
aurifer
И несколько вопросов к "SSMix", да, и ко всем тоже.

Вы делали свою прошивку на основе последней версии Чана (октября 2, 2012) или более ранней? Хочется ваш принцип управления и новые изменения от Чана.

Я так понимаю, в вашем проекте фьюзы выставляются обычным образом?
И объясните пожалуйста как правильно понять эти строки:

Код: Выделить всё

SUT10=00             14CK + 1K (1024) CK + 4 ms, BOD enabled
  CKSEL3..0=0001       High Frequency PLL Clock Operating Modes
  BODLEVEL2...0=101    Brown-Out Detection = 2.7V
Почему несколько нулей, или почему такая запись? С остальными понятно, либо да, либо нет.

"AVR Studio" и "Atmel Studio" это одно и тоже? Если да, тогда почему Atmel Studio не видит ИМЕННО проект, а только ОТДЕЛЬНЫЕ файлы?

И наконец, почему у вас в папке несколько файлов hex? Какой из них зашивать? И как правильно использовать прошивку, которую вы дали в текстовом виде?(применительно к CVAVR).
Спасибо, что смогли всё дочитать :)

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 10:50:03
aurifer
Дрон писал(а):это не биты конфигурации мк,а переключатель стерео -моно,поэтому если эти строки удалить то не услышите свою мелодию.
А как тогда понимать эту фразу:

"This is the fuse settings of this project. The fuse data will be included
in the output hex file with program code. However some old flash programmers
cannot load the fuse bits from hex file. If it is the case, remove this line
and use these values to program the fuse bits."

"Это параметры фьюзов этого проекта. Фьюз данные будут включены в выходной файл hex с кодом программы. Однако некоторые старые программаторы не смогут загрузить фьюзы из hex файла. Если это так, удалите эту строку и используйте эти значения, чтобы запрограммировать фьюзы."
Дрон писал(а):Попробуйте авр студию.
Пробовал Atmel Studio, но он видит только ОТдельные файлы(или я не догоняю). Вообще, как там компилировать проект?

Вот полностью исходники Чана(2 окт 2012).
sd8psrc_исходник.rar
(194.1 КБ) 723 скачивания

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 10:52:34
Дрон
SUT10=00
CKSEL3..0=0001
Почему несколько нулей, или
почему такая запись?
SUT1_0,SUT0_0;SKSEL3_0,SKSEL2_0,SKSEL1_0,SKSEL0_1 и тп или вы о чёмто другом?атмел студией не пользовался,

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 10:55:42
aurifer
Так я спрашиваю, почему именно так "SUT10=00 " написано, а не просто "SUT1_0" Честно говоря я так и не понял как правильно выставить фьюзы, я понимаю только "запрограммировать" и "оставить как есть"(или ноль или единица)
Сильно не пинайте...

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 11:06:26
Дрон
aurifer,написать можно и так и так это одно и тоже,0_запрограмировать,1_стереть.например бешанной лошадь надо ставить галочки как я расписал,синой прог(я от неё тащусь) такой гемор не нужен .

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 11:13:18
blackx
Отвечу я.
FUSES = {0xE1, 0xDD, 0xFF};
Таким образом задаются именно фьюзы МК, которые выставляются программатором (если он это поддерживает). Есть три фьюз байта -
lfuse, hfuse и efuse - low, high и extended. Они определяют вообще все фьюз биты МК.
Насколько я знаю, они заносятся в выходной *.elf файл, в hex не попадают (это фича avrgcc).
Список фьюзов можно посмотреть в файлах avr-gcc, вроде тут WinAVR/avr/include/avr. Подробнее можно почитать в мануале http://www.nongnu.org/avr-libc/user-man ... _fuse.html.
Почему в коде просят удалить эти строки, если программатор не поддерживает фузы не знаю. Придется как-то руками их заносить. В avrdude например это просто конструкциями типа hfuse:w:0xDD:m или lfuse:w:0xE1:m.
И наконец, почему у вас в папке несколько файлов hex?
Разные hex-ы собираются разными makefile-ами. Они различаются только установкой значения MODE (0, 1, 2, 3) при компиляции. Про них нашлось вот что:
Mode 0 : Level trigger
Plays a sound file corresponds to the input code in auto-repeat. When the input code is changed, the sound also be changed. When the input goes off(0), the audio output is stopped.
Mode 1 : Level trigger (sustained)
Same as mode 0 but the file is played until end of the file and then stopped when the input goes off.
Mode 2 : Edge trigger
Plays a sound file corresponds to the input code once. Any code change while a sound will be ignored.
Mode 3 : Edge trigger (re-triggerable)
Same as mode 2 but the code change is accepted while the sound. To re-rtigger with the same code, return 0 and input the code again.
ЗЫ. Почему-то сегодня код не хочет собираться через make :( наверное у меня карма испортилась

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 12:53:46
aurifer
Ладно, пока я всё это переварю, изучу... Обещаю разобраться.
Расскажите пожалуйста пошагово как мне прошить контроллер этими прошивками. Как скомпилировать ОБЫЧНЫЙ hex файл и записать обычным образом фьюзы?
Помогите пожалуйста.

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 13:45:25
blackx
А что у вас за программатор? Как скомпилить тут я не знаю, тут асм и Си вперемешку... пользуйтесь приложенными файлами Makefile для нужного режима. Для сборки нужна утилита make, которая входит в состав Cygwin (или msys):

$make -f Makefile_hr clean

затем

$make -f Makefile_hr

это запускает сборку hex-а.

Re: Японский WAV-плеер… по-русски

Добавлено: Сб фев 09, 2013 13:53:25
aurifer
А где можно почитать подробнее? Программатор stk500.