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

Как подружить две ATMega8?


DimonRX

Рекомендуемые сообщения

Я делал вообще полностью программный и мастер и слэйв SPI,  по той причине что ножка CS была занята. Пришлось извращаться без CS.  То есть по трем ножкам сделал :

MOSI,  MISO,  SCK

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Я делал полный дуплекс spi master и spi slave без применения ножки CS. 

Все из за того что платы уже сделаны и выпускались серийно, и нужно было расширить функционал. 

30 байт у меня шлется в две стороны с клоком 100мкс

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

3 минуты назад, DimonRX сказал:

тактового импульса нет.

Так программно сформируй его! 

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

1 минуту назад, artos5 сказал:

программно сформируй

Да у него чтение, а не запись. МК шлет данные на сдвиговый регистр он хоте подцепиться к этой линии и считывать данные

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

 

5 минут назад, BARS_ сказал:

...МК шлет данные на сдвиговый регистр он хоте подцепиться к этой линии и считывать данные

11 минуту назад, DimonRX сказал:

...а тактового импульса нет.

Разве вход регистра (CP) не является тактовым?

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

6 минут назад, BARS_ сказал:

Да у него чтение, а не запись. МК шлет данные на сдвиговый регистр он хоте подцепиться к этой линии и считывать данные

Вот именно так. Могу схему в протеусе выложить, но только вечером.

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

В сдвигового регистра есть клок.  Можно по двум ножкам вычитать данные с регистра. 

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

4 минуты назад, Геннадий сказал:

является тактовым?

 

Да я вообще не пойму в чем проблема. Чуть раньше автор сам написал:

1 час назад, DimonRX сказал:

1. выдаём первый старший бит из пачки на линию DATA

2. опускаем в лог. 0 линию CLC

3. поднимаем в лог.1 линию CLC

4. повторяем все пункты с 1, пока не выдадим все биты.

Т.е. и CLK и MOSI есть. Что еще надо даже и не знаю.

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

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;
}

}
}

 

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

При такой схеме нормально не подружешь 2 мк. 

Выдели прерывание одно,  например int0 и на него заведи клок.  А второй вход возьми уже любой, будет data. 

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

7 часов назад, DimonRX сказал:

"схема"

U3-это добавочный-твой контроллер, на U1 построена исходная схема, ТАК?

Так какие данные-сигналы ты хочешь получить с исходной схемы на добавочный контроллер??? Тут же нет ни одной линии связи между ними!!!

О чем эта схема??? 

Можно сделать все! Но чем больше можно, тем больше нельзя!

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

U1-это контроллер моей схемы, где я пытаюсь управлять вращением серводвигателя. U3-контроллер исходной схемы (очень сильно упрощенной). С его помощью смоделирована индикация исходной схемы. Сигнал я хочу получить с U4, связей нет потому, что пока я думаю, куда на U1 завести входы U4.

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

1 час назад, ruhi сказал:

О чем эта схема??? 

О том, как правильно замкнуть MOSI(!!!) на общий (через кнопку).

Изменено пользователем Геннадий
Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, DimonRX сказал:

пока я думаю, куда на U1 завести входы U4.

В чем проблема завести на аппаратный SPI МК? MCP41010 можно выкинуть на ПРОГРАММНЫЙ SPI, его скорости с головой хватит

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

3 минуты назад, DimonRX сказал:

Сигнал я хочу получить с U4, связей нет потому, что пока я думаю, куда на U1 завести входы U4.

Б##ха муха! Я же написал куда что подключить. 

Напишу более детально:

PD2 U1 вешаешь на ножку 8 U4. 

PD1 U1 на ножки 1,2 U4. 

Берешь мой пример и добавляешь.  Только обработчик прерывания переделай. 

Управление с ножки PD2 переназначить на другой вывод,  чтобы прерывание освободить! 

 

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

1 час назад, Геннадий сказал:

О том, как правильно замкнуть MOSI(!!!) на общий (через кнопку).

Это один из первых вариантов. Этот косяк давно устранен.

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

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, и от конструкций С у меня мозг взрывается :rolleyes:.

flg_spi - это переменная? Почему она нигде не используется? Те же вопросы в отношении mask и timer?

Что такое SCK_S и MOSI_S?

y - это индекс элемента массива данных? Т.е. в примере читается максимум 32 байта?

Извиняюсь за дурацкие вопросы, но язык С у меня с детства не пошел.

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

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. 

Что может быть лучше в радиоэлектронике, чем программирование микроконтроллеров ?

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

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