Форум
 

Вернуться   Форум "Фрикер Клуб" - кодграббер своими руками > Основной раздел > Микроконтроллеры

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 16.04.2014, 17:20   #21
Paul74s Меню Пользователя
Резидент клуба
 
Аватар для Paul74s
 
Регистрация: 16.11.2012
Сообщений: 587
По умолчанию Re: attiny2313 программный SPI

В дырки впаяешь штырьки и через разъем к своей плате, или паяешь напрямую.
Программируется обычный чип через SPI, а этот через UART. Насколько я понял из описаний, второй чип на плате это конвертер SPI <=> UART.
Paul74s вне форума   Ответить с цитированием
Старый 16.04.2014, 18:49   #22
Бурый Меню Пользователя
Резидент клуба
 
Аватар для Бурый
 
Регистрация: 05.01.2014
Сообщений: 432
По умолчанию Re: attiny2313 программный SPI

Уважаемый Paul74s написал тебе ЛС.
Бурый вне форума   Ответить с цитированием
Старый 07.06.2017, 10:19   #23
mr_Alex Меню Пользователя
Вступил в клуб
 
Регистрация: 07.06.2017
Сообщений: 15
По умолчанию Re: attiny2313 программный SPI

Приветствую всех. Уже две недели не могу справится с программным SPI в качестве Slave для attiny2313. Обшарил весь интернет, но примеров на С вообще не нашел. Для мастера - есть, а для раба - нет. Использовать MOSI-MISO не могу, т.к. порт В занят. Свободна младшая половина D. Городил огород на прерывании NIT0 в для фиксации синхроимпульса и записи в буфер информации с входа, но так и не добился работы. Помогите кодом для Студии или ткните носом, если такой уже есть. Без общественного разума не справлюсь!
mr_Alex вне форума   Ответить с цитированием
Старый 08.06.2017, 13:20   #24
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,203
По умолчанию Re: attiny2313 программный SPI

Общественный разум занят глобальными задачами
А чем заняты выводы mоsi-miso, какие задачи решают и т.д.? Без четкой задачи тяжко, мы же не телепаты.
Какие книжки учебные есть? Может плохо гуглил?
EPA вне форума   Ответить с цитированием
Старый 08.06.2017, 14:05   #25
mr_Alex Меню Пользователя
Вступил в клуб
 
Регистрация: 07.06.2017
Сообщений: 15
По умолчанию Re: attiny2313 программный SPI

Порт В полностью занят датчиками, которые вызывают прерывание - есть такая фишка в 2313, старшая часть порта D работает на индикаторы на регистрах 74HC595. Вся эта конструкция образует собой интеллектуальный слейв-датчик, который должен по запросу от мастера (контроллера) отдавать ему информацию по SPI. Датчиков будет несколько - именно по этому он работает Слейвом, а Мастер сам решает у какого датчика когда спрашивать. Но все это отношение к вопросу не имеет. Первоначально была связка 1 датчик - 1 контроллер по этому сделал наоборот и реализовал программный мастер на датчике (благо примеров в инете навалом) - работает, датчик шлет, контроллер принимает. А как сделать наоборот - никак не соображу.
Аппаратный Slave SPI запускал - работает как часы, но мне не подходит.
Не спорю - может искал плохо - просмотрел по 40 страниц в выдаче гугла и яндекса (400 ссылок на каждого) - дальше терпения не хватило.
Учебников куча, только там одно и то же - как юзать аппаратный SPI.
Сам не программист, только разбираюсь. По этому тяжело все двигается. И уже руки опускаются.
mr_Alex вне форума   Ответить с цитированием
Старый 09.06.2017, 08:45   #26
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,203
По умолчанию Re: attiny2313 программный SPI

Ну взял бы 2313А, внимание тип А, там у него все порты (все ноги) работают на внешние прерывания. PCINT0-portB, PCINT1-portD & etc. И тогда у тебя моси-мисо-слк будут на "рабе" свободны.

Добавлено через 1 час 34 минуты
Немного неправильно написал.
PCINT0-PCINT7 is PortB,
PCINT8,9 is portA, PCINT10 и до конца портD.
Инициализация рег-ми PCMSK, PСМSK1, РСМSК2.
Напимер: хотим вн.прерывание на ножке 9(порт РD5)
РСМSK1=(1<<РСINT16).
Переведи датчики с портаВ на портD, освободив ноги моси,мисо, слк. И тогда тебе не надо придумывать программный Sрi, ну если допустим мы мазохисты, то тогда используем usаrt.

Добавлено через 55 минут
Кстати, через USАRТ ты "с экономишь" одну ножку на рабе, тебю не нужно будет испокьзовать SLК. Короче, варианты разные...
EPA вне форума   Ответить с цитированием
Старый 09.06.2017, 08:51   #27
mr_Alex Меню Пользователя
Вступил в клуб
 
Регистрация: 07.06.2017
Сообщений: 15
По умолчанию Re: attiny2313 программный SPI

Опа! Про то что все порты могут вызывать прерывания - не знал про такую особенность А. Думал, что они одинаковые и только порт В так умеет. Спасибо большое за наводку, буду искать даташит на А.
Про освобождение аппаратного SPI я понял уже вчера вечером - начал переделывать. Переношу на INT0 и INT1. По другому вероятно, я его не осилю. Код, конечно разрастается, но место еще есть.
Самое интересно, что многие говорят про простую реализацию SPI Slave, а примеров кода нет. Видно не такая она и простая.
mr_Alex вне форума   Ответить с цитированием
Старый 09.06.2017, 11:45   #28
mr_Alex Меню Пользователя
Вступил в клуб
 
Регистрация: 07.06.2017
Сообщений: 15
По умолчанию Re: attiny2313 программный SPI

Освободил выводы SPI, перекинув часть датчиков на INT0,1. Выбору кристалла не нашлось места в порту B и он ушел в D. Все завелось, но появилось 2 вопроса:
1. ранее датчики порта В вызывали одно прерывание и обработчик возвращал один номер датчика с бОльшим номером (использовал case для выбора), даже если срабатывали несколько. Это нормально. Теперь датчики оказались в разных прерываниях и разных обработчиках. Думаю уже понятно - на выходе куча мала. Вот теперь сижу и думаю - как восстановить логику работы.
2. SPI заработал, данные передаются, но мастер почему-то принимает тоже что и посылает, хотя в слейв загружается нужное значение. Петля получилась. Тоже загадка какая-то.
mr_Alex вне форума   Ответить с цитированием
Старый 09.06.2017, 16:53   #29
EPA Меню Пользователя
Супер Модератор
 
Аватар для EPA
 
Регистрация: 01.11.2016
Сообщений: 1,203
По умолчанию Re: attiny2313 программный SPI

Знаешь почему про SPI slave мало написано? Потому что, есть легчее и оптимальнее варианты-это USART. И код не должен возрасти.

Добавлено через 44 минуты
Ну уж если хочешь по меньше переделывать свой код и пользоватся двумя прерываниями на портах В и D, используй одну и туже функцию на двух обработчиках одновременно, где аргументами функции будут параметры ( номер и величины) датчиков. Это раз.
Второе: удели внимание иерархии векторам прерывании, например сработает прерывание одновременно на INТ0, INT1 и РСINT0, как думаешь какое прерывание сработает первым, а какое ваще захерится?
EPA вне форума   Ответить с цитированием
Старый 12.06.2017, 19:07   #30
alt Меню Пользователя
Вступил в клуб
 
Регистрация: 01.12.2012
Сообщений: 38
По умолчанию Re: attiny2313 программный SPI

Вот что нашел на просторах интернета. Может быть поможет
alt вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 12:02. Часовой пояс GMT +3.


vBulletin 4.1.0 Перевод: zCarot
(C) www.phreakerclub.com
Яндекс.Метрика