Перейти к содержанию

Mp3 Плеер Своими Руками


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Это прикол? Где номиналы во первых, во вторых зачем мне повторять за кем то? Так я ничего не научусь. Спасибо всё равно вам за старания)

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Где номиналы во первых
Ну поскольку схема цифровая точно повторять номиналы не требуется, достаточно прикинуть. Какие резисторы поставить к светодиодам посчитать элементарно, подтяжка SPI тоже описана, ну и так далее. А вот что в этой схеме плохо так это непонятно что за контроллер U1 (PIC, 8051? я с ними дела не имел поэтому по названиям выводов не опознаю) и главное на него нет исходного кода прошивки, без чего повторять бессмысленно и невозможно.

С другой стороны в одном из журналов Радио тоже была схема плеера, с номиналами и файлом прошивки. Правда, тоже без исходных кодов, поэтому толку от нее тоже немного.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Вот такая беда: подаю 6 вольт на стабилизатор, должно на выходе быть 5 вольт. В результате ничего нет и он сильно грееться. Что делать? Atmega128 требует 5 вольт, не меньше 4.5в.

post-157862-0-45430900-1346418823_thumb.jpg

Ссылка на комментарий
Поделиться на другие сайты

Они бывают какие-то странные.

Мне недавно понадобилось на 3.3в получить. Впаял какой-то, выдранный из CD-ROM-а, написано было 3.3в. Припаял, подал на вход +5в от USB.

На выходе 1.8в :D .

Правда, может оказаться, что в Вашем случае 6 вольт на входе ему мало. Попробуйте подать 9 или 12, так, ради эксперимента.

Например, LM317 требует минимум на 2в больше, чем "заданное" напряжение выхода.

Если подача 9 вольт (например) поможет, то подбирайте стабилизатор.

Или же купите ATMega128A, она на 3.3в@16MHz штатно работает.

Изменено пользователем hd44780
Ссылка на комментарий
Поделиться на другие сайты

Куплю Atmega128A. Уже поставил IAR AVR 5.50, учусь писать потихоньку на C. Пока сделал программу для того чтоб просто горел светодиод.

Ах, да, посоветуйте программатор пожалуйста)

Изменено пользователем PLAY_WORKER
Ссылка на комментарий
Поделиться на другие сайты

http://www.lancos.com/prog.html программатор через com-port

http://radioelektr.ru/programmator-na-ft232rl-bez-upravlaushego-mk/ эмуляция com-port через usb

Софтовая часть программаторов там же.

Ватт, Ватт, Киловатт...

Ссылка на комментарий
Поделиться на другие сайты

Ну вот.... Купил уже впаял, Atmega128A. Поставил два кондёра по питанию по 0,1мкф SMD. Питание 2 пальчиковые батарейки. Кварц 16 мгц с обвязкой кондёров по 36 пф. и SMD светодиод на порте А2. Установил IAR, учу язык. Написал программу для того чтоб зажечь светодиод, компилит без проблем. Но на всякий случай можете проверить код?

#include "iom128A.h"

int main( void )

{

PORTA=0x00; //Выставляем все выходы порта A на 0, то есть, выключаем весь порт A

DDRA= (1<<2); //Делаем порт A2, как выход, чтобы на выходе порта было напряжение 3В

while (1) //Организовываем бесконечный цикл

{

PORTA=1; //Включаем светодиод на 2 выходе порта A

};

}

Изменено пользователем PLAY_WORKER
Ссылка на комментарий
Поделиться на другие сайты

Не уверен что так правильнее, но мне кажется логичным сначала выставлять DDR и только потом PORT. Включать светодиод в цикле - очень интересный программерский ход, хоть бы _delay_ms(1000); всунул и выключение. Выставление значений в порты ввода-вывода реализовано в трех местах по-разному, причем последний хотя и рабочий, но не наглядный, лучше заменить на PORTA |= 0b00000010; или PORTA |= (1<<1); (сдвиг должен быть на 1 бит, на 2 адресует не PA2 а PA3) или PORTA |= 0x02; (казалось бы полная аналогия, но шестнадцатеричная система все-таки чуть нагляднее).

Попробовал скомпилировать AVRStudio, пошло с заменой #include "iom128a.h" на #include <avr/io.h>, кстати угловые кавычки здесь точно логичнее, потому что берется из стандартного пути а не из текущей папки; с подключаемым заголовком не уверен что в IAR'e должно быть.

#include <avr/io.h>      // подключение общего для I/O заголовка
#include <util/delay.h>  // это только для _delay_ms()

#define OUT_PORT PORTA   // Это очень не обязательный трюк, но иногда помогает переносить функциональность на любой порт.
#define OUT_DDR DDRA     // Если надо в одном месте меняется например на PORTC и мигается на нем.
#define OUT_NUM 1        // К сожалению я не знаю как реализовать аналог #define OUT_PORT A,1. Может кто подскажет

int main( void ){
OUT_DDR |= (1<<OUT_NUM); // Сначала устанавливаем направление ноги на вывод.
OUT_PORT |= (1<<OUT_NUM);// И значение по умолчанию, в данном случае не важно каким конкретно оно будет
while (1){
 OUT_PORT &= ~(1<<OUT_NUM);// Обнуляем выбранный порт, скомпилируется это все как cbi PORTA,1, без лишних сдвигов, можно не пугаться.
 _delay_ms(1000);          // Задержка 1 сек
 OUT_PORT |= (1<<OUT_NUM); // Включаем светодиод обратно
 _delay_ms(1000);          // Вообще использование таких задержек не особо приветствуется, но для такой простой программы сойдет.
};
return 0;                  // если уж обозвали main функцией хорошо бы возвращать значение, хоть оно ничем и не используется.
} 

Код проверен в AVRStudio и Proteus. Работает.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Если проблемма в том что адресует на порт A3, то как адресовать на A2? Допустим я не много не понимаю как работать не с целой кучей выводов определённой буквы, а именно с одним выводом? Если можете обьясните пожалуйста как это делаеться.

P.S на delay_ms реагирует IAR с предупреждением.

Ссылка на комментарий
Поделиться на другие сайты

Если проблемма в том что адресует на порт A3, то как адресовать на A2? Допустим я не много не понимаю как работать не с целой кучей выводов определённой буквы, а именно с одним выводом?

Честно говоря я не понял, кто Вам адресует A3? Товарищ @COKPOWEHEU в своём примере ногой PA1 рулит :D .

Вы в посте выше ошиблись:

DDRA= (1<<2); //Делаем порт A2, как выход, чтобы на выходе порта было напряжение 3В

.....

PORTA=1; //Включаем светодиод на 2 выходе порта A !!!Дрыгаете ногой PA0, а не A2!!

Для ноги 2:

PORTA |= (1<<2);

Замучились Вы с иксами, запутались в нулях ... ©

Вообще, в WinAVR-ах и атмел студиях только через AND/OR и маски:

PORTA |= 0x02; // По CVAVR-овски - PORTA.2 = 1

PORTA &= ~0x04; // По CVAVR-овски - PORTA.3 = 0

Там вроде макрос какой-то есть для облегчения жизни, кажется _BV, не уверен ...

В иаре по-моему также.

P.S на delay_ms реагирует IAR с предупреждением.

delay_ms это CVAVR. В WinAVR и в студии это _delay_ms (ИМХО, в WinAVR она какая-то больная - задержки как пьяные, в студии вроде нормальная :) ).

В IAR сами ищите, не знаю, не занимался им.

Если сильно надо, ищите в инете avrlib (валяется ещё где-то), у них эта функция через таймер сделана, проверял, работает.

Но это изделие древнее уже, хотя рабочее вполне, рассчитано на WinAVR.

Изменено пользователем hd44780
Ссылка на комментарий
Поделиться на другие сайты

#include <iom128A.h>

int main( void )

{

PORTA |= (1<<2); //Выставляем выход порта A2 на 0, то есть, выключаем порт A2

DDRA= (1<<2); //Делаем порт A2, как выход, чтобы на выходе порта было напряжение 3В

while (1) //Организовываем бесконечный цикл

{

PORTA |= (1<<2); //Включаем светодиод на выходе порта A2

};

}

Вот что сделал, теперь то я направлен на порт A2. Компилируеться успешно. Вопрос: зачем палочка перед знаком равенства? Он и без неё компилирует. И вообше судя по коду можно уже пытаться заливать это в контроллер? И какие фузы ставить?

Ссылка на комментарий
Поделиться на другие сайты

Вот что сделал, теперь то я направлен на порт A2.

Да.

Это

PORTA |= (1<<2); //Выставляем выход порта A2 на 0, то есть, выключаем порт A2

ошибка

Чтобы сбросить в ноль, надо PORTA &= ~(1<<2);

зачем палочка перед знаком равенства? Он и без неё компилирует.

Эта "палочка" - лог. ИЛИ. Почитайте учебник по языку Си :D .

можно уже пытаться заливать это в контроллер? И какие фузы ставить?

Можно. А фузы зависят от Вашего кварца ... Я не знаю, какой он.

Ссылка на комментарий
Поделиться на другие сайты

зачем палочка перед знаком равенства? Он и без неё компилирует.
Чтобы изменить только один бит а не весь байт. Мало ли где еще этот порт используется.
ИМХО, в WinAVR она какая-то больная - задержки как пьяные, в студии вроде нормальная :)
Точно? У Студии нет своего компилятора Си и она использует WinAVR.
можно уже пытаться заливать это в контроллер? И какие фузы ставить?
Значит на внешний кварц, задержка минимальная (ждать замучаетесь :blink: ) SPIEn и RSTDisable (кстати не знаю а есть ли оно в 128-й меге) НЕ ТРОГАТЬ! Boden можно включить, но для тестовой программы не обязателен. Что там еще есть не помню, но догадаться можно. Чем программировать будете? Некоторые программы сами генерируют байты фузов на основе выбранных настроек (та же частота, порог Bod'a) а некоторым надо давать уже готовый файл (самое простое - калькулятор фузов AVR, самое правильное - сделать самому покурив даташит).

Да, чуть не забыл, для функции задержки да и на всякий случай стоит указать компилятору тактовую частоту контроллера либо в настройках либо через #define F_CPU=16000000

Честно говоря я не понял, кто Вам адресует A3? <...>

PORTA=1; //Включаем светодиод на 2 выходе порта A !!!Дрыгаете ногой PA0, а не A2!!

Ой позор мне, проглядел, ваша правда.
Можно. А фузы зависят от Вашего кварца ... Я не знаю, какой он.
Ну для начала можно фузы не трогать, по умолчанию вроде от встроенного RC-генератора на 1 МГц работает (в даташите не уточнял). Вот разберетесь с программированием, палочками и закорючками перед равно, понадобится делать рабочую прошивку а не мигалку, тогда и будете разбираться. Просто новички слишком часто отключают SPI программирование (либо SPIen либо RSTDisable либо тактовый генератор либо еще что) а параллельный программатор все-таки вряд ли есть да и выпаивать многоножку та еще нанотехнология, так что пока не понадобилось лучше и не трогать.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

По-моему, пойдут любые, например, 1N4148.

Хотя можно вообще без них. У меня PonyProg, вообще без резюков, диодов и прочего.

Угробил 3 проца за 10 лет, и то, не знаю чем именно они угробились :crazy: .

Ссылка на комментарий
Поделиться на другие сайты

А можно схемку такого простого пронрамматора? А то uniprof не видит Atmega128A. Питаю от 5 вольт блока питания, кварц 16мгц, кондёры по 33пф на кварце. Прозванивал всё впорядке. Резистор с резет на минус стоит 11 кОм.

Ссылка на комментарий
Поделиться на другие сайты

Резистор с резет на минус стоит 11 кОм.
На минус?! На плате контроллера RESET должен быть подтянут к питанию а не к земле.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...