atmega328 spi и 23lc1024

Обсуждаем контроллеры компании Atmel.
Ответить
alex1126
Вымогатель припоя
Сообщения: 567
Зарегистрирован: Ср дек 19, 2012 12:16:22

atmega328 spi и 23lc1024

Сообщение alex1126 »

Не получается подружить atmegу328 и 23lc1024 по spi.
Подключил SO к MISO, SI к MOSI, клок к клоку, холд к питанию подтянул. Пишу/читаю вот так:

Код: Выделить всё

void SPI_MasterTransmit(char cData)
{
   CS_LO;
   /* Запуск передачи данных: */
   SPDR = cData;
   /* Ожидание завершения передачи: */
   while(!(SPSR & (1 << SPIF)));
   CS_HI;
}

char SPI_Receive(void)
{
   CS_LO;
   /* Чтение принятых данных и возврат: */
   return SPDR;
   CS_HI;
}
Тишина в ответ. Посмотрел в даташите на 23LC1024 - там по диаграмам CS опускается в ноль и держится там до окончания приема-передачи. Сделал так же - ничего не изменилось. Не удаеться даже прочитать параметр MODE.

Куда копать? Кроме как то что микросхема мертвая - что еще может быть?

На той же spi висит еще одно устройство - оно работает нормально. Сейчас отключил его в попытках заставить работать 23LC1024
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1405
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: atmega328 spi и 23lc1024

Сообщение OKF »

Код: Выделить всё

   CS_LO;
   /* Чтение принятых данных и возврат: */
   return SPDR;
   CS_HI;
Оригинально-с.
Реклама
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: atmega328 spi и 23lc1024

Сообщение Demiurg »

1. return потом другая команда. То есть выход ещё до выполнения следующей команды.
2. Алгоритм неверен.
Установка cs в 0. Запуск spi модуля. То есть, отправка в spdr. Ожидание флага окончания передачи. Либо прерывание. Установка cs в 1. Чтение spdr.
Скачайте, купите любую книгу по МК avr и разберитесь как работает spi.
Вот что за мода у начинающих. Читать не хотят. Берут делают как им понимается, потом бегут на форумы.
Вот вы зачем взялись за МК, если в лом книгу почитать. Самому попытаться разобраться. Сразу на форумы бежите...
Ответить

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