Отговори на тема  [ 27 мнения ]  Отиди на страница Предишна  1, 2
Има ли разлика между SD и MMC? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Леле Фитил, то бива коментари по кода, ама ти направо ме уби. Евала. Толкова никога няма да имам нерви да изпиша.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Ное 14, 2006 12:21 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
млад си още, цецо, мислиш си че помниш всичко 8) а и сигурно работиш сам
коментарите много помагат на писача. понякога даже му помагат да си разбере програмата и да си обясни защо нещо работи
като минимум според мен трябва да са описани ясно :
- какво прави дадена функция
- входни параметри
- какво връща
- всички променливи, дифайни, структури, класове, училища и т.н.

на всички препоръчвам да погледнат doxygen
малко е тежък за разбиране, но е трепач


Вто Ное 14, 2006 1:13 pm
Профил
Ранг: Професионалист
Ранг: Професионалист
Аватар

Регистриран на: Сря Май 11, 2005 3:47 pm
Мнения: 534
Мнение 
ДедоБоре, преди малко я пробвах, мнооого прилично изглежда, т.е. чудеса, който генерира. Да си кажа, честно не съм ползвал до сега такива програми, но ще трябва да си пусна един CVS, че нещата отиват на зле :(.


Вто Ное 14, 2006 2:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
на тебе ти трябва съвсем малко да си модифицираш коментарите, за да поченш да ползваш пълните възможности на doxygen-a

ние ползваме CVS от години. иначе не става.
сега се каним да мигрираме към SVN, щото има още функции като таймлиния, бъг трекинг, тикети и т.н.
ама сме на етапа "търсене на време да се прочете ръководството" :roll:
чакам някой от колегите да се прежали, ама май трябва да викам неволята (пак)

та ако ще инвестираш време, по-добре захапи направо него


Вто Ное 14, 2006 2:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Бе за млад незнам, ама че си забравям и името на моменти знам :)
За слагане на коментари слагам, ама се ограничавам до минимума дето си го написал. Че иначе почвам да забравям кода, докато пиша коментарите :).
Но на фитила ме уби, особено пояснителния хедър на функцията - все едно е изкаран от книга. Толкова нямам нерви да напиша, честно. Аз се ограничавам до нещо от сорта:

/*********************************************************************************
Fuction : int func(int a);
Input:
Output:
Description: 2 реда лимит
*********************************************************************************/
Не ме разбирайте погрешно - хубаво е човек да пише. Даже много да пише. Ама аз едвам избутах матурата, признавам си без бой.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Ное 14, 2006 4:03 pm
Профил ICQ
Ранг: Професионалист
Ранг: Професионалист
Аватар

Регистриран на: Сря Май 11, 2005 3:47 pm
Мнения: 534
Мнение 
За съжаление и аз пиша сега така:
Код:
/******************************************************************************
Function, which gererates 16-bits crc of block of data
unsigned int crc16(char *buf, unsigned int length)
   Inputs:
   char *buf - input block of data
   unsigned int length- input block of data length
   
   Output:
   return results - unsigned int
*******************************************************************************/

, щото няма време да му се невиди.


Вто Ное 14, 2006 4:11 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Чет Ное 10, 2005 9:26 pm
Мнения: 393
Местоположение: Buffalo, NY, USA
Мнение 
Хайде да ви дам единия от мойте хедъри и аз ;-):
Код:
/***********************************************************************\
* FUNCTION    :    RunUnitCallTest()                                    *
* CLASS       :    CTest                                                *
* ACCESS      :    public                                               *
*                                                                       *
* DESCRIPTION :    This is the main function running unit CALL test     *
*                  (on 1 or 2 units). It creates MakeCall and Test      *
*                  threads and then waits for them to finish execution. *
*                  It also takes care for updating the Unit list GUI    *
*                  control with the proper colors, messages, etc.       *
*                                                                       *
* PARAMETERS  :    I   pData - pointer to a data structure with all     *
*                              needed parameters passed from the caller.*
*                                                                       *
* RETURNS     :    true  = All test threads passed                      *
*                  false = At least one test thread failed.             *
*                                                                       *
* HISTORY     :    vng 03/01/06 Initial Implementation                  *
*                  vng 10/05/06 Change the function from Generic to     *
*                               CALL test only.                         *
\***********************************************************************/

А коментарите наистина помагат :-). Аз понякога съм се дзверил в код, който съм написал две години преди това, и ако няма коментари в него, трябва бая време да мине преди да се усетя защо съм направил нещата по начина, по който съм ги направил. Особено ако съм измъдрил някакви трикове...

_________________
http://blog.georgievi.com


Вто Ное 14, 2006 10:43 pm
Профил WWW
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Чет Ное 10, 2005 9:26 pm
Мнения: 393
Местоположение: Buffalo, NY, USA
Мнение 
ДедоБоре написа:
на тебе ти трябва съвсем малко да си модифицираш коментарите, за да поченш да ползваш пълните възможности на doxygen-a

ние ползваме CVS от години. иначе не става.
сега се каним да мигрираме към SVN, щото има още функции като таймлиния, бъг трекинг, тикети и т.н.
ама сме на етапа "търсене на време да се прочете ръководството" :roll:
чакам някой от колегите да се прежали, ама май трябва да викам неволята (пак)

та ако ще инвестираш време, по-добре захапи направо него

Ние ползваме Rational ClearCase за сорс контрол и Rational ClearQuest за bug tracking и прочее дейности, свързани с code management. Добри програми са, ама много тежки, че имат хиляди възможности, а и предполагам, че са доста скъпи (ама не ми е работа да знам ;-)).

_________________
http://blog.georgievi.com


Вто Ное 14, 2006 10:49 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Лоша работа, купих една чиста MMC карта и се опитах да я подкарам днеска, но се чете същото нещо. :( Ей, мразя да подкарвам неща.


Нед Яну 07, 2007 2:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Нали ти дадох съвсем работещ сорс,драйвера заедно с фаиловата система,заедно с целия проект. Виж как е и си го портни за твоя процесор. Ако имаш питания по сорса ще помагам може и на Qto може и с PM


Нед Яну 07, 2007 2:55 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Мар 04, 2007 12:00 am
Мнения: 8
Местоположение: Варна
Мнение 
Момчета, от няколко дена се опитвам да прочета нещо от SD карта.
Ползвам сорса от предната страница. С една единствена разлика, че вместо един масив буфер от 512елемента използвам 2 х 256.
Главния ми проблем, е че на изхода на SD картата няма никой... жива нула.
Правих си експирименти да въртя в цикъл пращане на команда 0 барабар с аргумента и CRC-то, след което да чета още 8 пъти SPI евентуално да изчакам някакъв отговор от картата но уви изхода винаги е нула.
Гледах на осцилоскоп какво точно пращам и всичко изглежда нормално. Но на изхода никой.
Правя си експириментите с 2 различни карти едната е Кингстън 512МВ а другата е Apacer 1GB MicroSD + преходник към SD.
Процесора ми е PIC18LF4525 и захранващото на прежение на цялата система е ~3,2V.
Правих си експирименти и с поредицата за инициализиране
CMD0 -> {CMD1}в цикъл -> 9,10...
втория вариант беше 0 -> 55 -> {41}в цикъл -> 9,10
и третия вариант беше 0->0->{41}в цикъл->9,10
в момента е 0->41
Функциите които ползвам работа с SPI са:
Код:
unsigned char SPI(unsigned char d) {
   SSPBUF=d;
   while (!SSPSTATbits.BF);
   d = SSPBUF;
   return d;
}

void OpenSPI(unsigned char speed){
   SSPCON1 = 0x00;                     //Stop MSSP module
   if(speed==0) SSPCON1 = 0x02;                  //Master mode, prescaler = 1/64, clock = 390KHz
   if(speed==1) SSPCON1 = 0x01;                  //Master mode, prescaler = 1/16, clock = 1.56MHz
   if(speed==2) SSPCON1 = 0x00;                  //Master Mode, prescaler = 1/4, clock = 6.25MHz
   SSPCON1 = SSPCON1 | 0x20;            //Start MSSP module
}


На осцилоскопа проверих, че такта наистина е 390KHz. (честотата на осцилатора е 25MHz)

Функцията за инициализация в момента изглежда така:
Код:
void SD_FLASH_Init (void)
{
   UINT card_status;            // Stores card status returned from SD function calls(SD_Command_Exec);
   unsigned char counter = 0;      // SPI byte counter;
   //idata unsigned int size;         // Stores size variable from card;
   BYTE *pchar;
   // register values; temporary register values from SD;
   pchar = BufferINOUT_LOW;
   
   // STATE 1 OF INIT: Transmit at least 74 SPI clocks before any bus comm occurs.
   for(counter = 0; counter < 10; counter++) SPI( 0xFF);
   
   // STATE 2 OF INIT
   // Send the GO_IDLE_STATE command with CS driven low; This causes the SD
   // to enter SPI mode;
      SD_Command_Exec( GO_IDLE_STATE,EMPTY,EMPTY,EMPTY);

   // STATE 4 OF INIT: until the SD indicates that it is no longer busy (ready for commands);
   do{     
      card_status.b[0] = SD_Command_Exec( SD_APP_OP_COND,EMPTY,EMPTY,EMPTY);
   }while (card_status.b[0] & 0x01);
   
   // STATE 5 OF INIT
   // Operation Conditions (VDU Voltage Profile and Busy Status Information)Register (OCR);
   SD_Command_Exec( READ_OCR, EMPTY,pchar, EMPTY);
   pchar += 4;

   // STATE 6 OF INIT: Card Identification information Register (CID);
   SD_Command_Exec( SEND_CID, EMPTY, pchar,EMPTY);
   pchar += 16;

   // STATE 7 OF INIT: Card specific information Register (CSD);
   SD_Command_Exec( SEND_CSD, EMPTY, pchar,EMPTY);
}


В атачнатата картинка е схемата на свързване.
А пък в атачнатя PDF на 21 и 22 страница са описани процедурите за инициализация.

Дайте някакви идеи какво да правя... това нещо ще става дипломна работа а от 3 дена не мога да го подкарам. :cry:


Прикачени файлове:
Коментар на файл: Документация
SDCard%20Data%20Sheet.pdf [1.17 MiB]
138 пъти
Коментар на файл: Схема на свързване
connections.jpg
connections.jpg [ 30.81 KiB | Прегледано 1253 пъти ]
Съб Авг 25, 2007 6:16 pm
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Мар 04, 2007 12:00 am
Мнения: 8
Местоположение: Варна
Мнение 
Гледам и не вярвам... както и да е след като изпълних препоръките на juzisound от тази тема инициализацията минава. Без дърпащите резистори не става работата :!:
Команда 41 също не върши работа, трябва да се инициализира с команда 1.


Съб Авг 25, 2007 9:50 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 27 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни