[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Буриданов Осел 19 января 2005 г. 11:06
В ответ на: Неужели же никто не поможет? (из вчерашней конференции "Помогите, плз, въехать в ADS7843 ") отправлено Zloj_ya 19 января 2005 г. 10:13

У меня примерно так:
DCLK - RC3
CS - RC6 (или любой другой)
DIN - RC5
DOUT - RC4
RC 3,4,5 - входы/выходы SPI интерфейса в пике, RC6 - просто любой пин, настроенный на вывод.

В начале программы:
CS = 1;
SSPSTAT = 0b01000000;
SSPCON1 = 0b00100001; // Скорость тактов SPI 40/16=2,5 МГц

Чтение из АЦП происходит примерно так (Это для 16-и битной ADS8341):
adc_cs = 0;
*((byte *) &adc_in +0) = SSPBUF; // Сброс BF

SSPBUF = ch0;

while(!BF); // Ожидание, пока завершится прием/передача команды
*((byte *) &adc_in +0) = SSPBUF; // Сброс BF
SSPBUF = 0; // Инициируем прием старшего байта

while(!BF); // Ожидание, пока завершится прием/передача команды
*((byte *) &adc_in +0) = SSPBUF; // Прием старшего байта
SSPBUF = 0; // Инициируем прием младшего байта
while(!BF); // Ожидание, пока завершится прием/передача команды
*((byte *) &adc_in +1) = SSPBUF; // Прием младшего байта

adc_cs = 1; // Закрываем CS

Примечание:
---------
byte делается так:
typedef unsigned char byte;
---------
такой строкой:
*((byte *) &adc_in +0) = SSPBUF; // Сброс BF
я просто сбрасываю бит BF
adc_in - беззнаковое двухбайтное
---------
ch0 - байт для инициализации АЦП, смотри даташит
---------

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru