Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
11.03.2011, 22:55
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 18F2550 & petit fat fs
st_1, Кидай любой , бум читать ...
__________________
Осторожно , злой кот
|
|
|
|
11.03.2011, 22:57
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,537
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: 18F2550 & petit fat fs
Сообщение от AJScorp
|
Хорошо. У меня стабильно работали MMC, SD1.0, SD2.0, SDHC. 4 типа карт, кроме микроSD, проблему решило только внесение 0xFF перед подачи команды. Возможно это связано со схемотехникой, не спорю.
|
А откуда вообще взялось это 0xFF? Докум. смотрю, чего-то не вижу. Просто у Чена в инициализации есть 0xFF перед отсылкой команды, 1 при CS = 1 и 1 при CS = 0,
А в библиотеке от микрочипа, только начальные 80 импульсов и потом задержка 1 мс и затем команды без всяких 0xFF.
И то и то работает.
|
|
|
|
11.03.2011, 22:58
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,537
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: 18F2550 & petit fat fs
|
|
|
|
11.03.2011, 23:00
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 18F2550 & petit fat fs
Сообщение от realid
|
Погоди, покажи инициализацию карты
|
Здесь весь проект https://kazus.ru/forums/attachment.p...0&d=1299869552
Код:
|
/*-----------------------------------------------------------------------*/
/* Initialize Disk Drive */
/*-----------------------------------------------------------------------*/
DSTATUS disk_initialize (void)
{
BYTE n, cmd, ty, ocr[4];
WORD tmr;
init_spi();
#if _WRITE_FUNC
if (MMC_SEL) disk_writep(0, 0); /* Finalize write process if it is in progress */
#endif
for (n = 100; n; n--) rcv_spi(); /* Dummy clocks */
ty = 0;
if (send_cmd(CMD0, 0) == 1) { /* Enter Idle state */
if (send_cmd(CMD8, 0x1AA) == 1) { /* SDv2 */
for (n = 0; n ‹ 4; n++) ocr[n] = rcv_spi(); /* Get trailing return value of R7 resp */
if (ocr[2] == 0x01 && ocr[3] == 0xAA) { /* The card can work at vdd range of 2.7-3.6V */
for (tmr = 12000; tmr && send_cmd(ACMD41, 1UL ‹‹ 30); tmr--) ; /* Wait for leaving idle state (ACMD41 with HCS bit) */
if (tmr && send_cmd(CMD58, 0) == 0) { /* Check CCS bit in the OCR */
for (n = 0; n ‹ 4; n++) ocr[n] = rcv_spi();
ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2; /* SDv2 (HC or SC) */
}
}
}
else { /* SDv1 or MMCv3 */
if (send_cmd(ACMD41, 0) ‹= 1) {
ty = CT_SD1; cmd = ACMD41; /* SDv1 */
} else { /* Proteus 7.x MMC sim model */
ty = CT_MMC; cmd = CMD1; /* MMCv3 */
}
for (tmr = 25000; tmr && send_cmd(cmd, 0); tmr--) ; /* Wait for leaving idle state */
if (!tmr || send_cmd(CMD16, 512) != 0) /* Set R/W block length to 512 */
ty = 0;
}
}
CardType = ty;
release_spi();
return ty ? 0 : STA_NOINIT;
} |
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 11.03.2011 в 23:03.
|
|
|
|
11.03.2011, 23:03
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,537
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: 18F2550 & petit fat fs
А у меня так:
Код:
|
DSTATUS disk_initialize (void)
{
BYTE n, cmd, ty, ocr[4];
UINT tmr;
#if _USE_WRITE
if (CardType && MMC_SEL) disk_writep(0, 0); /* Finalize write process if it is in progress */
#endif
init_spi(); /* Initialize ports to control MMC */
DESELECT();
for (n = 10; n; n--) rcv_spi(); /* 80 Dummy clocks with CS=H */
ty = 0;
if (send_cmd(CMD0, 0) == 1) { /* Enter Idle state */
if (send_cmd(CMD8, 0x1AA) == 1) { /* SDv2 */
for (n = 0; n ‹ 4; n++) ocr[n] = rcv_spi(); /* Get trailing return value of R7 resp */
if (ocr[2] == 0x01 && ocr[3] == 0xAA) { /* The card can work at vdd range of 2.7-3.6V */
for (tmr = 10000; tmr && send_cmd(ACMD41, 1UL ‹‹ 30); tmr--) dly_100us(); /* Wait for leaving idle state (ACMD41 with HCS bit) */
if (tmr && send_cmd(CMD58, 0) == 0) { /* Check CCS bit in the OCR */
for (n = 0; n ‹ 4; n++) ocr[n] = rcv_spi();
ty = (ocr[0] & 0x40) ? CT_SD2 | CT_BLOCK : CT_SD2; /* SDv2 (HC or SC) */
}
}
} else { /* SDv1 or MMCv3 */
if (send_cmd(ACMD41, 0) ‹= 1) {
ty = CT_SD1; cmd = ACMD41; /* SDv1 */
} else {
ty = CT_MMC; cmd = CMD1; /* MMCv3 */
}
for (tmr = 10000; tmr && send_cmd(cmd, 0); tmr--) dly_100us(); /* Wait for leaving idle state */
if (!tmr || send_cmd(CMD16, 512) != 0) /* Set R/W block length to 512 */
ty = 0;
}
}
CardType = ty;
DESELECT();
rcv_spi();
return ty ? 0 : STA_NOINIT;
} |
Есть отличия.
|
|
|
|
11.03.2011, 23:06
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 18F2550 & petit fat fs
Сообщение от realid
|
Есть отличия.
|
Блин , надо было мне и этот файл у Chan брать . я только файлы petit на новые заменил...
Спасибо что носом ткнул.
Это наверное правленый для протеуса...
__________________
Осторожно , злой кот
|
|
|
|
11.03.2011, 23:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: 18F2550 & petit fat fs
Сообщение от realid
|
А откуда вообще взялось это 0xFF? Докум. смотрю, чего-то не вижу. Просто у Чена в инициализации есть 0xFF перед отсылкой команды, 1 при CS = 1 и 1 при CS = 0,
А в библиотеке от микрочипа, только начальные 80 импульсов и потом задержка 1 мс и затем команды без всяких 0xFF.
И то и то работает.
|
Микрочиповскую библиотеку не пробовал, опирался на Чена и какой-то сырец от атмела (сейчас уже не найду). В спеках такого нет-сто раз перерыл, но откуда-то этот эмпирический опыт всплыл.
|
|
|
|
11.03.2011, 23:39
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Вот так то , вот чем халява выходит...
realid, Еще раз спасибо за пинок в нужном направлении.
Все заработало . Засяду ка я чана читать...
Еще одна гадость . Я с этим проектом не могу запустит pickit2 как дебаггер .
В конфиге дебаг разрешен. Вываливается табличка Unable enter debug mode.
Эта же плата прекрасно дебажится в CCS ...
__________________
Осторожно , злой кот
|
|
|
|
11.03.2011, 23:44
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,537
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: 18F2550 & petit fat fs
Сообщение от dosikus
|
Еще одна гадость . Я с этим проектом не могу запустит pickit2 как дебаггер .
В конфиге дебаг разрешен. Вываливается табличка Unable enter debug mode.
|
Я немного запутался. В С18 или Hitech PICC18?
|
|
|
|
11.03.2011, 23:52
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: 18F2550 & petit fat fs
Сообщение от realid
|
Я немного запутался. В С18 или Hitech PICC18?
|
Не мудрено . Я тут такие прыжки с бубном делаю...
Сейчас на HI-Tech picc18 STD 9.51.
__________________
Осторожно , злой кот
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:45.
|
|