А в чипбластере от код вижн я не шарю... есть такие фьюзы cksel, их несколько, где можно прочитать про их комбинацию для разных МК ? а то я в даташите веду поиск по fuse или cksel и ничего не находится (
AVR + MMC не могу соединить
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
я использую программатор аврпрог 1.4, там когда выбираешь мегу32 пропадает окно выбора частот, вообще его нет! я поэтому подумал, что нет там рц встроенного...
А в чипбластере от код вижн я не шарю... есть такие фьюзы cksel, их несколько, где можно прочитать про их комбинацию для разных МК ? а то я в даташите веду поиск по fuse или cksel и ничего не находится (
А в чипбластере от код вижн я не шарю... есть такие фьюзы cksel, их несколько, где можно прочитать про их комбинацию для разных МК ? а то я в даташите веду поиск по fuse или cksel и ничего не находится (
- Реклама
Лучше даташита не расскажу, там все есть.
Вот так все работает (128 Мега, 11.0592MHz)
После инициализации и сброса карточки делаем
- устанавливаем максимальную скорость SPI
Вот так все работает (128 Мега, 11.0592MHz)
Код: Выделить всё
void mmcInit(void)
{
unsigned char temp; //вспомогательная переменная
// setup SPI I/O pins
SPI_DDR.SCK_PIN = 1; // set SCK as output
SPI_PORT.SCK_PIN = 0; // set SCK lo
SPI_DDR.MISO_PIN = 0; // set MISO as input
SPI_PORT.MISO_PIN = 1; // set pullup
SPI_DDR.MOSI_PIN = 1; // set MOSI as output
SPI_DDR.SS_PIN = 1; // SS must be output for Master mode to work
SPI_DDR.MMC_CS_PIN = 1; // set CS as output
MMC_CS = 1; // set CS = 1 - deactivate MMC
//SPI Mode: 0
SPCR.0 = 1; //SPI Clock Rate Select (fosc/32)
SPCR.1 = 1; //
SPSR.0 = 0; //SPI2X: Double SPI Speed (1) Bit
SPCR.2 = 0; //CPHA: Clock Phase (активный уровень - 1)- см. даташит
SPCR.3 = 0; //CPOL: Clock Polarity (передний фронт - захват, задний фронт - установка) - см. даташит
SPCR.4 = 1; //MSTR: Master(1)/Slave(0) Select
SPCR.5 = 0; //DORD: Data Order (LSB first = 1; MSB first = 0)
SPCR.6 = 1; //SPE: SPI Enable = 1
SPCR.7 = 0; //SPIE: SPI Interrupt Enable = 1
temp = SPSR; //clear SPI status (см. даташит)
temp = SPDR;
}
Код: Выделить всё
SPCR.0 = 0; //
SPCR.1 = 0; //
SPSR.0 = 1; //SPI2X: Double SPI Speed (1) Bit, т.е. получаем значение тактовой fosc/2
Оптимизм х (Опыт + Знания) = const
- Сообщения: 600
- Зарегистрирован: Вс апр 27, 2008 13:44:52
Вы имеете ввиду даташит на карту памяти ?
- Реклама
И на нее, и на контроллер
Оптимизм х (Опыт + Знания) = const
А по анологии с кодом в этой статье разве не работает?
http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
- Сообщения: 6
- Зарегистрирован: Чт дек 11, 2008 08:39:48
По аналогии конечно можно, но хотелось бы чтобы FAT16/32 поддерживало. Хотябы FAT16. Надо в 3 файла записывать данные с 3 датчиков, для последующей обработки в маткаде. Вот и интересуюсь, возможно уже ктото чтото сделал подобное, если ниче не найду, то сам буду переписывать необходимый функционал из FatFs. Или напишу весь код под WinAVR.pirotehnick писал(а):А по анологии с кодом в этой статье разве не работает?
http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
Но как уже сказал выше, на данный момент собираю как можно больше информации по уже готовым реализациям.
Есть вариант "Fat from prlcc.com v2.1" там для ATmega128 написана библиотека для подключения SD карт памяти, но все это занимает 36-72кб, и соответственно не помещается на ATmega32.
На этом же сайте есть и примеры по реализации FAT16, правда исходники для пиков.SpyLive писал(а):хотелось бы чтобы FAT16/32 поддерживало.
Если переписать на Асьму, то всё должно влесть и в Atmega8.SpyLive писал(а):все это занимает 36-72кб, и соответственно не помещается на ATmega32.
- Сообщения: 6
- Зарегистрирован: Чт дек 11, 2008 08:39:48
Я вот тоже над этим неторопясь работаю
Кстати вопрос, что такое Fat from prlcc.com v2.1, мне не попадалось, можно ссылку?
Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.
Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.
Оптимизм х (Опыт + Знания) = const
- Сообщения: 6
- Зарегистрирован: Чт дек 11, 2008 08:39:48
ПожалуйстаAheir писал(а):Я вот тоже над этим неторопясь работаюКстати вопрос, что такое Fat from prlcc.com v2.1, мне не попадалось, можно ссылку?
http://rapidshare.com/files/132914353/f ... 1.rar.html
А вот тут как бы есть несколько вопросов. Создавать файлы необходимо нужного объема? Или как потом писать именно в первый файл а не второй например. Можно поподробней.Aheir писал(а): Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.
Ага, спасибо, поизучаю.
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..
Оптимизм х (Опыт + Знания) = const
- Сообщения: 6
- Зарегистрирован: Чт дек 11, 2008 08:39:48
Этот вариант подходит в самом простейшем варианте, но у меня будет 3 разных частоты дискритизации, следовательно все файлы будут разных объемов, но и карточки будут использоваться абсолютно разные, от 16 метров(щас для тестов) до 2 гигов в полевых условиях.Aheir писал(а):Ага, спасибо, поизучаю.
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..
Поэтому буду курить мануал, и писать частичную поддержку ФАТ.
Да, в таком случае это будет более разумно. Я на данный момент считал информацию с MBR и посчитал все смещения, дальше пока что нет времени... Столкнулся с разными вариантами форматирования карточек. Из-под Винды получаем в нулевом секторе MBR и отсутствие указаний на месторасположения PBR (ее вроде как вообще нет), но как я понял по другим исходникам, бывает и иначе.. 
Оптимизм х (Опыт + Знания) = const
- Сообщения: 94
- Зарегистрирован: Ср авг 01, 2007 13:32:33
Именно так, придется делать ветвление. Думаю, предусмотрю для универсальности, благо что это не сложно. А может и нет, пока универсальности не требуется, ориентируюсь в устройстве на Виндой форматированные карточки.
Оптимизм х (Опыт + Знания) = const
- Сообщения: 6
- Зарегистрирован: Чт дек 11, 2008 08:39:48
Вот наконец закончились праздники и пьянки, и я тут решил всетаки переписать часть библиотеки ELM-CHAN для использования в CodeVisionAVR. И хотелось бы еще на берегу узнать какие могут быть подводные камни? Что может WinAVR чего не может CodeVisionAVR и в чем заключается основая несовместимость компиляторов?
- Сообщения: 293
- Зарегистрирован: Пн дек 24, 2007 07:09:09
В объявлении библиотек, в объявлении и вызовах прерываний, в регистрах - этот список можно бесконечно продолжать... По этому придется на ходу исправлять ошибки, так на вскидку и не скажешь что может тебя ждать... Но все равно удачи 
Даташит - библия моя...




