Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 09.12.2008, 15:31  
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию Mega16+MMC TS1GMMC4

Для начала просмотрел этот топик и ссылки с него.
https://kazus.ru/forum/topic_12548-0-asc-0.html
С учетом замечаний получился такой код.
//////////////////////////////////
unsigned char SPI(unsigned char d)
{
unsigned char received = 0;
SPDR = d;
while(!(SPSR & (1‹‹SPIF)));
received = SPDR;
return (received);
}
/////////////////////////////////////////////////////////////////////////////////
unsigned char Command(unsigned char Com,unsigned long int Adr,unsigned char CRC )
{
SPI(Com);
SPI(Adr››24);
SPI(Adr››16);
SPI(Adr››;
SPI(Adr);
return SPI(CRC);
}
////////////////////////////
unsigned char MMC_Init(void)
{
unsigned char i=0,b=0;
SPICS=1; // disable MMC
for(i=0; i ‹ 10; i++) SPI(0xFF);
SPICS=0; // enable MMC
b=Command(0x40,0,0x95);
i=0;
while (b!=1)
{
i++;
b=SPI(0xFF);
if (i==0) return 1;
}
b=Command(0x41,0,0xFF);
i=0;
//buf2[i]=b;
while (b!=0)
{
i++;
b=SPI(0xFF);
//buf2[i]=b;
if (i==0) return 2;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////
main

SPCR=0b01010010;;
SPSR=0x00;
SPICS=1; // disable MMC
/////////////////////////////////////////////////

Получил ответ 0х01 при посылке команды 0х40,все ОК!
Но в ответ на команду 0х41 получаю опять 0х01????
Начал записывать в буфер последовательность ответов.
Для команды 0х40 ответы {FF,FF,01} как говорится то что доктор прописал.
А для команды 0х41{FF,FF,01,FF,FF и далее одни FF}, а где же ожидаемое 0х00???
Перепробывал все режимы SPI, в 3 режиме то же самое, а в 1 и 2 вместо 0х01 получил 0х80 совсем ни туда.
Где грабли???
Реклама:
__________________
Не ошибается лишь тот, кто ни чего не делает!
woroba вне форума  
Непрочитано 09.12.2008, 23:47  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

я удивляюсь, что вообще ответило. Вот смотрите -выдача команды - это ведь 6 байт, а что вы посылаете ???
unsigned char Command(unsigned char Com,unsigned long int Adr,unsigned char CRC )
{
SPI(Com);
SPI(Adr››24);
SPI(Adr››16);
SPI(Adr››icon_cool.gif;
SPI(Adr);
return SPI(CRC);
}
С хера Вы забираете СRC, когда должны выдавать ???
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 09.12.2008, 23:59  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Код:
unsigned char mmc_write_command (unsigned char Com,unsigned long int Adr,unsigned char CRC)
{
unsigned char tmp = 0xff;
mmc_dis();
mmc_write_byte(0xFF);
mmc_en();
SPI(Com);
SPI(Adr››24);
SPI(Adr››16);
SPI(Adr››8;
SPI(Adr);
SPI(CRC); 
	while (tmp == 0xff)
                  {
             tmp = mmc_read_byte();
                   }            
	return(tmp); // 
}
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 10.12.2008, 08:11  
woroba
Гражданин KAZUS.RU
 
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
woroba на пути к лучшему
По умолчанию

Сообщение от user_ushastyj
я удивляюсь, что вообще ответило. Вот смотрите -выдача команды - это ведь 6 байт, а что вы посылаете ???
unsigned char Command(unsigned char Com,unsigned long int Adr,unsigned char CRC )
{
SPI(Com);
SPI(Adr››24);
SPI(Adr››16);
SPI(Adr››icon_cool.gif;
SPI(Adr);
return SPI(CRC);
}
С хера Вы забираете СRC, когда должны выдавать ???
Здесь вы не правы тут всё правильно, только вместо смайлика 8(как то он прицепился).
Грабли нашел!!!
Просто после кажддого обращения CS=1, а перед CS=0.
А не один раз как было уменя.
Всем спасибо вопрос снят.
__________________
Не ошибается лишь тот, кто ни чего не делает!
woroba вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация стабильных импульсов на mega16 moroz_gr Микроконтроллеры, АЦП, память и т.д 14 02.03.2009 17:58
Mega16: вход в противофазу OCR1A и B code-by Микроконтроллеры, АЦП, память и т.д 8 10.11.2008 12:18
Mega16 + TDA7468 timrf Микроконтроллеры, АЦП, память и т.д 10 31.08.2007 15:08
mega16 , траблы с АЦП MiHoY Микроконтроллеры, АЦП, память и т.д 23 28.02.2007 12:24
mega16 - int0 - наводка? mel2 Микроконтроллеры, АЦП, память и т.д 10 26.07.2006 08:08


Часовой пояс GMT +4, время: 23:36.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot