|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
|||||||||||
Помогите разобраться с SPI28.08.2010, 17:17. Показов 9439. Ответов 20
Метки нет (Все метки)
Возникла необходимость связать mega8 и mega16 по SPI, но с написанием протокола возникли проблемы...
В идеале должно было получится так: Мастер передает число 255, слейв устанавливает указатель байта в 0, затем мастер выводит байт выбора режима (для дисплея) -> слейв получает его (приэтом указатель уже 1), затем мастер поочередно выводит 20 байт из массивов data[10] и data_s[10], слейв при каждом получении байта перемещает указатель и записывает полученные данные в аналогичные массивы. Код мастера:
0
|
|||||||||||
| 28.08.2010, 17:17 | |
|
Ответы с готовыми решениями:
20
Помогите, SPI Mega8 Помогите реализовать передачу данных по UART или SPI USB-FDD (без дискет, на spi flash), помогите найти |
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 28.08.2010, 22:17 | |
|
а вы проанализируйте "мусор" побитово, может увидите, что где-то есть смещение (бит пропадает или еще что). оттуда и отталкивайтесь.
0
|
|
|
0 / 0 / 0
Регистрация: 23.01.2010
Сообщений: 1,142
|
|
| 28.08.2010, 22:48 | |
|
И, инициализацию ( с обоих сторон) - в студию :)
Может банально не хватить скорости слейва (на C).
0
|
|
|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
||||||||||||
| 29.08.2010, 00:11 | ||||||||||||
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 29.08.2010, 00:17 | |
|
аяяяяй... что-то с кодом не того...
0
|
|
|
0 / 0 / 0
Регистрация: 13.08.2010
Сообщений: 58
|
|
| 29.08.2010, 03:27 | |
|
2 Bosom
А в прерывании без задержки в 1с (delay_ms(1000);) никак не обойтись?
0
|
|
|
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
|
|
| 29.08.2010, 03:43 | |
|
мне кажеца или код инициализации для мастера и слейва одинаковый?..
0
|
|
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
||||||||||||
| 29.08.2010, 03:44 | ||||||||||||
|
аааааааа..... посмотрел код...
Код мастера:
потом, как уже сказали, из прерывания задержку лучше убрать. Код слейва:
0
|
||||||||||||
|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
||||||
| 29.08.2010, 05:10 | ||||||
|
Да, инициализацию и вправду нету скопировал (уже исправил)...
По советам внес исправления (для мастера):
0
|
||||||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 29.08.2010, 05:27 | |
|
вот щас мастер лучше с т.з. логики, однако есть некоторые сомнения (могу и затупить, время уже ого):
1. смущает SS=0; SPDR = dat; вот так сразу, на полной скорости. может и норм, но пауза здесь лишней бы не была в пару нопов, ИМХО. 2. смущает, что и мастер и слэйв используют одинаковую фазу.
0
|
|
|
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
|
|||||||
| 29.08.2010, 06:24 | |||||||
Смущает другое:
И еще, SS==PORTB.2, а DDRB=0xB8. Может все-таки SS настроить на выход?
0
|
|||||||
|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
|
| 29.08.2010, 14:53 | |
|
Установил SS как выход.
После SS вставил задержку в 20 мкс. По поводу while(!(SPSR & (SPIF))); - так в даташите сказано
0
|
|
|
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
|
|
| 29.08.2010, 15:00 | |
|
И не работает?..
0
|
|
|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
||
| 29.08.2010, 15:08 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 29.08.2010, 15:12 | |
|
сделай тогда пока тупо: передача 0xAA, пауза 1с, передача 0xAA, пауза 1с, ...
ну и SS дергай тоже. как заработает, так внедряй свой конченный автомат.
0
|
|
|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
||||||||||||
| 29.08.2010, 15:15 | ||||||||||||
Вот так работает:
и задержку в 1с невыполняет, почему??? может кирдык компилятору???
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 29.08.2010, 16:04 | |
|
все-таки я думаю в сторону
while (!(SPSR&(1<<SPIF))) ;
0
|
|
|
1 / 1 / 1
Регистрация: 06.12.2013
Сообщений: 11
|
|||||||
| 29.08.2010, 16:07 | |||||||
0
|
|||||||
|
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
|
|||||||||||
| 29.08.2010, 16:47 | |||||||||||
|
Попробовал в протеусе, вроде работает. Мастер отправляет строку, слейв принимает и отправляет строку в ответ.
мастер, m16
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,230
|
|
| 29.08.2010, 16:59 | |
|
ээй, зачэм убал? пастав абратна, толка 1<< дабав!
0
|
|
| 29.08.2010, 16:59 | |
|
Помогаю со студенческими работами здесь
20
Помогите разобраться с STM32F3Discovery (SPI) Помогите разобраться с SPI дисплеем Помогите совсем начинающему разобраться с SPI. Помогите настроить SPI на STM32F3 Помогите понять, как работает SPI Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
||||
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub
Примеры вызова:
# Указанная валюта 'EUR'
floatrates-rub -Code 'EUR'
# Список имеющихся кодов валют
floatrates-rub -Available
function floatrates-rub {
|
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5
Примеры вызова
Get-WeatherRP5rss
с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
|
|
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr
Примеры вызова:
Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
|
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют
function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) {
$url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js'
$data = Invoke-RestMethod -Uri $url
$esc = 27
. . .
|
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений
Всем привет. А вот мой компьютер, переделанный из ноутбука.
Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
|
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
|
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца:
Хочу еще Симбу взять, очень нравится. . .
|