Перейти к содержанию
    

SPI и ATmega64

Здравствуйте, все!

 

Появилась проблема при работе с SPI на меге64. И не то, чтобы я неопытный, и проектов понаделал кучу, но вошел в ступор и никак не могу понять в чем проблема.

 

Mega в MasterMode.

 

Инициализация:

void spi_init(void)
{
  SPCR = 0x5С; //setup SPI
  SPSR = 0x00; //setup SPI
}

 

Передача данных:

char spi_sendbyte(char byte)
{
  SPDR = byte;  // Start transmission 
  while(!(SPSR & (1<<SPIF)));  // Wait for transmission complete 
  return (SPDR);  
}

 

Код проверен, использовался не раз.

 

При вызове spi_sendbyte контроллер намертво залипает, при этом ножки его (SCK, MOSI) так и не дергаются.

 

Помогите разобраться в проблеме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может SS настроен как вход и находится в низком уровне ?

Изменено пользователем Юрий_СВ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чего -.

 

Дополнение: Проблема чисто программная. Сижу и с ИАРом и с АВРСтудией. Симулятором наблюдаю следующее: при инициализации SPI при выполнении строки: SPSR = 0x00 снимается бит MSTR в SPCR. При этом SPSRстановится равным 0x80. И это мне вообще непонятно.

 

Все, Спасибо Юрию. Действительно SS настроен на вход. Как говорится слона то я и не заметил

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...