Перейти к содержанию
    

SPI по двум ногам в одну сторону между двумя 328

С одновибратором - это интересное решение. Если у МК нет свободной ноги для выхода CS и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а чем софтовый UART не подходит? во времена аврок 1200 делали и даже работало %)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но ведь программно реализованный интерфейс загружает МК, а аппаратный передает данные в фоновом режиме?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во-первых, всем огромное спасибо, что не оставили в беде и обсуждаете - я как раз отлаживал это все по-старинке, но, пока это ни к чему хорошему не привело.

 

У меня две атмеги 328, обе на 16МГц тактовой. Оптокоплер - быстрый, должен до 100МБит тянуть, то есть такт можно по нему посылать, но я так не делал.

 

Данные с посылщика я пока группировал по 16байт. Могу меньше, даже в 8байт с байтовым CRC можно вписаться.

 

Проблемы в том, что

1. посыльщик изредка перезагружается...

2. иногда глючит оптокоплер, наверное его пробивает :(

3. приемник сильно занят другой работой,

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

 

Пока я делал так, получаю на одну ногу прерывание, дальше по другой ноге софтверный SPI c 4МГц тактовой, все можно уложить в 16мкс, но, для приемника даже 16мкс - очень критично, он не может в произвольный момент остановиться и сказать все, я только слушаю.

 

iiv, я правильно понял, что прибито гвоздями только число линий в интерфейсе, а с платой можно и поиграться?

 

да, у приемника можно хоть все SPI-ные ноги куда-то пристроить. Сильно больше 4-х ног у меня нет, линий - только 2, прибиты гвоздями сквозь толстенную коробку с трансформаторным маслом :(

 

Тогда можно поставить одновибратор с перезапуском (в простейшем случае состоящий из диода+резистора+конденсатора), который пачку импульсов SCK растянет в длинный SS.

Если правильно выбрать CPOL/CPHA, всё будет хорошо. Для устранения проблемы байтовой сихронизации достаточно будет гарантировать паузу между байтами больше времени выдержки одновибратора. Можно — между пакетами, внутри пакта все байты пойдут одной пачкой, если успевать кормить SPI на передаче, синхронизм врядли успеет куда-то деться, а успеет — на то CRC.

 

идейно, спасибо, буду пробовать, может получится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...