http://radiokot.ru/circuit/digital/game/51/
К сожалению, ссылку в начале темы я исправить не могу.
Поправил. В будущем можно пользоваться кнопкой "!".hax писал(а):Статью на Радиокоте Max восстановил,
http://radiokot.ru/circuit/digital/game/51/
К сожалению, ссылку в начале темы я исправить не могу.
Можете посмотреть мою репликацию этой схемы. Особенно исходный код. Мне удалось получить нормальное качество при 16MHz, даже на 8 можно слушать. Основная идея - временнОе микширование, а не простое суммирование с нормированием. На слух, конечно заметно разницу, но не сильно, зато громкость значительно подрастает.alex68md писал(а):, ведь при 8мгц батареи на дольше хватит или нет
Код: Выделить всё
#include "melody.h"
//Player frequency=44100
//Player minimum channels count =3
const flash TPlayerStateChange s_melody_events[11] = {
{ 33, 272 }, //33 это А2 //272 похоже на время звучания ноты умноженное на 2 в миллисекундах
{ 45, 9 }, //45 это А3 //9 это наверное канал
{ 0, 272 }, // что означает 0 не понимаю. 272- время
{ 57, 8 }, //57 это А4
{ 0, 273 },
{ 33, 9 }, //А2
{ 45, 10 }, //А3
{ 0, 272 },
{ 57, 8 }, //А4
{ 0, 9 },
{ 0, 0 }
};
const flash TMelody s_melody = {
s_melody_events
};Код: Выделить всё
typedef struct
{
//highest bit is highest for channel index
uint8_t m_noteNumber;
///15-3 bits - Delta value, 2,1,0 bits - channel index
uint16_t m_delta;
} TPlayerStateChange;
Код: Выделить всё
delta = s_playerState.m_pMelody->m_delta;
noteNumber = s_playerState.m_pMelody->m_noteNumber;
channelIndex = delta & 0x7;
delta >>= 3;
if ( delta == 0 )
{
#asm("cli")
s_playerState.m_pMelody = NULL;
Player_Finished();
return;
}
channelIndex |= ( noteNumber >> (7 - 3 ) ) & 8;
noteNumber &= 0x7f;
А даташиты нынче немодно читать? Скачайта даташит на мегу8, там прямо нарисовано, как подключать кварц. И нет, без конденсаторов нельзя.proektor писал(а):Как правильно подключить кварц? Можно ли это делать без конденсаторов?