artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 Я делал вообще полностью программный и мастер и слэйв SPI, по той причине что ножка CS была занята. Пришлось извращаться без CS. То есть по трем ножкам сделал : MOSI, MISO, SCK 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 2 июля, 2018 Автор Поделиться Опубликовано 2 июля, 2018 А тут вообще 2 ножки получается. Мозг закипает. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 Ну тебе нужно передавать только данные? 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
BARS_ Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 28 минут назад, DimonRX сказал: По SPI у меня подключен цифровой потенциометр MCP41010. Сделать под него программный SPI, а аппаратным читать данные 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 Я делал полный дуплекс spi master и spi slave без применения ножки CS. Все из за того что платы уже сделаны и выпускались серийно, и нужно было расширить функционал. 30 байт у меня шлется в две стороны с клоком 100мкс 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 2 июля, 2018 Автор Поделиться Опубликовано 2 июля, 2018 Мне их нужно читать, а тактового импульса нет. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 Схему покажи 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 1 минуту назад, DimonRX сказал: тактового импульса нет. Как это нет? А вывод CLK? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 3 минуты назад, DimonRX сказал: тактового импульса нет. Так программно сформируй его! 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 1 минуту назад, artos5 сказал: программно сформируй Да у него чтение, а не запись. МК шлет данные на сдвиговый регистр он хоте подцепиться к этой линии и считывать данные 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 5 минут назад, BARS_ сказал: ...МК шлет данные на сдвиговый регистр он хоте подцепиться к этой линии и считывать данные 11 минуту назад, DimonRX сказал: ...а тактового импульса нет. Разве вход регистра (CP) не является тактовым? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 2 июля, 2018 Автор Поделиться Опубликовано 2 июля, 2018 6 минут назад, BARS_ сказал: Да у него чтение, а не запись. МК шлет данные на сдвиговый регистр он хоте подцепиться к этой линии и считывать данные Вот именно так. Могу схему в протеусе выложить, но только вечером. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 В сдвигового регистра есть клок. Можно по двум ножкам вычитать данные с регистра. 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 4 минуты назад, Геннадий сказал: является тактовым? Да я вообще не пойму в чем проблема. Чуть раньше автор сам написал: 1 час назад, DimonRX сказал: 1. выдаём первый старший бит из пачки на линию DATA 2. опускаем в лог. 0 линию CLC 3. поднимаем в лог.1 линию CLC 4. повторяем все пункты с 1, пока не выдадим все биты. Т.е. и CLK и MOSI есть. Что еще надо даже и не знаю. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 1 час назад, DimonRX сказал: Мысли были попробовать по SPI прочитать, но не могу врубиться, как? Вот рабочий код для слэйва с полным дуплексом: interrupt [PC_INT0] void pin_change_isr0(void) { static char mask=0x80; // было 0x80 flg_spi&=~0x01; if(SCK_S) // по верхнему фронту считываем данные и отправляем тоже { if(data_send[y] & mask)MISO_S=1; // формируем данные data<<=1; if(MOSI_S) { data|=0x01; } else { data&=~0x01; } mask>>=1; x++; if(x>7) { x=0; data_buff_spi[y]=data; data=0; if(++y>33){ y=0; } timer=0; mask=0x80; flg_spi|=0x01; } } else { MISO_S=0; } } Но если нужно только читать то сделай так: // Pin change 0-7 interrupt service routine interrupt [PC_INT0] void pin_change_isr0(void) { flg_spi&=~0x01; if(SCK_S) // по верхнему фронту считываем данные и отправляем тоже { data<<=1; if(MOSI_S) { data|=0x01; } else { data&=~0x01; } mask>>=1; x++; if(x>7) { x=0; data_buff_spi[y]=data; data=0; if(++y>33){ y=0; } timer=0; mask=0x80; flg_spi|=0x01; } } } 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 2 июля, 2018 Автор Поделиться Опубликовано 2 июля, 2018 7 часов назад, artos5 сказал: Схему покажи 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 2 июля, 2018 Поделиться Опубликовано 2 июля, 2018 При такой схеме нормально не подружешь 2 мк. Выдели прерывание одно, например int0 и на него заведи клок. А второй вход возьми уже любой, будет data. 0 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 3 июля, 2018 Поделиться Опубликовано 3 июля, 2018 7 часов назад, DimonRX сказал: "схема" U3-это добавочный-твой контроллер, на U1 построена исходная схема, ТАК? Так какие данные-сигналы ты хочешь получить с исходной схемы на добавочный контроллер??? Тут же нет ни одной линии связи между ними!!! О чем эта схема??? 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 3 июля, 2018 Автор Поделиться Опубликовано 3 июля, 2018 U1-это контроллер моей схемы, где я пытаюсь управлять вращением серводвигателя. U3-контроллер исходной схемы (очень сильно упрощенной). С его помощью смоделирована индикация исходной схемы. Сигнал я хочу получить с U4, связей нет потому, что пока я думаю, куда на U1 завести входы U4. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 3 июля, 2018 Поделиться Опубликовано 3 июля, 2018 (изменено) 1 час назад, ruhi сказал: О чем эта схема??? О том, как правильно замкнуть MOSI(!!!) на общий (через кнопку). Изменено 3 июля, 2018 пользователем Геннадий 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 3 июля, 2018 Поделиться Опубликовано 3 июля, 2018 3 минуты назад, DimonRX сказал: пока я думаю, куда на U1 завести входы U4. В чем проблема завести на аппаратный SPI МК? MCP41010 можно выкинуть на ПРОГРАММНЫЙ SPI, его скорости с головой хватит 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 3 июля, 2018 Поделиться Опубликовано 3 июля, 2018 3 минуты назад, DimonRX сказал: Сигнал я хочу получить с U4, связей нет потому, что пока я думаю, куда на U1 завести входы U4. Б##ха муха! Я же написал куда что подключить. Напишу более детально: PD2 U1 вешаешь на ножку 8 U4. PD1 U1 на ножки 1,2 U4. Берешь мой пример и добавляешь. Только обработчик прерывания переделай. Управление с ножки PD2 переназначить на другой вывод, чтобы прерывание освободить! 1 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 3 июля, 2018 Автор Поделиться Опубликовано 3 июля, 2018 1 час назад, Геннадий сказал: О том, как правильно замкнуть MOSI(!!!) на общий (через кнопку). Это один из первых вариантов. Этот косяк давно устранен. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
DimonRX Опубликовано 3 июля, 2018 Автор Поделиться Опубликовано 3 июля, 2018 18 часов назад, artos5 сказал: // Pin change 0-7 interrupt service routine interrupt [PC_INT0] void pin_change_isr0(void) { flg_spi&=~0x01; if(SCK_S) // по верхнему фронту считываем данные и отправляем тоже { data<<=1; if(MOSI_S) { data|=0x01; } else { data&=~0x01; } mask>>=1; x++; if(x>7) { x=0; data_buff_spi[y]=data; data=0; if(++y>33){ y=0; } timer=0; mask=0x80; flg_spi|=0x01; } } } @artos5, а можно несколько вопросов по коду? Просто я пишу не на С, а на Pascal-e, и от конструкций С у меня мозг взрывается . flg_spi - это переменная? Почему она нигде не используется? Те же вопросы в отношении mask и timer? Что такое SCK_S и MOSI_S? y - это индекс элемента массива данных? Т.е. в примере читается максимум 32 байта? Извиняюсь за дурацкие вопросы, но язык С у меня с детства не пошел. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
artos5 Опубликовано 3 июля, 2018 Поделиться Опубликовано 3 июля, 2018 1 минуту назад, DimonRX сказал: flg_spi Это переменная, она для того чтобы, забирать данные в основном цикле когда прогрузился байт целиком. 2 минуты назад, DimonRX сказал: Что такое SCK_S и MOSI_S? Sck - в твоем случае PD2 вход. Mosi - в твоем случае PD1. 4 минуты назад, DimonRX сказал: y Да. Mask - в твоём случае не нужна. Она для передачи данных участвует. 5 минут назад, DimonRX сказал: timer Для сброса таймера в основном цикле. Он для таймаута сброса буфера. Эти извраты из за того, что нет ножки CS для синхронизации начала и конца передачи данных. Полностью исходник могу тебе скинуть на мыло или вотсап, вайбер и т.д. Работает у меня отлично в full-duplex mode. 1 Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.