Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
Добавлено: Вс мар 13, 2011 22:56:52
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Не помню в каком регистре и какой бит, но знаю, что такое в tiny26 есть. Как-то давненько извращался. Позже погляжу в тот исходник и в даташит и точно скажу.
Вот снимок из даташита:
А вот неоптимизированный пример идеи, набитый на скорую руку. Довести до ума и будет чётко
Код:
.include "tn26def.inc" ;********************************* ;Definitions .def temp0 = r16 .def temp1 = r17 .def play_count = r18 ;********************************* ; SRAM .dseg buffer: .byte 64 ;********************************* ;FLASH .cseg .org 0x0000 rjmp RESET .org OC1Aaddr rjmp TIM1_CMP1A ; Timer1 compare match 1A ;---------- .org INT_VECTORS_SIZE TIM1_CMP1A: ; Тут мы будем грузить новый байт ; Время для выполнения операции подбирается в OCR1A ld temp1, Y+ out OCR1B, temp1 inc play_count cpi play_count, 0x40 ;64 breq CLRCNT reti CLRCNT: clr play_count ldi YL, Low(buffer) ldi YH, High(buffer) reti ;---------- Начало программы RESET: ldi temp0, Low(RAMend) out SP, temp0 ;---------- Настройка портов для работы ШИМ sbi DDRB, 3 ;---------- Настройка таймера ldi temp0, (1<<PWM1B)|(1<<COM1B1) out TCCR1A, temp0 ;---------- Частота и разрешение ШИМ ldi temp0, 0xFF out OCR1C, temp0 ;---------- Ранний вызов прерывания ldi temp0, 0xE1 out OCR1A, temp0 ;---------- Почистим регистр вывода ldi temp0, 0x00 out OCR1B, temp0 ;---------- Разрешим прерывание по А ldi temp0, (1<<OCIE1A) out TIMSK, temp0 ;---------- clr play_count ldi YL, Low(buffer) ldi YH, High(buffer) ;---------- Частота тактирования ldi temp0, (1<<CS10) out TCCR1B, temp0 sei ;---------- Пустой бесконечный цикл LOOP: rjmp LOOP
Действительно, все работает. Спасибо. Да, и код довольно компактный по сравнению с си получается. Просьба, если не трудно, после завершения проекта, выложите пожалуйста исходный код.
phanis здравствуйте Не нашлось меня в загашнике рабочей карты памяти но вот раздобыл несколько at45db041b можно ли ее использовать вместо карты памяти ?
Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
Добавлено: Вт мар 15, 2011 02:29:56
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
phanis писал(а):
Просьба, если не трудно, после завершения проекта, выложите пожалуйста исходный код.
ОК. Только немного позже у меня будут несколько вопросов о выборе частоты тактирования МК, частоты вывода ШИМ, работа с MMC и файловой системой. Как сделаю рабочий в железе макет, то выложу суда весь проект целиком.
_________________ I am DX168B and this is my favourite forum on internet!
phanis здравствуйте Не нашлось меня в загашнике рабочей карты памяти но вот раздобыл несколько at45db041b можно ли ее использовать вместо карты памяти ?
Если правильно понял, по даташиту память у нее около 540 кбайт. Что не очень то и много. DataFlash supports SPI mode 0 and mode 3. В принципе можно, но прошивка для мк нужна будет другая. Вот мой исходник на IAR AVR (язык СИ, есть файлы на ASM) с SD MMC FAT16, может что то и пригодится для вас.
ОК. Только немного позже у меня будут несколько вопросов о выборе частоты тактирования МК, частоты вывода ШИМ, работа с MMC и файловой системой. Как сделаю рабочий в железе макет, то выложу суда весь проект целиком.
Подождёмс. А таймер 0, для каких целей будет использоваться?Ну, если конечно, будет вообще использоваться.
Добавлю, программка HEX редактор может пригодиться, открыть флешку или образ, посмотреть где какие байты. ftp://wa651f2:anonymous@mh-nexus.de/HxDSetupRU.zip Winimage 8.5 программа создания образов накопителей. Можно использовать для протеуса, как именно писал выше. WinImage 8.50.rar
а сюда можно будет скинуть схему и прошивку к WAV-плееру на PIC, или тут строго на AVR ?
_________________ Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
Заголовок сообщения: Re: mp3 плеер на attiny2313 на ммс картах
Добавлено: Вс мар 20, 2011 14:39:02
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Хочу узнать, правильно ли я инициализирую MMC флешку. Флешка не SD, а именно старенькая MMC. Удалил с флешки файловую систему, кинул туда конвертированный waw файл с удалённым заголовком. Это пока так, чтобы проверить работу и отладить вывод звука из буфера. Потом уже и работу с файловой системой приделаю. Значит, что я делаю: 1. Устанавливаю 1 на линии CS 2. Посылаю 10 раз 0xFF (посылка 80 тактовых импульсов) 3. Устанавливаю 0 на линии CS 4. Отправляю 6 байт: 0x40, 0x00, 0x00, 0x00, 0x00, 0x95 (CMD0) 5. Циклом отправляю 0х00, пока с флешки не придёт 0x01 6. После получения корректного ответа отправляю 0x00 (посылка 8 тактов) 7. Отправляю 6 байт: 0x41, 0x00, 0x00, 0x00, 0x00, 0xFF (CMD1) 8. Циклом отправляю 0х00, пока с флешки не придёт 0x00 9. После получения корректного ответа отправляю 0x00 (посылка 8 тактов) 10. Отправляю 6 байт: 0x52, 0x00, 0x00, 0x00, 0x00, 0x00 (CMD18) 11. Кручусь в цикле, пока не придёт что-нибудь отличное от 0xFF 12. Пропускаю первый принятый байт и остальное пишу в буфер. 13. После заполнения буфера, запускаю воспроизведение.
Всё ли я правильно делаю? Паяльник накрылся и новый аж послезавтра будет, по этому в железе проверить пока нет возможности.
_________________ I am DX168B and this is my favourite forum on internet!
10. Отправляю 6 байт: 0x52, 0x00, 0x00, 0x00, 0x00, 0x00 (CMD18) 11. Кручусь в цикле, пока не придёт что-нибудь отличное от 0xFF .
В принципе все правильно, только в место что-нибудь отличное от 0xFF на команды CMD17 CMD18 CMD24 нужно ловить маркер равный 0xFE Потому как первым придет ответ на команду , если успешно придет 0x00, а это уже отличное от 0xFF; И только после того как пришел маркер с 0xFE следующие байты начинаем записывать в буфер.
Да еще один момент, во всех исходниках которые смотрел, перед посылкой команды ставят CS в 1 отправляют 0xFF затем CS в 0 (в некотрых после еще раз 0xFF ) и отправляют команду. Я думаю это делается для синхронизации карты с мк. И в место Циклом отправляю 0х00 отправляют 0xFF. я так сделал..
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения