| Автор |
Съобщение |
|
darkyp
Ранг: Ориентиран
Регистриран на: Пон Дек 12, 2005 6:03 pm Мнения: 263 Местоположение: София
|
 Синхронизиране достъп до споделен ресурс
Сметнах, че темата е по-скоро софтуерен въпрос и пиша тук.
Имам >2 PIC-а. Какъв метод бих могъл (ако може въобще) да използвам, за да синхронизирам достъпа им до един дивайс говорещ по SPI?
Благодаря!
|
| Пет Яну 11, 2008 8:18 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами ... ако ползваш SS линията може да следиш дали е заета, или да следиш клока, или пък да слушаш комуникацията, трябва да внимаваш с изходите на мастер устройствата в какво състояние ги държиш
|
| Пет Яну 11, 2008 10:46 am |
|
 |
|
darkyp
Ранг: Ориентиран
Регистриран на: Пон Дек 12, 2005 6:03 pm Мнения: 263 Местоположение: София
|
Примерно следя SS. Ако и двата PIC-а в даден момент проверят SS и тя е свободна, следва и двата да я заемат и не се разбира, че е настъпило произшествие.
|
| Пет Яну 11, 2008 11:11 am |
|
 |
|
velio
Ранг: Форумен бог
Регистриран на: Вто Юни 07, 2005 6:20 pm Мнения: 3532
|
Може да проверяваш дали другия процесор е настъпил шината от неговия си изход (ще трябват малко допълнителни елементи).
Пак са възможни колизии. Може да помислиш за приоритети...
|
| Пет Яну 11, 2008 11:25 am |
|
 |
|
darkyp
Ранг: Ориентиран
Регистриран на: Пон Дек 12, 2005 6:03 pm Мнения: 263 Местоположение: София
|
И на мен ми се завъртя в главата нещо като приоритети. Идеално си го представих така, но не знам дали има такива дивайси:
Примерно има дивайс с два входа и два изхода. Действа по следния начин:
вход - изход
----> натам лети времето
1 2 3 4 5 6
0 - 0 0 - 0 1 - 0 0 - 0 0 - 0 1 - 1
0 - 0 1 - 1 1 - 1 1 - 1 0 - 0 0 - 0
При време 3 първия MCU се опитва да заеме линията, дивайса обаче е в състояние което не му позволява - на първия изход има 0, MCU-то вижда това и се пробва по-късно при време 6 и е щастлив.
Ама дали има такъв дивайс  ? Или е комбинация с тригери...
[edit]комбинация:
0-0 1-1
0-0 1-0
следва от приоритета[/edit]
|
| Пет Яну 11, 2008 11:35 am |
|
 |
|
sthx
Ранг: Форумен бог
Регистриран на: Съб Юни 24, 2006 8:25 pm Мнения: 2292
|
Нещо такова. Трябва да имаш арбитраж. Например слагаш още едно малко процесорче, което получава заявка и след това потвърждава или отказва достъп.
_________________ Две плюс две е приблизително равно на четири. Факт!
|
| Пет Яну 11, 2008 11:17 pm |
|
 |
|
Yanek
Ранг: Новодошъл
Регистриран на: Пет Юни 29, 2007 10:59 pm Мнения: 113
|
Малко непрофесионално ми звучи SPI с 2 мастъра. Това си е работа за I2C. Така или инак явно ти се е наложило, затова ти предлагам един може би не по-добър, но по-коректен вариант. Обявяваш единия процесор за мастър, а дивайса и другия проц за спомагателни (подчинени). Четеш с мастъра необходимите данни от едното подчинено и записваш в другото. Нещо като кеш, буфер, посредник. Никакви колизии, никакъв арбитраж, каквито и не са предвидени в този интерфейс. Не отхвърлям, че може да има ситуации, в които схемата е неприложима.
|
| Нед Яну 13, 2008 3:21 pm |
|
 |
|
darkyp
Ранг: Ориентиран
Регистриран на: Пон Дек 12, 2005 6:03 pm Мнения: 263 Местоположение: София
|
Благодаря, на всички. Ще реша как да го направя. Иначе и аз си мислех за вариантите, които споделихте.
|
| Пон Яну 14, 2008 10:06 am |
|
|