[an error occurred while processing this directive]
С виду нормально, но...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Abc123 02 августа 2002 г. 11:21
В ответ на: Опять-таки SPI в AT89S8252, будь он неладен! отправлено ПиТёК 01 августа 2002 г. 10:02


1) Для работы с SPI я пользуюсь 2-мя процедурами, с которыми до сих пор не было проблем:

// spiInit: divisor=4, ClockFace, ClockPolarity, Master,
// selects MSB first data transmission, enable SPI,
// disable Interrupt SPI

void spiInit ( void )
{
adDESEL(); // DESELECT ADC
MOSI = 1;
MISO = 1;
SCK = 1;
SPCR = // Default divisor (/4)
bit2 | // Clock Phase.
bit3 | // Clock Polarity.
bit4 | // Master Select.
bit6; // SPI Enable.
}

// spiRW(): SPI read/write function
//
// Usage:
// read:
// X = spiRW(0);
//
// write:
// spiRW(X);
//
// write + read:
// X = spiRW(Y);
//
uchar spiRW (uchar Byte)
{
MOSI = 1;
MISO = 1;
SCK = 1;
SPDR = Byte;
while ( (SPSR & SPIF_ ) == 0 );

return( SPDR );
}


В k=100; .... k-- для "предотвращения зависания" нужды нет, если только уверен, что программа выполняется в правильном процессоре :)

2) Почему нельзя мониторить PIN готовности (MISO)
в промежутках между обменами по SPI не перепрограммируя SPCR ?

3) Честно говоря, сам я никогда не пробовал "в полете"
включать/выключать SPI, но сильно сомневаюсь,
что с этим есть какие-то проблемы.
Что значит фраза "на выходах SPI ничего не появляется" ?
Там 1-цы или нули ?


4) Исходные тексты в конференцию желательно "оформлять" внутри
HTML-тэгов:
[pre]
исходники на C
[/pre]

Фигурные скобки замени на угловые.

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

Ответы



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

E-mail: info@telesys.ru