Страница 2 из 4

Добавлено: Пн ноя 10, 2008 01:48:58
Symbiosis
я использую программатор аврпрог 1.4, там когда выбираешь мегу32 пропадает окно выбора частот, вообще его нет! я поэтому подумал, что нет там рц встроенного...
А в чипбластере от код вижн я не шарю... есть такие фьюзы cksel, их несколько, где можно прочитать про их комбинацию для разных МК ? а то я в даташите веду поиск по fuse или cksel и ничего не находится (

Добавлено: Пн ноя 10, 2008 02:14:27
Паятель
В даташите и почитать. В оглавлении смотрите, там, где про тактирование.

Добавлено: Пт ноя 28, 2008 09:16:36
Symbiosis
Помогите пожалуста, как SPI сконфигурировать надо правильно для работы с картой памяти? И прокоментируйте все пункты которые на скриншоте окошка...

Добавлено: Сб ноя 29, 2008 15:04:36
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

Добавлено: Вс ноя 30, 2008 04:09:55
Symbiosis
Вы имеете ввиду даташит на карту памяти ?

Добавлено: Вс ноя 30, 2008 21:33:33
Aheir
И на нее, и на контроллер

Добавлено: Чт дек 11, 2008 08:43:18
SpyLive
Krik99 и Danko А вы до записи еще не дошли? А то везде только чтение.
Или возможно кто пробовал переписать FatFs под CodeVisionAVR?

Добавлено: Пт дек 12, 2008 01:39:51
pirotehnick
А по анологии с кодом в этой статье разве не работает?

http://piclist.ru/S-64MMC-PIC-RUS/S-64MMC-PIC-RUS.html

Добавлено: Пт дек 12, 2008 15:29:21
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.

Добавлено: Пт дек 12, 2008 20:49:34
pirotehnick
SpyLive писал(а):хотелось бы чтобы FAT16/32 поддерживало.
На этом же сайте есть и примеры по реализации FAT16, правда исходники для пиков.
SpyLive писал(а):все это занимает 36-72кб, и соответственно не помещается на ATmega32.
Если переписать на Асьму, то всё должно влесть и в Atmega8.

Добавлено: Ср дек 17, 2008 14:38:20
SpyLive
Я так понимаю нормального ответа на поставленный вопрос я не получу. :cry: Ладно значит буду писать сам. 8)

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

Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.

Добавлено: Чт дек 18, 2008 05:21:31
SpyLive
Aheir писал(а):Я вот тоже над этим неторопясь работаю :) Кстати вопрос, что такое Fat from prlcc.com v2.1, мне не попадалось, можно ссылку?
Пожалуйста
http://rapidshare.com/files/132914353/f ... 1.rar.html
Aheir писал(а): Относительно Вашего случая (3 файла), можно обойтись и без ФС, если изначально сделать на карточке при помощи ПК 3 пустых файла нужного размера, и, зная их месторасположение, потом просто заполнять их при помощи МК.
А вот тут как бы есть несколько вопросов. Создавать файлы необходимо нужного объема? Или как потом писать именно в первый файл а не второй например. Можно поподробней.

Добавлено: Чт дек 18, 2008 20:04:07
Aheir
Ага, спасибо, поизучаю.
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..

Добавлено: Чт дек 18, 2008 20:23:56
SpyLive
Aheir писал(а):Ага, спасибо, поизучаю.
Я бы создавал три файла во весь объем карточки, в простейшем случае, если объем данных с трех разных датчиков одинаков, это будет три одинаковых по объему файла. Объем файла, соответственно, знаем. Если писать файлы на свежеотформатированную флешку, то все их кластеры будут расположены последовательно, т.е. разрывов в ФАТ-цепочке быть не должно (по крайней мере, это подтверждается моими экспериментами, да и по логике вроде как так и должно быть). Где они (файлы) начинаются и заканчиваются можно будет посмотреть в каком-либо редакторе, позволяющем посекторно просматривать диски. Далее, зная размер блока данных карточки, размер файла, адрес его начала и контролируя МК кол-во записанных данных сможем последовательно заполнять эти файлы данными.. Наверное, все это выглядит сложновато, но экономит много ресурсов МК..
Этот вариант подходит в самом простейшем варианте, но у меня будет 3 разных частоты дискритизации, следовательно все файлы будут разных объемов, но и карточки будут использоваться абсолютно разные, от 16 метров(щас для тестов) до 2 гигов в полевых условиях.
Поэтому буду курить мануал, и писать частичную поддержку ФАТ.

Добавлено: Пт дек 19, 2008 20:20:47
Aheir
Да, в таком случае это будет более разумно. Я на данный момент считал информацию с MBR и посчитал все смещения, дальше пока что нет времени... Столкнулся с разными вариантами форматирования карточек. Из-под Винды получаем в нулевом секторе MBR и отсутствие указаний на месторасположения PBR (ее вроде как вообще нет), но как я понял по другим исходникам, бывает и иначе.. :roll:

Добавлено: Сб дек 20, 2008 09:53:46
Fighter
я выхожу с этой ситуации так:
читаю 0 сектор.
если по смещению 0x36 - FAT16(12,32) то дальше считаем как обычно, если же нет, то берем по смещению 0x1C6 номер сектора и читаем его.
там опять проверяем 0x36- какой фат.
ибо есть флешки где в 0 MBR а есть где в 0 PBR.

Добавлено: Сб дек 20, 2008 20:02:27
Aheir
Именно так, придется делать ветвление. Думаю, предусмотрю для универсальности, благо что это не сложно. А может и нет, пока универсальности не требуется, ориентируюсь в устройстве на Виндой форматированные карточки.

Добавлено: Сб янв 03, 2009 10:58:06
SpyLive
Вот наконец закончились праздники и пьянки, и я тут решил всетаки переписать часть библиотеки ELM-CHAN для использования в CodeVisionAVR. И хотелось бы еще на берегу узнать какие могут быть подводные камни? Что может WinAVR чего не может CodeVisionAVR и в чем заключается основая несовместимость компиляторов?

Добавлено: Сб янв 03, 2009 11:15:46
VenomXP
В объявлении библиотек, в объявлении и вызовах прерываний, в регистрах - этот список можно бесконечно продолжать... По этому придется на ходу исправлять ошибки, так на вскидку и не скажешь что может тебя ждать... Но все равно удачи :)