Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 20.09.2018, 22:44   #101
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от al.kl Посмотреть сообщение
Попробуйте запустить Petit FatFs Module. Она предназначена для совсем ущербных МК.



У Чена есть даже проект под какую-то мелкую Tiny - http://elm-chan.org/works/sd8p/report.html
Спасибо..по сылке вообще используется буфер на 256 байт ,и это для стерео воспроизведения с идеальным судя по видео каеством..Буду ковырять его исходник чтобы понять как)
maagalex вне форума   Ответить с цитированием
Старый 20.09.2018, 23:58   #102
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,685
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от maagalex Посмотреть сообщение
А с буферами непонятно смысла DMA..
Мне все равно нужно как то по таймеру прерывать чтение карты (еще не факт что библиотека позволяет, может она запрещает прерывания при работе),обновлятьт значение ШИМ..А после завершения буфера переключаться на второй буфер, а в первый читать следующий блок..Так зачем DMA..что куда она перекидывать должна?..

Вот пока ты из одного буфера будешь обновлять значение ШИМа, второй будет по ДМА заполняться с карточки.
По таймеру тебе надо делать первое, что кстати тоже по ДМА можно делать.
DimaS вне форума   Ответить с цитированием
Старый 21.09.2018, 00:36   #103
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от DimaS Посмотреть сообщение
Вот пока ты из одного буфера будешь обновлять значение ШИМа, второй будет по ДМА заполняться с карточки.
По таймеру тебе надо делать первое, что кстати тоже по ДМА можно делать.
Это как он будет через DMA заполняться с карточки, если считывание карточки это процедура программная, как часть библиотеки?..Я могу ее вызвать и ждать пока отработает и вернется.. а для DMA это переписывать библиотеку чтоли?..Так я ее даже открыть не могу, искал в проекте исходник той же функции ..Read..(...и ничего нет..

А по примеру проигрывателя вообще непонятно кк происходит процесс проигрывания, считывается 1024 байт в буфер размером 256 или куда?..
И где обновления ШИМ ..
Проект лежит здесь..скрин функции Play вот
Миниатюры
anast.png  
maagalex вне форума   Ответить с цитированием
Старый 21.09.2018, 03:20   #104
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

..и еще подумалось, вот допустим при считывании за раз 1 или 10 или 100 байт через каждые 1000 байт есть пауза..ок. А теперь если у меня буфер на 3000 байт (чтобы его играть те самые 60мсек паузы), значит считывать в него я могу быстро, сразу, без задержек?..Но интерфейс у нас последовательный, то есть читаем мы в любом случае байт за байтом..
Так почему я не могу тупо читать эти байты со скоростью битрейта музыки и сразу кидать их на ШИМ?..
maagalex вне форума   Ответить с цитированием
Старый 21.09.2018, 03:42   #105
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

http://elm-chan.org/fsw/ff/doc/forward.html
И еще до кучи..команда, ее описание и особенно ниже пример..
maagalex вне форума   Ответить с цитированием
Старый 21.09.2018, 12:37   #106
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,685
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от maagalex Посмотреть сообщение
Это как он будет через DMA заполняться с карточки, если считывание карточки это процедура программная, как часть библиотеки?..

Нет, она не часть библиотеки Чена!
Читай внимательно - функции нижнего уровня в нее не входят, их юзер должен реализовать сам.
Так что, все зависит от твоего драйвера карточки. В них должны быть функции чтения/записи с ДМА.


Цитата:
Так почему я не могу тупо читать эти байты со скоростью битрейта музыки и сразу кидать их на ШИМ?..
Потому что это два, не синхронных (как правило) между собою процесса. Читать с карточки надо быстрее, чем выдавать в ШИМ.
Обычно плееры строятся так:
1) вызывается заполнение буфера А из карточки, по концу останавливается.

2) вывод данных в это-же время идет из буфера В в ШИМ (или I2S) по ДМА
- по концу вывода из В, буфера меняются местами, звук начинает выводиться из А, и goto 1.


Таким образом, процессы асинхроннные. Вывод звука должен быть привязан к таймера, задающему семплрейт, а чтение с карточки идет как правило с максимальной скоростью.
Карточка - НЕ риалтаймовый обьект! Очень мало в каких случаях можно сделать полностьью синхронную передачу потока с карточки в ШИМ (и т.п.).

Последний раз редактировалось DimaS; 21.09.2018 в 12:47.
DimaS вне форума   Ответить с цитированием
Старый 21.09.2018, 12:49   #107
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,685
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от maagalex Посмотреть сообщение
http://elm-chan.org/fsw/ff/doc/forward.html
И еще до кучи..команда, ее описание и особенно ниже пример..

Я с этой функцией не работал, делал по другому, но если ты не заметил - там по 1000 байт передают.
DimaS вне форума   Ответить с цитированием
Старый 21.09.2018, 15:15   #108
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от DimaS Посмотреть сообщение

Потому что это два, не синхронных (как правило) между собою процесса. Читать с карточки надо быстрее, чем выдавать в ШИМ.
.
Хорошо, у меня нижний уровень построен на железном модуле spi ,если я буду играться с его тактовой частотой, выставлять ее в соответствии с битрейтом-карточка этого не примет, в ней есть ограничения по скорости обмена снизу?
Чип с 16к озу стоит в 2,5раза дороже чем чип с 4к..не хочется буфер если можно без, да и в примере чана его нет..
maagalex вне форума   Ответить с цитированием
Старый 21.09.2018, 18:34   #109
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 46
Сообщений: 1,685
Вес репутации: 2423/83
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от maagalex Посмотреть сообщение
Хорошо, у меня нижний уровень построен на железном модуле spi ,если я буду играться с его тактовой частотой, выставлять ее в соответствии с битрейтом-карточка этого не примет, в ней есть ограничения по скорости обмена снизу?
.

Не знаю, я никогда не работал с карточками по SPI, только по SDIO (что уже в 4 раза быстрее чем SPI), и частоту всегда использовал максимальную (50МГц).


Давно когда-то, в одном из проектом нудно было писать стрим на флешку. Проц был с небольшой памятью (MSP430), а флешка - USB через FTDI VNC1L.

Так пришлось делать буфер во внешней памяти - два корпуса 23K256. Потом уже переделали проект на STM32F4, причем как основная использовались 64К ССМ памяти, а все 128К большой памяти были отданы под ФИФО плюс пару мелких буфров для других целей (ССМ не работает с ДМА).

Последний раз редактировалось DimaS; 21.09.2018 в 18:42.
DimaS вне форума   Ответить с цитированием
Старый 22.09.2018, 02:03   #110
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

А если я сделаю немного иначе и включу в модуле spi прерывание по приёму байта, и в том прерывании обновлю ШИМ и дождусь клока чтобы позволить spi считать следующий байт?..
Вопрос в том..байты читаются с карты в правильной последовательности и виде, кк они в файле или там может быть какой угодно порядок, и уже FAT выстраивает их как нужно?..
maagalex вне форума   Ответить с цитированием
Старый 22.09.2018, 03:24   #111
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

До кучи здесь
http://microsin.net/programming/file...to-stream.html
описание команды чтения в поток по русски

http://forum.easyelectronics.ru/view...p?f=35&t=17813
А здесь применение функции для вывода картинки
maagalex вне форума   Ответить с цитированием
Старый 24.09.2018, 12:42   #112
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,173
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Чтение SD карты

maagalex
А если я сделаю немного иначе и включу в модуле spi прерывание по приёму байта, и в том прерывании обновлю ШИМ - все это изящный выстрел себе в ногу.

есть два основных метода воспроизведения звука. один из них с двойной буферизацией, другой - с тройной.
2: 1-чтение/работы со звуком, 2 - воспроизведение
3: 1-чтение, 2-работы, 3 - воспроизведение

тройная проще в реализации, но требует больше ресурсов. двойная - сложнее в реализации, но требует меньше ресурсов.

я не слышал чтобы работы со звуков велись без использования нескольких буферов.

***
последний раз когда я работал со звуком, то драйвер звука не знал вообще как backend выводит звук.
у меня есть сомнение, что зрелая идея мешать чтение/работы/воспроизведение в одну кучу.
besogon вне форума   Ответить с цитированием
Старый 24.09.2018, 13:32   #113
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,760
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Чтение SD карты

Это просто пример моно 8 бит. Есть и стерео 8 бит с одним буфером и с отслеживанием половины и окончания транзакции.
Вычитали первую порцию в первый буфер, включили воспроизведение
Потом в цикле вычитываем следующую порцию во второй и ждем пока закончит воспроизводить первый буфер, натравливаем на второй буфер и включаем воспроизведение и т.д.


Код:
if( (NumChannels==1) && (BitsPerSample==8) )
			{
			pf_read(Buff, READ_BUFF_SIZE, &rb);
				DMA1_Channel3->CPAR = (uint32_t)& TIM1->CCR3 ;
				DMA1_Channel3->CMAR = (uint32_t)Buff;        //
				DMA1_Channel3->CNDTR = 0x200;                //

				DMA1_Channel3->CCR=0;
				DMA1_Channel3->CCR  |= 
		                      DMA_CCR_PL|
				      //DMA_CCR_MSIZE_0|
				        DMA_CCR_PSIZE_0 |
					DMA_CCR_MINC|
				      //DMA_CCR_CIRC|
					DMA_CCR_DIR;
				
				DMA1_Channel3->CCR  |=  DMA_CCR_EN;     
				TIM1->CR1 |= TIM_CR1_CEN; 
				TIM3->CR1|=TIM_CR1_CEN;
				
			do{
				pf_read(Buff1, READ_BUFF_SIZE, &rb);
				while(!(DMA1->ISR & DMA_ISR_TCIF3)){};
				DMA1->IFCR = DMA_IFCR_CTCIF3;
				DMA1_Channel3->CCR  &= ~DMA_CCR_EN; 	
				DMA1_Channel3->CMAR = (uint32_t)Buff1;        //
				DMA1_Channel3->CNDTR = 0x200;    
				DMA1_Channel3->CCR  |=  DMA_CCR_EN;
				pf_read(Buff, READ_BUFF_SIZE, &rb);
				while(!(DMA1->ISR & DMA_ISR_TCIF3)){};
				DMA1->IFCR = DMA_IFCR_CTCIF3;	
				DMA1_Channel3->CCR  &= ~DMA_CCR_EN; 	
				DMA1_Channel3->CMAR = (uint32_t)Buff;        //
				DMA1_Channel3->CNDTR = 0x200;    
				DMA1_Channel3->CCR  |=  DMA_CCR_EN;
			  }while(rb==READ_BUFF_SIZE);
		}
		DMA1_Channel3->CCR  &= ~DMA_CCR_EN;
dosikus вне форума   Ответить с цитированием
Старый 24.09.2018, 15:00   #114
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от dosikus Посмотреть сообщение
Это просто пример моно 8 бит. Есть и стерео 8 бит с одним буфером и с отслеживанием
Спасибо..но тут опять же нужно больше памяти и DMA..Менять чип, когда есть элегантное решение от самого автора библиотеки..
Я сегодня ради такого дела поехал туда где лучше думается, на минводы..И кажется есть результат..половина уже понятна..
Миниатюры
20180924_145434.jpg  
maagalex вне форума   Ответить с цитированием
Старый 24.09.2018, 20:56   #115
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Вообщем так..
В самой библиотеке FatFs есть маркеры буфера
volatile BYTE FifoRi, FifoWi, FifoCt; /* FIFO controls */
сам буфер нужно объявлять в проекте
BYTE Buff[256]; /* Wave output FIFO */

При так называемом "выводе в поток" вызывается функция чтения блоков, кратных 512, в примере это 1024 байта..
Если, к примеру, после чтения заголовка и всяких там параметров файла мы находимся на границе сектора, то есть к примеру прочитали 100байт-то нужно прочитать еще 412 байт и пропустить их чтобы вызывать функцию с начала следующего сектора, данные в этих 412 байтах выпадают из проигрывания..
Сам вывод в поток не синхронизирован во времени, это вызов функции
res = pf_read(0, btr, &rb); /* Forward the data into audio FIFO */
Продолжение ниже нужно копать в теле самой фунции и в файле
asmfunc.S на ассемблере.
В частности, задержка выполненна функцией Delay
Код:
;---------------------------------------------------------------------------;
; Simple Delay
;---------------------------------------------------------------------------;
; void delay_ms(WORD ms);
; void delay_us(WORD us);

.global delay_ms
.func delay_ms
delay_ms:
	wdr			; Reset WDT
	sbiw	r24, 1		; if (ms-- == 0) return;
	brcs	9f		; /
	ldi	ZL, lo8(F_CPU/4000)	; 1ms delay
	ldi	ZH, hi8(F_CPU/4000)	; 
1:	sbiw	ZL, 1		; 
	brne	1b		; /
	rjmp	delay_ms
9:	ret
.endfunc
maagalex вне форума   Ответить с цитированием
Старый 25.09.2018, 08:33   #116
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,760
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Чтение SD карты

maagalex, звук там выводится в прерывании таймера в PWM .
http://elm-chan.org/works/sd8p/report.html

Код:
;---------------------------------------------------------------------------;
; Audio sampling interrupt process
;
; ISR(TIM0_COMPA_vect);


.global TIM0_COMPA_vect
.func TIM0_COMPA_vect
TIM0_COMPA_vect:
	push	r24				;Save regs.
	in	r24, _SFR_IO_ADDR(SREG)		;
	push	r24				;
	push	ZL				;
	push	ZH				;/

	lds	ZL, FifoRi			;Get FIFO read index
	clr	ZH				;Z = pointer to the top of FIFO
	subi	ZL, lo8(-(Buff))		;
	sbci	ZH, hi8(-(Buff))		;/
	lds	r24, FifoCt			;Load FIFO data counter

#if MODE >= 1	/* Dual output */
	subi	r24, 2				;Check availability of the sampling data
	brcs	9f				;/
	sts	FifoCt, r24			;Save FIFO data counter
	ld	r24, Z+				;Get R-ch/LSB data and send it to PWM
	out	_SFR_IO_ADDR(OCR1A), r24	;/
	ld	r24, Z+				;Get L-ch/MSB data and send it to PWM
	out	_SFR_IO_ADDR(OCR1B), r24	;/
#else		/* Single output */
	subi	r24, 1				;Check availability of the sampling data
	brcs	9f				;/
	sts	FifoCt, r24			;Save FIFO data counter
	ld	r24, Z+				;Send data to PWM
	out	_SFR_IO_ADDR(OCR1B), r24	;/
#endif
	subi	ZL, lo8(Buff)			;Save FIFO read index
	sts	FifoRi, ZL			;/

9:	pop	ZH				;Restore regs.
	pop	ZL				;
	pop	r24				;
	out	_SFR_IO_ADDR(SREG), r24		;
	pop	r24				;/
	reti
.endfunc
dosikus вне форума   Ответить с цитированием
Старый 25.09.2018, 09:27   #117
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от dosikus Посмотреть сообщение
maagalex, звук там выводится в прерывании таймера в PWM .
Да похоже на то..странно, у меня на макетке когда включаю таймер с прерываниями, даже пустыми, перестают читаться данные с карты..То есть прерывать чтение с карты в принципе нельзя..
maagalex вне форума   Ответить с цитированием
Старый 25.09.2018, 09:39   #118
dosikus
Senior Member
 
Аватар для dosikus
 
Регистрация: 05.06.2007
Возраст: 47
Сообщений: 3,760
Вес репутации: 6211/145
dosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond reputedosikus has a reputation beyond repute
По умолчанию Re: Чтение SD карты

maagalex, у тебя что спи ногодрыгом сделан?
dosikus вне форума   Ответить с цитированием
Старый 25.09.2018, 10:19   #119
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от dosikus Посмотреть сообщение
maagalex, у тебя что спи ногодрыгом сделан?
Железный, но у него есть какие то программные процедуры доступа, что API обслуживает..
maagalex вне форума   Ответить с цитированием
Старый 25.09.2018, 11:36   #120
HHIMERA
Senior Member
 
Регистрация: 10.06.2008
Возраст: 57
Сообщений: 2,831
Вес репутации: 3992/109
HHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond reputeHHIMERA has a reputation beyond repute
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от maagalex Посмотреть сообщение
API обслуживает..
А почему не ВЭБморда???
Нужна скорость??? Переписывай Ченовские функции ручками... под себя...
__________________
"Я не даю готовых решений, я заставляю думать!"(С)
HHIMERA вне форума   Ответить с цитированием
Старый 25.09.2018, 12:00   #121
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от HHIMERA Посмотреть сообщение
А почему не ВЭБморда???
Нужна скорость??? Переписывай Ченовские функции ручками... под себя...
Их уже переписали под меня, я взял готовый проект под мой чип с форума..Но там нет wav)
Миниатюры
pcb.png  

Последний раз редактировалось maagalex; 25.09.2018 в 12:05.
maagalex вне форума   Ответить с цитированием
Старый 28.09.2018, 22:58   #122
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Вообщем как оказалось..у меня с таймером и прерываниями все нормально, и чтению карты они не мешают, просто я неправильно таймер инициализировал..
Но тут другая проблема..вся эта система потокового вывода истользует PLL Attiny и просто не применима на других платформах..
Об этом ни слова не сказано в описании Чана, наоборот написано что портировать библиотеку можно на другие платформы свободно..
И более того команда P_Forward даже компилируется без ошибок, но не работает..
Почему-вот почему!.(скрин во вложении)

Теперь вопрос такой..
Если я влезу в функцию чтения f_read(..
В каком месте можно вставить в нее некий while(Flag); чтобы после каждого считывания очередного байта она ждала флага от таймера?
Код:
/*-----------------------------------------------------------------------*/
/* Read File                                                             */
/*-----------------------------------------------------------------------*/

FRESULT f_read (
	FIL* fp, 		/* Pointer to the file object */
	void* buff,		/* Pointer to data buffer */
	UINT btr,		/* Number of bytes to read */
	UINT* br		/* Pointer to number of bytes read */
)
{
	FRESULT res;
	DWORD clst, sect, remain;
	UINT rcnt, cc;
	BYTE csect, *rbuff = (BYTE*)buff;


	*br = 0;	/* Clear read byte counter */

	res = validate(fp);							/* Check validity */
	if (res != FR_OK) LEAVE_FF(fp->fs, res);
	if (fp->err)								/* Check error */
		LEAVE_FF(fp->fs, (FRESULT)fp->err);
	if (!(fp->flag & FA_READ)) 					/* Check access mode */
		LEAVE_FF(fp->fs, FR_DENIED);
	remain = fp->fsize - fp->fptr;
	if (btr > remain) btr = (UINT)remain;		/* Truncate btr by remaining bytes */

	for ( ;  btr;								/* Repeat until all data read */
		rbuff += rcnt, fp->fptr += rcnt, *br += rcnt, btr -= rcnt) {
		if ((fp->fptr % SS(fp->fs)) == 0) {		/* On the sector boundary? */
			csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1));	/* Sector offset in the cluster */
			if (!csect) {						/* On the cluster boundary? */
				if (fp->fptr == 0) {			/* On the top of the file? */
					clst = fp->sclust;			/* Follow from the origin */
				} else {						/* Middle or end of the file */
#if _USE_FASTSEEK
					if (fp->cltbl)
						clst = clmt_clust(fp, fp->fptr);	/* Get cluster# from the CLMT */
					else
#endif
						clst = get_fat(fp->fs, fp->clust);	/* Follow cluster chain on the FAT */
				}
				if (clst < 2) ABORT(fp->fs, FR_INT_ERR);
				if (clst == 0xFFFFFFFF) ABORT(fp->fs, FR_DISK_ERR);
				fp->clust = clst;				/* Update current cluster */
			}
			sect = clust2sect(fp->fs, fp->clust);	/* Get current sector */
			if (!sect) ABORT(fp->fs, FR_INT_ERR);
			sect += csect;
			cc = btr / SS(fp->fs);				/* When remaining bytes >= sector size, */
			if (cc) {							/* Read maximum contiguous sectors directly */
				if (csect + cc > fp->fs->csize)	/* Clip at cluster boundary */
					cc = fp->fs->csize - csect;
				if (disk_read(fp->fs->drv, rbuff, sect, cc) != RES_OK)
					ABORT(fp->fs, FR_DISK_ERR);
#if !_FS_READONLY && _FS_MINIMIZE <= 2			/* Replace one of the read sectors with cached data if it contains a dirty sector */
#if _FS_TINY
				if (fp->fs->wflag && fp->fs->winsect - sect < cc)
					mem_cpy(rbuff + ((fp->fs->winsect - sect) * SS(fp->fs)), fp->fs->win, SS(fp->fs));
#else
				if ((fp->flag & FA__DIRTY) && fp->dsect - sect < cc)
					mem_cpy(rbuff + ((fp->dsect - sect) * SS(fp->fs)), fp->buf, SS(fp->fs));
#endif
#endif
				rcnt = SS(fp->fs) * cc;			/* Number of bytes transferred */
				continue;
			}
#if !_FS_TINY
			if (fp->dsect != sect) {			/* Load data sector if not in cache */
#if !_FS_READONLY
				if (fp->flag & FA__DIRTY) {		/* Write-back dirty sector cache */
					if (disk_write(fp->fs->drv, fp->buf, fp->dsect, 1) != RES_OK)
						ABORT(fp->fs, FR_DISK_ERR);
					fp->flag &= ~FA__DIRTY;
				}
#endif
				if (disk_read(fp->fs->drv, fp->buf, sect, 1) != RES_OK)	/* Fill sector cache */
					ABORT(fp->fs, FR_DISK_ERR);
			}
#endif
			fp->dsect = sect;
		}
		rcnt = SS(fp->fs) - ((UINT)fp->fptr % SS(fp->fs));	/* Get partial sector data from sector buffer */
		if (rcnt > btr) rcnt = btr;
#if _FS_TINY
		if (move_window(fp->fs, fp->dsect) != FR_OK)		/* Move sector window */
			ABORT(fp->fs, FR_DISK_ERR);
		mem_cpy(rbuff, &fp->fs->win[fp->fptr % SS(fp->fs)], rcnt);	/* Pick partial sector */
#else
		mem_cpy(rbuff, &fp->buf[fp->fptr % SS(fp->fs)], rcnt);	/* Pick partial sector */
#endif
	}

	LEAVE_FF(fp->fs, FR_OK);
}
Миниатюры
anast.png  
maagalex вне форума   Ответить с цитированием
Старый 29.09.2018, 08:33   #123
petrd
Senior Member
 
Регистрация: 09.02.2008
Адрес: Воронеж
Возраст: 48
Сообщений: 1,808
Вес репутации: 2170/82
petrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond reputepetrd has a reputation beyond repute
Отправить сообщение для petrd с помощью ICQ
По умолчанию Re: Чтение SD карты

С чего это ты такой вывод сделал? Слово TINY не имеет никакого отношения к конкретной платформе. У меня на PIC24 портировалось и работало, правда не помню на большой или на маленькой FS.
__________________
License MikroC, MikroC PRO and EasyPIC5 by mikroElektronika (the dead mikroICD replaced PICKit2 & PICKit3)
petrd вне форума   Ответить с цитированием
Старый 29.09.2018, 12:45   #124
maagalex
Senior Member
 
Аватар для maagalex
 
Регистрация: 25.02.2007
Адрес: &Alex==Israel.BatYam
Возраст: 43
Сообщений: 4,454
Вес репутации: 2476/115
maagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond reputemaagalex has a reputation beyond repute
Отправить сообщение для maagalex с помощью ICQ Отправить сообщение для maagalex с помощью MSN Отправить сообщение для maagalex с помощью Skype™
По умолчанию Re: Чтение SD карты

Цитата:
Сообщение от petrd Посмотреть сообщение
С чего это ты такой вывод сделал? Слово TINY не имеет никакого отношения к конкретной платформе. У меня на PIC24 портировалось и работало, правда не помню на большой или на маленькой FS.
Речь о функции Forward для поточного чтения ,как она может работать если у меня в среде она даже не активна(см скрин выше), то есть не учавствует в компиляции проекта..
Может можно ручками это условие удалить и использовать на других платформах я не знаю, но зачем тогда они ограничение ввели?
maagalex вне форума   Ответить с цитированием
Старый 29.09.2018, 15:55   #125
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 32
Сообщений: 2,173
Вес репутации: 4017/88
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Чтение SD карты

maagalex
while(Flag) - ужас какой-то.

использовал elm-chan fatfs лет 5 назад в проекте с выводом звука для pic32mx.

никаких привязок к платформе тогда не было.
besogon вне форума   Ответить с цитированием
Ответ

Метки
mmc, read sd card, спецификация фат


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура чтения DS3235. Watcher Общетехнические вопросы 67 29.11.2010 08:42
время записи в с SD карту vptr Общетехнические вопросы 0 08.11.2007 10:00
PIC & SD vicve Продукция MICROCHIP 15 15.09.2007 15:35
не работает SD карта ИгорьС Общетехнические вопросы 2 20.07.2007 14:11
Чтение из CE210 НиК Продукция MICROCHIP 1 17.05.2007 11:19


Часовой пояс GMT +3, время: 05:11.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot