Обсуждаем контроллеры компании Atmel.
Ответить

atmega328 spi и 23lc1024

Вс дек 04, 2022 15:49:46

Не получается подружить 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

Re: atmega328 spi и 23lc1024

Пн дек 05, 2022 10:29:17

Код:
   CS_LO;
   /* Чтение принятых данных и возврат: */
   return SPDR;
   CS_HI;

Оригинально-с.

Re: atmega328 spi и 23lc1024

Пн дек 05, 2022 22:43:19

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