eddy_em: (Костерок)
[personal profile] eddy_em
За понедельник-вторник я распаял все элементы будущей системы управления.
Некоторые алгоритмы отлажу на старой плате, а потом уже перенесу код на эту и буду пытаться управлять спектрографом.
Будущая система управления
Вид с лицевой стороны

Будущая система управления
Вид с обратной стороны

Надеюсь, следующая итерация будет еще не скоро: уж больно скучное это занятие — такую кучу точек (да еще и SMD) паять…

Date: 2015-01-14 07:53 am (UTC)
From: [identity profile] mbr.livejournal.com
>Это где?
В дескрипторе же.

> P.S. А еще я потихоньку начал было реализовать 1-wire полуаппаратный (на таймере с DMA).

Гиблое дело имхо. Я уже кому-то пытался безуспешно доказать, что DMA необходимо для высокоскоростных трансферов, а для низкоскоростных это лишь костыли и лишний потенциал ошибки с возможностью завесить всю систему.

Но я понял причину проблемы - для сверхтормозного 1wire нарушается вся логика работы и значительно усложняются стейт-машины. Наиболее правильный метод на мое имхо - ртось и процесс для onewire.

Вот к примеру моя ртось (пока еще не пиарил в широких кругах, вылизываю код, пишу документацию):

https://github.com/alexeyk13/rexos/tree/master/example/stm32f1

В примере создается штук 7 процессов, DAC с DMA, температурный сенсор с АЦП, CDC ACM, проводится оценка производительности системы и еще чего-то по мелочевке. Чистого application кода на две страницы.

Date: 2015-01-14 08:22 am (UTC)
From: [identity profile] eddy-em.livejournal.com
> DMA необходимо для высокоскоростных трансферов, а для низкоскоростных это лишь костыли и лишний потенциал ошибки с возможностью завесить всю систему.
Ничего там не "завешивается". А городить задержки nop'ами — извращение чистой воды. Как и UART использовать. Потому что получается, что на все время приема-передачи микроконтроллер занят. Некошерно как-то.

> начительно усложняются стейт-машины
Во-во. А я как раз систему управления решил сделать по принципу конечного автомата.

> ртось
Слишком сложно для такой элементарщины. Лучше аппаратно. На крайняк — сделать реализацию на отдельном STM8, который только 1-wire и будет заниматься.

> Вот к примеру моя ртось
Ох, ничего ж себе!!!
И сколько она отжирает флеша?

Date: 2015-01-14 08:45 am (UTC)
From: [identity profile] mbr.livejournal.com
> Ничего там не "завешивается"

Когда завесится, будет ад. Я убил неделю, прежде чем вдумчиво не прочитал errata.

> А городить задержки nop'ами — извращение чистой воды. Как и UART использовать. Потому что получается, что на все время приема-передачи микроконтроллер занят.

Совершенно верно. Поэтому в ртосях вместо nop управление передается для выполнения других задач или процессор уходит в спящий режим.

> Слишком сложно для такой элементарщины.
Ключевой вопрос в скорости разработки и возможности масштабирования. Касаемо сложности я бы поспорил. А еще такие плюшки как hardware abstraction. Например, у меня был случай, пришлось внезапно менять архитектуру, когда 50% софта уже было готово - замена заняла не больше полудня.

> И сколько она отжирает флеша?
~16 кб с базовыми драйверами под стм (gpio, power, timer, rtc, wdt, uart). Помимо драйверов это включает stdio и stdlib c полноценным printf/sprintf и менеджером динамической памяти.

~25 кб с композитным усб и библиотеками под него.

Edited Date: 2015-01-14 08:47 am (UTC)

Date: 2015-01-14 09:14 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Ну, вроде косяков пока не было. Но да: поначалу были непонятки из-за того, что я пытался библиотечные функции использовать, которые сильно тормозили процесс. Написал на регистрах — все вроде ОК. Правда, reset я сделал все-таки пока что на задержке, надо тоже реализовать через конечный автомат.

Date: 2015-01-14 03:57 pm (UTC)
From: [identity profile] alex-avr2.livejournal.com
Мне. И весьма безрезультатно :)

July 2025

S M T W T F S
  12345
6789101112
1314 1516 171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 20th, 2025 06:13 am
Powered by Dreamwidth Studios