реклама на сайте
подробности

 
 
> SPI как USI, как заставить передать 5ть 13ть и т.п. бит, Какие есть предложения?
Gennadiy_
сообщение Oct 26 2006, 15:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



надо принять и передать количество бит не кратное 8ми, желательно на предельной скорости, с этой задачей неплохо справиться USI, но его нет в AT90USBхххх .

Какие есть предложения?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
=GM=
сообщение Oct 30 2006, 10:18
Сообщение #2


Ambidexter
*****

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



Цитата(Gennadiy_ @ Oct 26 2006, 15:41) *
надо принять и передать количество бит не кратное 8ми, желательно на предельной скорости, с этой задачей неплохо справиться USI, но его нет в AT90USBхххх .

Какие есть предложения?

Пришел в голову четвертый вариант, наиболее простой.

1) Настраиваете SPI на скорость 8 Мбит/с
2) Вместо SCK используете выход OCR1A (на 8 МГц).
3) Округлите ваши байты в большую сторону и начните передавать.
4) Настройте прерывание таймера0 на время передачи N бит. Прерывание должно запрещать импульсы с OCR1A.

Как только вы передадите N бит, наступит прерывание, которое остановит выдачу импульсов синхронизации, следовательно, прекратится передача битов во внешнее устройство. Для надежности можно загнать в последний байт соответствующие единички или нули.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Gennadiy_
сообщение Oct 31 2006, 16:45
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 79
Регистрация: 13-01-06
Из: Москва
Пользователь №: 13 133



Цитата
Пришел в голову четвертый вариант, наиболее простой.

1) Настраиваете SPI на скорость 8 Мбит/с
2) Вместо SCK используете выход OCR1A (на 8 МГц).
3) Округлите ваши байты в большую сторону и начните передавать.
4) Настройте прерывание таймера0 на время передачи N бит. Прерывание должно запрещать импульсы с OCR1A.


Я имел ввиду программный вывод битов, при выводе SCK с таймера, когда посчитал то понял, что CLK/4 неполучится, поэтому ваш вариант я не угадал.

Я так понял, что совместное творчество принесло плоды, и это решение быстрее чем было у вас.
Тока прерывание тут может неуспеть.

CLK/4 получается если формировать SCK программно, а данные принимать/выводить по SPI.

Надо было местами поменять!!! :-))
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016