Например TDA7294

Форум РадиоКот • Просмотр темы - Работа с SD/MMC флеш картой Mega128+Code Vision AVR
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 10:06:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 30 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Чт окт 04, 2012 21:49:30 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 74
Зарегистрирован: Пн июн 18, 2012 12:01:04
Сообщений: 650
Откуда: Челябинская область, Копейск
Рейтинг сообщения: 0
спящий писал(а):
А воту меня непрограммируется контроллер с флехой микроСД,надо добавлять сопротивления последовательно с картой?
на счет воспроизведения звука сейчас осмыслю(почитаю и задам фопрос))),а качество звука и дискетизация не зависят друг от друга? чет мне кажется одно и тоже)

В общем то качество звука зависит от обоих параметров:
количество бит (8,16,24...) - это разрешение амплитуды, чем больше бит тем точнее,
частота дискретизации - это разрешение изменения амплитуды за одну секунду, чем больше частота тем меньше промежутки времени между изменением амплитуды.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Пт окт 05, 2012 00:06:46 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Смысл правильный, только это не цикл, а прерывание таймера.Считывать с карты можно и в самом прерывании, несмотря на то, что старшие товарищи советуют там ставить только флаги.Если программа занимается в основном только воспроизведением звуков, какая разница где она будет считываться? Главное все рассчитать по времени именно поэтому в расчете максимальной частоты Д. zero648 Сказал про 22050 а не 31250 частота будет нормально, потому что кроме вывода нужно еще и считывать с карты.
А если оперативной памяти мало, то еще и придется несколько раз считывать частями.

Хотя...может кто пробовал получится ли без помещения в буфер передавать куда либо в другое место?Не будет ли при этом глючить карта?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Чт окт 18, 2012 20:33:16 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
Посмотрите правильно расчитал 16 ТАЙМЕР? прерывание происходит по СТС.
Частота контроллера 8Мгц преддилитель таймера 8 8Мгц/8= 1МГц
Соответственно 1 такт =0,000 001С
Частота дискретизации 8кГц = 0.000125С, тоесть выводить число каждые 0.000125С.
Соответственно нужно записать
OCR1AH=0;
OCR1AL=125;




Спойлер#include <stdio.h>
#include <mega48.h>
#ifndef __SLEEP_DEFINED__
#define __SLEEP_DEFINED__
.EQU __se_bit=0x01
.EQU __sm_mask=0x0E
.EQU __sm_adc_noise_red=0x02
.EQU __sm_powerdown=0x04
.EQU __sm_powersave=0x06
.EQU __sm_standby=0x0C
.SET power_ctrl_reg=smcr
#endif
#include <delay.h>
#include <string.h>
#include <io.h>

#define data(x) SPDR=x; while (!( SPSR&(1<<7)));

int i,temp;

void main(void) {

DDRB=0b11101111;

//настройка ШИМ


TCCR1A=0b10000001;
TCCR1B=0b00001001;
TIMSK1=0b01000000;

// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;




//настройка SPI
SPCR=0b01010011;
SPSR=1;


//подаем 74 импульса
PORTB.2=1;
delay_ms(10);

for(i=0;i<10;i++)
{

data(0xff)
}
PORTB.2=0;


printf(" ---------- \r\n");

//CMD0


data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);


while (temp!=0x01)
{
data(0xff);
temp= SPDR;
if (i>10)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
i=0;
}
i++;

}
printf("CMD0 proshlo uspeshno temp=%d\n\r",temp,"\r\n");

//CMD1
data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0x00)
{data(0xff);
temp= SPDR;
if (i>20)
{data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
i=0;
}
i++;
}

printf("CMD1 proshlo uspeshno temp=%d\n\r",temp,"\r\n");
delay_ms(20);



//CMD17 чтение байтов
data(0x52);
data(0x00);
data(0x05);
data(0x0A);
data(0x00);
data(0x95);
i=0;
while (temp!=0xfe)
{ data(0xff);
temp= SPDR;
}
printf("CMD17 proshlo uspeshno temp=%d\n\r",temp,"\r\n");

//настройка прерывание по СТС
TCCR1B=0b00001010;
TIMSK1=0b00000010;//прерывание CTC
TCNT1L=0x00;
TCNT1H=0x00;
OCR1AH=0;
OCR1AL=125;
while(1){ }

}

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
data(0xff); //передача по SPI
OCR1AL=SPDR ;
TCNT1L=0x00;
TCNT1H=0x00;
}


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Пт окт 19, 2012 05:40:42 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Чет я не понял зачем вы сначала посчитали частоту и определили
Код:
 OCR1AH=0;
OCR1AL=125

а потом в прерывании меняете это значение?У вас же так частота поплывет.
Нужно для звука использовать второе прерывание сравнения OCR1B.

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Пт окт 19, 2012 21:09:34 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
Вы имеете ввиду отдельно использовать таймер для шима и для таймера?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Сб окт 20, 2012 21:02:42 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Прочитайте про таймер.Есть в таймере три прерывания, два по сравнению(A,B), одно по переполнению.
Если вы выбрали таймер в режиме CTC и верхом будет значение OCR1A, а в прерывании будет меняться ЭТО ЖЕ значение то частота поплывет.
В этом случае нужно использовать прерывание по сравнению B (OCR1B).Так как до прерывания по переполнению он не дойдет, а обнулится при OCR1A.
Это насколько я понял.Еще одно важное замечание.Если у вас между прерываниями 125 тиков таймера куда вы будете 255 тиков шим для 8битного звука будете девать?Нужно число 125 увеличивать.Можно использовать для шим еще один таймер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Вс окт 21, 2012 15:33:47 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
Получилось! :)) Правда,Шумы очень большие,но если прислушиться то слышны и слова(может потому что я динамик напрямую в ШИМ подключил),как можно уменьшить шумы и увеличить громкость слов?





Спойлер#include <stdio.h>
#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>

#define data(x) SPDR=x; while (!( SPSR&(1<<7)));

int i,temp;

void main(void) {

DDRB=0b11101111;

//настройка ШИМ


TCCR1A=0b10000001;
TCCR1B=0b00001001;
TIMSK1=0b01000000;

// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;




//настройка SPI
SPCR=0b01010011;
SPSR=1;


//подаем 74 импульса
PORTB.2=1;
delay_ms(10);

for(i=0;i<10;i++)
{

data(0xff)
}
PORTB.2=0;


printf(" ---------- \r\n");

//CMD0


data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);


while (temp!=0x01)
{
data(0xff);
temp= SPDR;
if (i>10)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
i=0;
}
i++;

}
printf("CMD0 proshlo uspeshno temp=%d\n\r",temp,"\r\n");

//CMD1
data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0x00)
{data(0xff);
temp= SPDR;
if (i>20)
{data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
i=0;
}
i++;
}

printf("CMD1 proshlo uspeshno temp=%d\n\r",temp,"\r\n");
delay_ms(20);



//CMD17 чтение байтов
data(0x52);
data(0x00);
data(0x0B);
data(0x86);
data(0x00);
data(0x95);
i=0;
while (temp!=0xfe)
{ data(0xff);
temp= SPDR;
}
printf("CMD17 proshlo uspeshno temp=%d\n\r",temp,"\r\n");
#asm("sei")
//настройка прерывание по СТС
TCCR0A=0b00000010;
TCCR0B=0b00000010;
TIMSK0=0b00000010;//прерывание CTC
TCNT0=0x00;
OCR0A=125;
while(1){ }

}

interrupt [TIM0_COMPA] void timer1_compa_isr(void)
{
data(0xff); //передача по SPI
OCR1AL=SPDR ;
TCNT0=0x00;

}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Вс окт 21, 2012 20:57:42 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Позвольте поинтересоваться что вы там воспроизводите? Какой формат звука (расширение файла)?
Просто если какой нибудь не подготовленный для вашего плеера звук воспроизводить напрямую с карты, как раз и может шум наблюдаться.А более плавным можно его сделать через RC фильтр- то есть на выход с ноги шим резистор, второй конец резистора на мелкий конденсатор.Второй конец резистора в данном случае и будет выход.И еще желательно динамик к Мк напрямую тоже не подключать, лучше через защитный транзистор.

_________________
В поисках истины человек развивается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Вс окт 21, 2012 21:41:47 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
Вот


Вложения:
dozor.zip [506.2 KiB]
Скачиваний: 215
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Работа с SD/MMC флеш картой Mega128+Code Vision AVR
СообщениеДобавлено: Чт янв 24, 2013 21:18:48 
Потрогал лапой паяльник

Карма: -1
Рейтинг сообщений: -5
Зарегистрирован: Сб янв 08, 2011 13:48:41
Сообщений: 303
Рейтинг сообщения: 0
Подскажите что такое,уже 2 недели немогу запустить MMC?
CMD0 принемает 01 с 4 раза,
а CMD1 неполучает 00,ответ 01. - В чем проблема? может быть неправильно настройки СПИ?

Делал также проект на AVR работает а вот на STM нет(


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 30 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y