Degson: клеммы, корпуса, источники питания

Программа для аудиоресивера

Новичок
 
Регистрация: 09.07.2012
Адрес: Тамбов
Сообщений: 111
Репутация: 17
7 14
0 0
Отправить сообщение для Серенький с помощью ICQ Отправить сообщение для Серенький с помощью Skype™
 
21.02.2014 20:12 #1
Здравствуйте!
Есть желание собрать устройство, про которое я уже писал ранее.
В планах это такой аудиоресивер:
-Радио будет встроенным (тюнер от автомагнитолы) и управляться микроконтроллером (синтезатор частоты, например, LM7001J);
-3 стерео входа, 1 псевдоквадро выход (TDA7313/PT2313L);
-Входа можно будет выбирать программно, т.е. управлять тем же МК;
-Для всех режимов будет использоваться один дисплей;
-MP3 тоже будет встроенным (чтение с USB устройств и SD карт), управление через тот же МК (декодер vs1011);
-В режиме MP3 на экране отображается название проигрываемого файла(желательно), прошедшее время с начала песни и её длительность;
-В режиме радио отображается текущая частота (по возможности - горит индикатор станции на настроенной частоте);
-В режиме линейного входа на дисплее надпись LINE IN;
-Во всех режимах регулируются громкость, баланс, низкие и высокие частоты.

Изучаю язык C++, но пока умею только выводить символы и слова на LCD, и моргать светодиодами, про управление микросхем по I2C шине ничего не понял... (CodeVisionAVR)

Буду очень благодарен за любую помощь, кроме ссылок на учебники (Прочитал соответствующие темы Шпака и Лебедева).

Надеюсь на Вашу помощь!
Оценка
В многообразии литиевых батареек и аккумуляторов нет какого-то универсального или идеального варианта. Выбирая тот или иной вариант для питания устройства, разработчику приходится оперировать множеством параметров, используя наиболее оптимальное их сочетание для каждого приложения. Разберем параметры для различных приложений.
Гуру
 
Регистрация: 13.05.2006
Сообщений: 3,908
Репутация: 1247
1,234 65
61 33
 
22.02.2014 11:19 #2
Для AVR много понаписано всего. Поищите в сети примеры и по ним с книжкой разбирайтесь. Можете проект протеуса на казус.ру (там есть тема проекты протеус) скачать и по шагам разбираться.
Оценка
Новичок
 
Регистрация: 09.07.2012
Адрес: Тамбов
Сообщений: 111
Репутация: 17
7 14
0 0
Отправить сообщение для Серенький с помощью ICQ Отправить сообщение для Серенький с помощью Skype™
 
22.02.2014 22:25 #3
Цитата:
Сообщение от LEAS
Для AVR много понаписано всего. Поищите в сети примеры и по ним с книжкой разбирайтесь. Можете проект протеуса на казус.ру (там есть тема проекты протеус) скачать и по шагам разбираться.
Вы далеко не первый, кто меня посылает в это плавание)
Библиотека для TDA7313 есть, но для CodeVisionAVR ли она? И как посылать команды тдашке?
Цитата:
/************************************************** ***


Это библиотека для работы с шиной i2c и микросхемой TDA7313.
Линией синхронизации SCL назначен PORTB.0
Линией передачи данных SDA назначен PORTB.1

Настройки данной библиотеки:
В строке 1 надо указать где линия SDA
В строках 2-5 указать соответствующие номера битов и порт
В строках 6-9 в принципе можно ничего не трогать, но если сильно хочется... А порт смотри внимательно!!!!!!!!
В строке 10 указывается в мкс длительность импульсов, т.о. регулирутся скорость обмена данными
Если не трогали строки 6-9, то 12-15 тоже не надо колыхать если конечно не изменится порт

************************************************** ***/

#include <DELAY.h>
//#define SDA PORTC.7 /*1*/
#define CLR_B6 &=~(1<<6) /*Очистка бита 0*/ /*2*/
#define CLR_B7 &=~(1<<7) /*Очистка бита 1*/ /*3*/
#define SET_B6 |=(1<<6) /*Установка бита 0*/ /*4*/
#define SET_B7 |=(1<<7) /*Установка бита 1*/ /*5*/
#define SCL_ZERO DDRC SET_B6 /*Установка 0 на SCL путем переключения данной линии на выход*/ /*6*/
#define SCL_ONE DDRC CLR_B6 /*Установка 1 на SCL путем переключения данной линии на вход*/ /*7*/
#define SDA_ZERO DDRC SET_B7 /*Установка 0 на SDA путем переключения данной линии на выход*/ /*8*/
#define SDA_ONE DDRC CLR_B7 /*Установка 1 на SDA путем переключения данной линии на вход*/ /*9*/
#define PAUSE delay_us(15) /*Необходимая пауза. Для 100 килобит в сек не менее 4,7 мкс*/ /*10*/

void i2_start(void) { /*Функция инициализации и старта шины i2c*/
DDRC CLR_B6; /*Сделали входом PORTC.6 */ /*12*/
DDRC CLR_B7; /*Сделали входом PORTC.7 */ /*13*/
PORTC CLR_B6; /*Убрали внутреннюю подтяжку с PORTB.0 на SCL теперь 1 за счет внешней подтяжки*/ /*14*/
PORTC CLR_B7; /*Убрали внутреннюю подтяжку с PORTB.1 на SDA теперь 1 за счет внешней подтяжки */ /*15*/
PAUSE;
SDA_ZERO; /*При единицах на SDA SCL, делаем 0 на SDA, тем самым стартуем */
PAUSE;
SCL_ZERO; /*Даём 0 на SCL, подготовив тем самым интерфейс к передаче байта */
PAUSE;
}

void i2_stop (void) {
SDA_ZERO;
PAUSE;
SCL_ONE;
PAUSE;
SDA_ONE;
PAUSE;
}

unsigned char i2_write (unsigned char bw) { /*Функция передачи байта по шине*/
unsigned char check=0;
unsigned char k, m; /*Вспомогательные переменные*/
for (k=0 ; k<8 ; k++) { /*Цикл отправки байта по битам, начиная с самого старшего, как в спецификации на шину*/
m = 1& (bw >> (7-k)); /*Операция логического И между числом 1 и очередным битом, для выявления его значения*/
if (m==0) {SDA_ZERO;} /*Если очередной бит равен 0 то линию SDA делаем выходом, и т.о. на ней становится 0 ибо в PORTх вписан0 в i2_start */
else {SDA_ONE;}; /*Если очередной бит равен 1 то линию SDA делаем входом, и т.о. на ней становится 1 т.к. есть внешний подтяг. резистор */
PAUSE; /*Технологическая пауза*/
SCL_ONE; /*Даем синхроимпульс*/
PAUSE; /*Ждем пока приемник определит значение бита на SDA пока на SCL единица */
SCL_ZERO; /*Убираем 1 с линии синхронизации, подготавливая приемник к приему очередного бита*/
PAUSE;
}; /*для for, чтобы не запутаться*/
/*Посылка девятого бита подтверждения*/
SDA_ONE;
PAUSE;
SCL_ONE;
PAUSE;
if (PINC.7==1) {check=1;}
else {check=0;};
SCL_ZERO;
PAUSE;
return check;
}


void tda7313_write(unsigned char command) { /*Функция инициализации и отправки данных на TDA7313*/
i2_start(); /*Даем сигнал старта шины*/
if(i2_write(0x88)) {goto m7;}; /*Вводим адрес тдашки и если она не дала бит подтверждения приема то на метку 1*/
i2_write(command); /*передаем данные в микруху */
m7:
i2_stop(); /*останавливаем обмен по шине*/

}
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 02:57.
Обратная связь РадиоЛоцман Вверх