Не обычный MP3 проигрыватель
Re: Не обычный MP3 проигрыватель
http://www.getchip.net/posts/087-attiny ... ng-device/ Вот это уже на много ближе к теме теперь как мне подать сигнал на контакты от кнопки Select track при нажатии кнопки к примеру 7 чтобы включить седьмой трек 000000000000111111100000000000000 или 12 0000000000111111111111000000000 может есть стандартная логика для этого.
Когда кажется что ты все понял, оказывается что ты и половины не знаешь!
- Реклама
-
mrFox
- Нашел транзистор. Понюхал.
- Сообщения: 190
- Зарегистрирован: Пт сен 21, 2007 17:53:23
- Откуда: Зарайск
Re: Не обычный MP3 проигрыватель
Масяня писал(а):http://www.getchip.net/posts/087-attiny2313-sd-card-talking-device/ Вот это уже на много ближе к теме теперь как мне подать сигнал на контакты от кнопки Select track при нажатии кнопки к примеру 7 чтобы включить седьмой трек
по первой ссылке есть исходник - берешь мегу16, написать обработку клавиатуры и компилишь
ИС-пытатель писал(а):Опять-таки, stm какой серии? )) Сейчас в старших сериях есть такие штуки, как DSP, DMA, FPU и т.д.
stm32f103
гм слегка ошибся для работы требуется память 24к
http://we.easyelectronics.ru/STM32/programmnyy-dekoder-mp3-na-stm32f10x-demoproekt.html
Re: Не обычный MP3 проигрыватель
вот написал мои первые буковки в сторону программирования AVR посмотрите это включит мне 3 песню в бешеном плеере с тактовой кнопкой типа сколько раз нажал такая и песня играть будет оказывается что писать не так уж и трудно видимо главное это начать. 
#include <mega8.h>
#include <delay.h>
// Declare your global variables here
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0b00000001;
DDRC=0b00000010;
PORTD=0x00;
DDRD=0x00;
while (1)
{
if (PINC.0=0) {
PORTC.1=1;
delay_ms (100)
PORTC.1=0;
PORTC.1=1;
delay_ms (100)
PORTC.1=0;
PORTC.1=1;
delay_ms (100)
PORTC.1=0;
};
} ;
}
#include <mega8.h>
#include <delay.h>
// Declare your global variables here
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0b00000001;
DDRC=0b00000010;
PORTD=0x00;
DDRD=0x00;
while (1)
{
if (PINC.0=0) {
PORTC.1=1;
delay_ms (100)
PORTC.1=0;
PORTC.1=1;
delay_ms (100)
PORTC.1=0;
PORTC.1=1;
delay_ms (100)
PORTC.1=0;
};
} ;
}
Когда кажется что ты все понял, оказывается что ты и половины не знаешь!
Re: Не обычный MP3 проигрыватель
Да, неработающие программы писать вообще легче лёгкого.
Re: Не обычный MP3 проигрыватель
Эх по чему не работает что не так написал
Когда кажется что ты все понял, оказывается что ты и половины не знаешь!
- Реклама
Re: Не обычный MP3 проигрыватель
Ну а если так обязанно работать.
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0b00111110;
DDRC=0b00000001;
PORTD=0x00;
DDRD=0x00;
while (1)
{
if (PINC.1==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.2==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.3==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.4==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.5==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
};
}
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0x00;
DDRB=0x00;
PORTC=0b00111110;
DDRC=0b00000001;
PORTD=0x00;
DDRD=0x00;
while (1)
{
if (PINC.1==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.2==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.3==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.4==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
if (PINC.5==0) {
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
delay_ms(500);
PORTC.0=1;
delay_ms(500);
PORTC.0=0;
};
};
}
Когда кажется что ты все понял, оказывается что ты и половины не знаешь!
Re: Не обычный MP3 проигрыватель
как можно имитировать сигнал заглавных букв поданный через UART
я только до такого додумался будет ли работать не знаю.
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0b11111111;
DDRB= 0x00;
PORTC=0b00111111;
DDRC= 0x00;
PORTD=0b01111111;
DDRD= 0b10000000;
while (1)
{
if (PINB.0==0) //Иммитируем сигнал (A)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(500);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.1==0) //Иммитируем сигнал (B)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(400);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.2==0) //Иммитируем сигнал (C)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(400);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.3==0) //Иммитируем сигнал (D)//
{
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.4==0) //Иммитируем сигнал (E)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.5==0) //Иммитируем сигнал (F)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.6==0) //Иммитируем сигнал (G)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(300);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.7==0) //Иммитируем сигнал (H)//
{
PORTD.7=0;
delay_us(400);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.0==0) //Иммитируем сигнал (I)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.1==0) //Иммитируем сигнал (J)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.2==0) //Иммитируем сигнал (K)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.3==0) //Иммитируем сигнал (L)//
{
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.4==0) //Иммитируем сигнал (M)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.5==0) //Иммитируем сигнал (N)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(300);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.0==0) //Иммитируем сигнал (O)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(400);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.1==0) //Иммитируем сигнал (P)//
{
PORTD.7=0;
delay_us(500);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.2==0) //Иммитируем сигнал (Q)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.3==0) //Иммитируем сигнал (R)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.4==0) //Иммитируем сигнал (S)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.5==0) //Иммитируем сигнал (T)//
{
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.6==0) //Иммитируем сигнал (U)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
};
};
я только до такого додумался будет ли работать не знаю.
#include <mega8.h>
#include <delay.h>
void main(void)
{
PORTB=0b11111111;
DDRB= 0x00;
PORTC=0b00111111;
DDRC= 0x00;
PORTD=0b01111111;
DDRD= 0b10000000;
while (1)
{
if (PINB.0==0) //Иммитируем сигнал (A)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(500);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.1==0) //Иммитируем сигнал (B)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(400);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.2==0) //Иммитируем сигнал (C)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(400);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.3==0) //Иммитируем сигнал (D)//
{
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.4==0) //Иммитируем сигнал (E)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.5==0) //Иммитируем сигнал (F)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.6==0) //Иммитируем сигнал (G)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(300);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINB.7==0) //Иммитируем сигнал (H)//
{
PORTD.7=0;
delay_us(400);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.0==0) //Иммитируем сигнал (I)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.1==0) //Иммитируем сигнал (J)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.2==0) //Иммитируем сигнал (K)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.3==0) //Иммитируем сигнал (L)//
{
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.4==0) //Иммитируем сигнал (M)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PINC.5==0) //Иммитируем сигнал (N)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(300);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.0==0) //Иммитируем сигнал (O)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(400);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.1==0) //Иммитируем сигнал (P)//
{
PORTD.7=0;
delay_us(500);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.2==0) //Иммитируем сигнал (Q)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.3==0) //Иммитируем сигнал (R)//
{
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.4==0) //Иммитируем сигнал (S)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(200);
PORTD.7=0;
delay_us(200);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.5==0) //Иммитируем сигнал (T)//
{
PORTD.7=0;
delay_us(300);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
if (PIND.6==0) //Иммитируем сигнал (U)//
{
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(100);
PORTD.7=0;
delay_us(100);
PORTD.7=1;
delay_us(1000);
};
};
};
Когда кажется что ты все понял, оказывается что ты и половины не знаешь!
Re: Не обычный MP3 проигрыватель
Не знаю, может уже поздно, но здесь реализованы все хотелки -
http://www.dfrobot.com/wiki/index.php/D ... KU:DFR0299
http://ru.aliexpress.com/item/Mini-MP3- ... 86935.html
http://www.dfrobot.com/wiki/index.php/D ... KU:DFR0299
http://ru.aliexpress.com/item/Mini-MP3- ... 86935.html
Re: Не обычный MP3 проигрыватель
Доброго времени суток!
Я тут на досуге пораскинул мозгами и пришёл к выводу, что отстал от жизни, а точнее, от её прогресса. Застрял на транзисторно-микросхемном аналоговом уровне, а хотелось бы залезть в микроконтроллеры.
Появилась идея сделать MP3 дистанционный дверной звонок.
Заказал в китае MP3 модуль WTV020-SD-16P (даташит).
И решил управлять этим модулем микросхемой atmega8 (даташит)
Пока это всё барахло идёт из китая, решил набросать логику работы и примерную схему... и тут же наткнулся на препятствие: мега питается от 5 V (в сожалению, заказал без буквы L в конце маркировки), а модуль MP3 рассчитан на напряжение 3.3 V. Ладно, с питанием я разберусь, благо, стабилизаторы есть. Но что делать с сигналами?
Грубо говоря, когда на вход меги подаётся сигнал, на MP3 модуль должна податься серия импульсов, точнее серия низких уровней, т.е. по умолчанию на выходе меги должны быть высокие уровни, т.е. 5 V. Но от 5 V MP3 модулю наверняка станет плохо.
Скажите, пожалуйста, как грамотно согласовать их сигналы? На ум приходит только использование делителей из резисторов в связях между мегой и mp3 модулем. Или можно как-то программно заставить мегу выдавать не 5, а 3.3V?
И другой вопрос: выход "Busy" с модуля, тоже 3.3V нужен для обработки сигналов в меге. Хватит ли 3.3V, чтобы мега поняла, что это логическая единица? Или как программно заставить её понять это?
Я тут на досуге пораскинул мозгами и пришёл к выводу, что отстал от жизни, а точнее, от её прогресса. Застрял на транзисторно-микросхемном аналоговом уровне, а хотелось бы залезть в микроконтроллеры.
Появилась идея сделать MP3 дистанционный дверной звонок.
Заказал в китае MP3 модуль WTV020-SD-16P (даташит).
И решил управлять этим модулем микросхемой atmega8 (даташит)
Пока это всё барахло идёт из китая, решил набросать логику работы и примерную схему... и тут же наткнулся на препятствие: мега питается от 5 V (в сожалению, заказал без буквы L в конце маркировки), а модуль MP3 рассчитан на напряжение 3.3 V. Ладно, с питанием я разберусь, благо, стабилизаторы есть. Но что делать с сигналами?
Грубо говоря, когда на вход меги подаётся сигнал, на MP3 модуль должна податься серия импульсов, точнее серия низких уровней, т.е. по умолчанию на выходе меги должны быть высокие уровни, т.е. 5 V. Но от 5 V MP3 модулю наверняка станет плохо.
Скажите, пожалуйста, как грамотно согласовать их сигналы? На ум приходит только использование делителей из резисторов в связях между мегой и mp3 модулем. Или можно как-то программно заставить мегу выдавать не 5, а 3.3V?
И другой вопрос: выход "Busy" с модуля, тоже 3.3V нужен для обработки сигналов в меге. Хватит ли 3.3V, чтобы мега поняла, что это логическая единица? Или как программно заставить её понять это?
- Вложения
-
- звонок.png
- (18.89 КБ) 368 скачиваний
Re: Не обычный MP3 проигрыватель
Сначала совет из разряда плохих - зачастую то, что живёт на уровнях 3.3V толерантно относится и к уровням 5V. Иногда это указано и в даташитах. В общем, работать будет, часто работает и годами, но, как говорится, на Ваш страх и риск.Unique писал(а):Но что делать с сигналами?
А если делать правильно, то на каждый сигнал вешается подобный двунаправленный преобразователь уровня:
Далее - Меги обычно имеют широкий диапазон питания - Ваша ATMega8 от 2.7V до 5.5V (максимум 6V). Если запитаете её от 3.3V, тогда никаких преобразователей уровня и не потребуется.
Такой же ответ и на Ваш второй вопрос.
Изучайте подробно даташиты, тогда многие вопросы отпадут сами собой.Unique писал(а):хотелось бы залезть в микроконтроллеры
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Re: Не обычный MP3 проигрыватель
Ой, прошу прощения, не тот даташит предоставил

Ну если не получится - буду химичить с преобразователями. Спасибо, полезная информация.
И ещё один глупый вопрос... сегодня ночью анализируя полученную из интернета информацию, родилось предположение... В одном из уроков, порту присваивается 1
что, вероятно, соответствует полному напряжению питания, т.е. 5V. А если сделать
будет ли на выходе 3,3V? Или порты типа Boolean?
У меня простая мега, без LUnique писал(а):к сожалению, заказал без буквы L в конце маркировки
Т.е. только от 4.5V.DataSheet писал(а):– 2.7V - 5.5V (ATmega8L)
– 4.5V - 5.5V (ATmega8)
Ну это только опытным путём проверить можно, хоть изучай даташиты, хоть не изучай... У меня 5 модулей MP3 и 10 atmega - могу себе позволить поэкспериментироватьsmacorp писал(а):Сначала совет из разряда плохих - зачастую то, что живёт на уровнях 3.3V толерантно относится и к уровням 5V.
Ну если не получится - буду химичить с преобразователями. Спасибо, полезная информация.
И ещё один глупый вопрос... сегодня ночью анализируя полученную из интернета информацию, родилось предположение... В одном из уроков, порту присваивается 1
Код: Выделить всё
PORTC.1=1;Код: Выделить всё
PORTC.1=0,66;Re: Не обычный MP3 проигрыватель
Вы можете докупить готовый преобразователь - стоят копейки - вот, например - http://www.ebay.com/itm/Two-Channel-IIC ... 43dd99a290Unique писал(а):буду химичить с преобразователями
Не будет. Если Вам так проще, то да, считайте, что это булевый тип. Либо 0 - "земля" , либо 1 - высокий уровень.Unique писал(а):если сделать PORTC.1=0,66 будет ли на выходе 3,3V? Или порты типа Boolean?
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Re: Не обычный MP3 проигрыватель
Вот времена пошли... делать совсем ничего не надоsmacorp писал(а):Вы можете докупить готовый преобразователь - стоят копейки - вот, например
Только покупать выгоднее на aliexpress
http://ru.aliexpress.com/item/5V-3V-IIC ... 28931.html
http://ru.aliexpress.com/item/5pcs-lot- ... 22452.html
Спасибо за помощь!


