|
Модераторы: PILOT, ManiaK, Mazzi |
|
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
у атмела хардварная передача SPI , если что то пошло не так, значит процу жопа. Если железо ок , то ответ всегда получишь .... для каких микроконтроллеров вы долго писали ? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
Mazzi |
|
|||
Правильный Профиль Группа: Комодератор Сообщений: 825 Регистрация: 3.4.2003 Репутация: 9 Всего: 21 |
"Долго писал" - это сколько?
-------------------- Мне нужны помощники. |
|||
|
||||
osandr |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 17.7.2018 Репутация: нет Всего: нет |
Romikgy,
Если абонент не ответит, то соответственно и ответ не получишь, а следовательно программа будет зависать на ожидании. Это к примеру. 8-битные атмелы - это уже вчерашний день. Если нравятся 8-битные микроконтроллеры, посмотрите хотя бы описание регистров для STM8 любого. Если не работает SPI, то это еще не значит что процу жопа. Проц и остальная периферия могут успешно работать и дальше. Регистр статуса модуля SPI STM8:
Что, здесь тоже предложите бесконечно ждать установки бита RXNE? Вообщем, я не буду никого в чем-то переубеждать. Пишите программы как нравится. Я считаю исходный код ардуино - это халтура. Видимо еще и поэтому ардуино не используется нигде в ответственных разработках. Для домашних поделок вроде беспроводного термометра - пойдет.
PIC 12, 16, 18, dsPIC, AtTiny, AtMega, STM8, STM32, MSP430, Microblaze, PowerPC, NXP, Zynq Писал программы также для Raspberry PI и Orange PI Достаточно будет? Mazzi,
8 лет. Кто-то еще может высказаться по делу? |
||||||||
|
|||||||||
Romikgy |
|
||||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
возможно , но пока что по популярности еще достаточно держатся вверху...
вы на практике такое сами можете проверить ?
ИМХО после такого срока реальной работы и с таким количеством устройств , вопросы о правильности должны были пройти ооочень давно .... или вы ооочень медленный в понимании человек, и для понятия правильности или не правильности вам необходимо более 8 лет практики .... Ждите, возможно кто и ответить , но я бы посоветовал обратится на проф форумы по МК с таким вопросом.... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
osandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 17.7.2018 Репутация: нет Всего: нет |
Romikgy, так поделитесь своим пониманием правильности, к которому Вы пришли за время вашей практики работы с реальными устройствами.
В вашей практике были случаи, когда приходилось писать отдельные библиотеки, используемые другими программистами? Чтобы можно было скомпилить вашу библиотеку в бинарный файл и использовать в любой программе без привязки к конкретному устройству (но для конкретного чипа или семейства)?
Зачем тогда создали ветку по МК на форуме? Я думал у вас проф. форум... Это сообщение отредактировал(а) osandr - 23.7.2018, 11:03 |
|||
|
||||
Romikgy |
|
|||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
Это вопрос к вам, вы же топик стартер.... Это проф форум по программированию (в основном для ПК), эмбедед программирование не его профиль.... в реальных проектах ни кто не тянется к реализации универсальных решений (под все процы). То что реализуется , должно четко отрабатываться без ошибок и зависаний на конкретном процессоре! Большой проект который работает с многими процессорами это OpenWRT , и даже в нем грубо говоря создали множество отдельных проектов под разные процессоры! т.е. мало кто хочет играться с универсальностью! Но есть проекты у которых она присутствует. Один факт , если вы собрались писать универсальный проект/библиотеку вы должны знать все подводные камни всех поддерживаемых процессоров и их периферии. Даже опенсорс проекты такого дать не могут. ЗЫ вы практически проверили работу SPI на атмеле на предмет зависания без устройства с другой стороны? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
osandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 17.7.2018 Репутация: нет Всего: нет |
Romikgy, под универсальностью в данном случае я имею ввиду код, который легко переносится без допиливания в любой другой проект на одном и том же контроллере. К примеру написали один раз драйвер для работы с SPI и больше его не переписываем под каждый конкретный проект для одного и того же камня. Я вижу три варианта реализации: основанный на поллинге, основанный на прерываниях, основанный на ОС (по сути тоже поллинг, но грамотно используется процессорное время). На голом железе универсальный драйвер можно реализовать на основе поллинга, недостатки которого я описал выше (то, что на практике модуль SPI не виснет - на это надеяться неправильно, правильнее предполагать, что любой модуль может дать сбой). Интересно, может есть более красивые решения на прерываниях без жесткой привязки к конкретному проекту? К примеру драйвер для работы с UART я часто реализовываю с применением кольцевого буфера. Функция записи помещает данные в буфер, откуда они отправляются по прерываниям. Аналогично принятые данные ложатся в буфер по мере поступления. Программа не зависает на ожидании байта из UART и может делать какие-то другие вычисления. Когда данные понадобятся, программа "спросит" сколько их хранится в буфере и дальше примет решение забирать или пока выполнить другие действия. Кольцевой буфер можно реализовать на DMA в кольцевом режиме (в атмегах нет DMA). Но это конкретно UART. С SPI сложнее в том плане, что на каждый отправленный байт зачастую нужно сразу же получить ответ и обработать его, т.е. тут уже не получается просто складировать данные в буфер. Ну или хотя бы потому, что пока не будет получен ответ, нельзя отправлять новые данные на шину. Тоже самое можно отнести к интерфейсу I2C или каким-то другим. Может так понятнее объяснил что именно я хочу?
|
|||
|
||||
Romikgy |
|
||||||
Любитель-программер Профиль Группа: Участник Клуба Сообщений: 7325 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
один процессор , уже легче
это не надеяться , это особенности работы железа... это все последовательные интерфейсы, и работать с ними можно по аналогии как и с юарт... просто спи и и2ц более стандартизованы и рациональнее обрабатывать их сразу
никто не запрещает сделать буфер достаточно большим , что бы передавать сразу несколько пакетов... не до конца... то что вы описали , делается использованием модулей , отдельная пара *.c *.h один раз написали (с учетом всех особенностей железа ) и потом кидаете эти файлы в другие проекты... -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||||
|
|||||||
osandr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 17.7.2018 Репутация: нет Всего: нет |
Romikgy,
Отлично! Пример в студию. Хотелось бы увидеть Вашу реализацию. Мне кажется Вы слабо понимаете принцип обмена по SPI. Зачастую общение с ведомым устройством выполняется по определенному протоколу (для примера адрес, тип операции, данные). Обмен происходит в двух направлениях одновременно. Если после отправки данных на шину MOSI не принять данные, которые пришли по MISO, а сразу же сделать новую посылку по MOSI, то на следующей посылке у Вас произойдет переполнение приемного буфера SPI. Чтобы этого не произошло, приходится каждый раз дожидаться приема данных. Объясните каким образом вы задействуете здесь буфер "достаточно большой, что бы передавать сразу несколько пакетов"? Что по вашему пакет? Пакет в правильном понимании - это некий набор данных, а не один байт. Это сообщение отредактировал(а) osandr - 23.7.2018, 15:39 |
|||
|
||||
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |