[an error occurred while processing this directive]
Ответ: Всё равно непонятно - вот мой рабочий примерчик...
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено mir 21 сентября 2004 г. 10:15
В ответ на: Ответ: пордон забыл смотрите ниже отправлено vitalik_27 21 сентября 2004 г. 09:14



//==============================================================================
// Настроить работу SPI0
// void setup_spi0();
.global _setup_spi0;
_setup_spi0:
iopg = SPI0_Controller_Page;
ar = 4; // SCK0 -  80MHz/8 = 10 MHz
io(SPIBAUD0) = ar;
ar = SPI0SEL1 | SPI0VALUE1;
io(SPIFLG0) = ar;
rts;

//==============================================================================
// Запись байта через SPI
// void spi_write(char);
.global _spi_write;
_spi_write:
iopg = SPI0_Controller_Page;
ar = SPE | MSTR | CPOL | CPHA | GM | SZ | TIMOD(TM_WRITE);
io(SPICTL0) = ar;
ar = dm(i4 + 1);
io(TDBR0) = ar;
nop;
nop;
nop;
swb_l0: ar = io(SPIST0);
ar = ar and 1;
if eq jump swb_l0;
rts;

//==============================================================================
// Чтение байта через SPI
// char spi_read_byte();
.global _spi_read_byte;
_spi_read_byte:
iopg = SPI0_Controller_Page;
ar = SPE | MSTR | CPOL | CPHA | GM | SZ | TIMOD(TM_READ);
io(SPICTL0) = ar;
ar = io(RDBR0); // Запуск приёма
nop;
nop;
nop;
srb_l0: ar = io(SPIST0);
ar = ar and 0x20;
if eq jump srb_l0; // если буфер приема пуст возврат
ax1 = io(RDBRS0); // Без запуска нового чтения
rts;



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru