Цитата(MrYuran @ 5.8.2010, 20:49)
Речь шла об 1Wire, там очень критично начало тайм-слота, по крайней мере первые 60мкс.
Плюс, есть некоторые задачи.
Нарпимер, управление синхронным детектором.
На МСП430 я реализовывал заданные сдвиги фаз без джиттера с помощью железных выходов таймера, благо их там 7+3.
Ну, 60 мкс при моем подходе - без проблем.
А вообще 1Wire - протокол дурацкий.
Поэтому и не прижился особо.
Цитата(MrYuran @ 5.8.2010, 20:49)
Представляю.
Ужоснах.
Второй месяц перерабатываю подобное творчество к более-менее приемлемому виду.
Это от того, что у Вас нет подобного опыта.
Надо будет принести Вам программку от одной из наших машин.
На PLC, который работает исключительно по событиям.
В их контексте - считай прерываниям.
Порядка нескольких мегабайт подобного кода.
"Размазанные" автоматы - в порядке вещей.
Со временем все это воспринимается вполне нормально.
Цитата(MrYuran @ 5.8.2010, 20:49)
Проблема ещё в том, что программа "нанизана" на протокол обмена.
То есть автомат, управляемый извне. Это, мсм, предел маразма. Особенно учитывая, что внешняя часть не моя и там могут быть свои глюки.
А вот это уже интересно. Если можно, хотелось бы подробностей.
Цитата(MrYuran @ 5.8.2010, 20:49)
У меня совершенно другой подход.
Блок работает автономно, а извне можно посмотреть некоторые параметры или выполнить команды. Но протокол обмена сбоку, он никак не влияет на структуру основной программы и уж тем более не является её стержнем.
Это совершенно нормальный подход.
Сам не люблю смешивать мелкое с мягким.
Но, здесь, ПМСМ, важно понять ход мыслей автора текста.
Он же о чем-то думал, наверное...
Цитата(MrYuran @ 5.8.2010, 20:49)
....
Вот и хочется менять только верхнюю логику, не влезая в нижние слои и уж тем более не вспоминая, где какие регистры и какой таймер подо что занят.
В какой-то мере согласен с Вами. Но за это надо платить.
1. Изучать РТОС, продираясь через многочисленные авторские заморочки. И все равно останутся сомнения.
2. Возрастает оверхед, так или иначе.
3. Программист полностью отрывается от железа, а это плохо.
Тем более, что в конце концов у меня получается тоже самое.
На верхнем уровне уже ничего не смешивается.
К примеру, терморегулятор.
Внизу - все это безобразие, а на верху - расчет полиномов для различных термопар, взятый из C++Builder-а практически без переделок.