|
atmega 168 аппаратный SPI, чтение данных некратно 8бит |
|
|
|
 |
Ответов
(1 - 14)
|
Jul 13 2010, 04:06
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
Цитата((vS) @ Jul 13 2010, 05:05)  т.е. нужно писать свою либу или функцию? Soft-SPI - элементарная вещь. Снизу пример на 16 бит. Легко можно модифицировать к любому кол-ву бит. Функция одна т.к. чтение из SPI это та же самая запись с использованием возвращаемого функций результата. Код #define HI(x) SPI_PORT |= (1<<(x)) #define LO(x) SPI_PORT &= ~(1<<(x))
unsigned int SPIWriteWord(unsigned int cmd) { unsigned char i; unsigned int recv; recv = 0; LO(SCK); LO(nSS); for(i=0; i<16; i++) { if(cmd&0x8000) HI(SDI); else LO(SDI); HI(SCK); recv<<=1; if( SPI_PIN&(1<<SDO) ) { recv|=0x0001; } LO(SCK); cmd<<=1; } HI(nSS); return recv; }
|
|
|
|
|
Jul 13 2010, 04:24
|

Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 13-07-06
Из: С-Пб
Пользователь №: 18 778

|
дак я знаю, что элементарная  если честно, то с софтового варианта и начал.... но чот наверно на солнце перегрелся на выходных, решил сделать на аппаратном, раз он есть... и уперся спасибо за пример  кстати, в вашем варианте МАСТЕР, а у меня СЛЭЙВ  собственно вопрос, можно ли аппаратным SPI считать МЕНЬШЕ 8 бит?
Сообщение отредактировал (vS) - Jul 13 2010, 04:27
--------------------
тут может быть какаято реклама
|
|
|
|
|
Jul 13 2010, 06:08
|

Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 13-07-06
Из: С-Пб
Пользователь №: 18 778

|
я тоже его недавно встретил  драйвер клавиатуры и дисплея от OKI MASTER uPD 78какойта
--------------------
тут может быть какаято реклама
|
|
|
|
|
Jul 15 2010, 14:55
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Пришла в голову идея, как ведомому МК аппаратно принять любое количество бит. Надо просто досчитывать импульсы до состояния, кратного 8-ми. Скажем, надо принять 12 бит, принимаем 8 бит, как обычно, после записи следующих 4-х бит клок мастера остановится, а МК выработает оставшиеся 4 импульса, дальше думаю, всё ясно. Принимать клоки от мастера и МК можно, скажем, через схему 2-И или 2-ИЛИ, вариантов много.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jul 15 2010, 16:27
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
QUOTE Сами пользовались? В режиме мастера точно работает. В слейве, как мне помнится, биты досылает. Проверить не долго. QUOTE Ваш вариант на большие скорости, скажем, больше 1 Мбита/с не потянет Это почему?
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Jul 16 2010, 10:28
|

Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 13-07-06
Из: С-Пб
Пользователь №: 18 778

|
смотрю я не одинок в своих "нестандартных" пакетах  а дослать клок это мысль...
--------------------
тут может быть какаято реклама
|
|
|
|
|
Jul 16 2010, 11:23
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Это ещё что. Мне вот надо поставить МК, чтобы разгрузить DSP, посылка 37 бит на скорости 5 Мбод, причём протокол I2C-подобный и очень жёсткие требования к фронтам. Т.е. меняем бит данных, ждём 50 нс, выставляем клок, ждём 100 нс, снимаем клок, ждём 50 нс, новый бит данных, и т.д...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|