AVR + MMC не могу соединить

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52

Сообщение Symbiosis »

я использую программатор аврпрог 1.4, там когда выбираешь мегу32 пропадает окно выбора частот, вообще его нет! я поэтому подумал, что нет там рц встроенного...
А в чипбластере от код вижн я не шарю... есть такие фьюзы cksel, их несколько, где можно прочитать про их комбинацию для разных МК ? а то я в даташите веду поиск по fuse или cksel и ничего не находится (
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 3174
Зарегистрирован: Пт июл 21, 2006 03:08:05
Откуда: Пенза

Сообщение Паятель »

В даташите и почитать. В оглавлении смотрите, там, где про тактирование.
Если долго мучиться, что-нибудь... сломается.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52

Сообщение Symbiosis »

Помогите пожалуста, как SPI сконфигурировать надо правильно для работы с картой памяти? И прокоментируйте все пункты которые на скриншоте окошка...
Вложения
SPI.JPG
SPI
(28.58 КБ) 659 скачиваний
Контактная информация:
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Лучше даташита не расскажу, там все есть.
Вот так все работает (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
- устанавливаем максимальную скорость SPI
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 600
Зарегистрирован: Вс апр 27, 2008 13:44:52

Сообщение Symbiosis »

Вы имеете ввиду даташит на карту памяти ?
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

И на нее, и на контроллер
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Реклама
Родился
Сообщения: 6
Зарегистрирован: Чт дек 11, 2008 08:39:48

Сообщение SpyLive »

Krik99 и Danko А вы до записи еще не дошли? А то везде только чтение.
Или возможно кто пробовал переписать FatFs под CodeVisionAVR?
Последний раз редактировалось SpyLive Сб янв 03, 2009 10:56:38, всего редактировалось 1 раз.
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

А по анологии с кодом в этой статье разве не работает?

http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
Контактная информация:
Родился
Сообщения: 6
Зарегистрирован: Чт дек 11, 2008 08:39:48

Сообщение SpyLive »

pirotehnick писал(а):А по анологии с кодом в этой статье разве не работает?

http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html
По аналогии конечно можно, но хотелось бы чтобы FAT16/32 поддерживало. Хотябы FAT16. Надо в 3 файла записывать данные с 3 датчиков, для последующей обработки в маткаде. Вот и интересуюсь, возможно уже ктото чтото сделал подобное, если ниче не найду, то сам буду переписывать необходимый функционал из FatFs. Или напишу весь код под WinAVR.
Но как уже сказал выше, на данный момент собираю как можно больше информации по уже готовым реализациям.
Есть вариант "Fat from prlcc.com v2.1" там для ATmega128 написана библиотека для подключения SD карт памяти, но все это занимает 36-72кб, и соответственно не помещается на ATmega32.
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж

Сообщение pirotehnick »

SpyLive писал(а):хотелось бы чтобы FAT16/32 поддерживало.
На этом же сайте есть и примеры по реализации FAT16, правда исходники для пиков.
SpyLive писал(а):все это занимает 36-72кб, и соответственно не помещается на ATmega32.
Если переписать на Асьму, то всё должно влесть и в Atmega8.
Контактная информация:
Родился
Сообщения: 6
Зарегистрирован: Чт дек 11, 2008 08:39:48

Сообщение SpyLive »

Я так понимаю нормального ответа на поставленный вопрос я не получу. :cry: Ладно значит буду писать сам. 8)
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Я вот тоже над этим неторопясь работаю :) Кстати вопрос, что такое Fat from prlcc.com v2.1, мне не попадалось, можно ссылку?

Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Родился
Сообщения: 6
Зарегистрирован: Чт дек 11, 2008 08:39:48

Сообщение SpyLive »

Aheir писал(а):Я вот тоже над этим неторопясь работаю :) Кстати вопрос, что такое Fat from prlcc.com v2.1, мне не попадалось, можно ссылку?
Пожалуйста
http://rapidshare.com/files/132914353/f ... 1.rar.html
Aheir писал(а): Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.
А вот тут как бы есть несколько вопросов. Создавать файлы необходимо нужного объема? Или как потом писать именно в первый файл а не второй например. Можно поподробней.
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Ага, спасибо, поизучаю.
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Родился
Сообщения: 6
Зарегистрирован: Чт дек 11, 2008 08:39:48

Сообщение SpyLive »

Aheir писал(а):Ага, спасибо, поизучаю.
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..
Этот вариант подходит в самом простейшем варианте, но у меня будет 3 разных частоты дискритизации, следовательно все файлы будут разных объемов, но и карточки будут использоваться абсолютно разные, от 16 метров(щас для тестов) до 2 гигов в полевых условиях.
Поэтому буду курить мануал, и писать частичную поддержку ФАТ.
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Да, в таком случае это будет более разумно. Я на данный момент считал информацию с MBR и посчитал все смещения, дальше пока что нет времени... Столкнулся с разными вариантами форматирования карточек. Из-под Винды получаем в нулевом секторе MBR и отсутствие указаний на месторасположения PBR (ее вроде как вообще нет), но как я понял по другим исходникам, бывает и иначе.. :roll:
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Встал на лапы
Сообщения: 94
Зарегистрирован: Ср авг 01, 2007 13:32:33

Сообщение Fighter »

я выхожу с этой ситуации так:
читаю 0 сектор.
если по смещению 0x36 - FAT16(12,32) то дальше считаем как обычно, если же нет, то берем по смещению 0x1C6 номер сектора и читаем его.
там опять проверяем 0x36- какой фат.
ибо есть флешки где в 0 MBR а есть где в 0 PBR.
Модератор
Аватара пользователя
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург

Сообщение Aheir »

Именно так, придется делать ветвление. Думаю, предусмотрю для универсальности, благо что это не сложно. А может и нет, пока универсальности не требуется, ориентируюсь в устройстве на Виндой форматированные карточки.
Оптимизм х (Опыт + Знания) = const
Контактная информация:
Родился
Сообщения: 6
Зарегистрирован: Чт дек 11, 2008 08:39:48

Сообщение SpyLive »

Вот наконец закончились праздники и пьянки, и я тут решил всетаки переписать часть библиотеки ELM-CHAN для использования в CodeVisionAVR. И хотелось бы еще на берегу узнать какие могут быть подводные камни? Что может WinAVR чего не может CodeVisionAVR и в чем заключается основая несовместимость компиляторов?
Грызет канифоль
Аватара пользователя
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09

Сообщение VenomXP »

В объявлении библиотек, в объявлении и вызовах прерываний, в регистрах - этот список можно бесконечно продолжать... По этому придется на ходу исправлять ошибки, так на вскидку и не скажешь что может тебя ждать... Но все равно удачи :)
Даташит - библия моя...
Изображение
Контактная информация:
Ответить

Вернуться в «AVR»