Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Управление atmega16 с ПК
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
zi4rox
Всем привет,

Как с ПК передать байты (некую команду допустим) в МК по SPI я знаю. Загвоздка вот в чем:
подскажите плиз как запрограммировать сам МК, чтобы тот прочитал переданный байт и уже мог с ним работать? (Там получается что МК в режиме SLAVE)

* Любой пример рабочего кода, любой совет - за все огромное спасибо!
** Также сейчас осваиваю proteus - если есть какие нибудь шаблоны/модели интересные где с SPI можно поиграться - поделиться так же плиз
amaora
Пример из datasheet,
Код
void SPI_SlaveInit(void)
{
  /* Set MISO output, all others input */
  DDR_SPI = (1<<DD_MISO);
  /* Enable SPI */
  SPCR = (1<<SPE);
}
char SPI_SlaveReceive(void)
{
  /* Wait for reception complete */
  while(!(SPSR & (1<<SPIF)))
   ;
  /* Return data register */
  return SPDR;
}
SysRq
В datasheet'е на МК есть пример кода и на С, и на ассемблере.

amaora опередил wink.gif
zi4rox
Цитата(SysRq @ Nov 9 2008, 17:32) *
В datasheet'е на МК есть пример кода и на С, и на ассемблере.


Видел этот пример, но использовать не получилось. Там ещё написано: что нужно подключить специальный хеадер чтобы эти функции заюзались.

В CVAVR подключил mega16.h - но скомпилить все равно не получается.
SysRq
WinAVR, ATMega16:
CODE
#include <avr\io.h>

#define DDR_SPI DDRB
#define DD_MISO PB6

void SPI_SlaveInit(void)
{
/* Set MISO output, all others input */
DDR_SPI = (1 << DD_MISO);
/* Enable SPI */
SPCR = (1 << SPE);
}

unsigned char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
while(!(SPSR & (1 << SPIF)))
;
/* Return data register */
return SPDR;
}

#define CMD1 0xC0
#define CMD2 0xC1
#define CMD3 0xC2
#define CMD4 0xC3

int main(void)
{
SPI_SlaveInit();

for(;;)
{
switch(SPI_SlaveReceive())
{
case CMD1:
break;
case CMD2:
break;
case CMD3:
break;
case CMD4:
break;
default:
// cmd unknown
break;
}
}

return 0;
}

dimadima
я делал цветной светодиодный экран. И я управлял МК через lpt порт и скорость до 800 Кб/с



через lpt порт передаешь как тебе угодно сам пишешь правила передачи. я делал ведомый МК и ПК делал полная свобода!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.