State_Maschine

Loading thread data ...

Здравствуйте, Уважаемый Slav!

Tue Jul 11 2006 17:37, Slav Matveev wrote to Olga Nonova:

ON>> Вспомнила! Видела у Phillips-а пример... ON>> .... Там статус-регистр I2C использовался напрямую в ON>> качестве младшего байта адреса ветвления. Старщий назначался ON>> принудительно в свободной странице кодов. Все это, естественно, на ON>> ассемблере (Metalink). Интересно, как бы такое же реализовать на С ?

SM> надо полагать что разницы в адресах было достаточно для SM> обработчиков? что предлагается делать, если статусный регистр SM> отличается на единицу для двух состояний. Одного машинного слова SM> будет достаточно хотя бы для jmp'а на нужный код?

Филипсоиды сразу заложили интервал между стайтами в 8-мь инструкций. И представили пример, когда драйверу I2С вполне хватает этого прмежутка, чтобы реализовать сабж без таблицы jmp-ов. Я не знаю, как сейчас обстоят дела у Phillips, но подозреваю, что преемственность конструирования узлов кристаллов сохранена в первозданном виде.

Всего Вам Хорошего Ольга

SM> подозреваю что табличный вызов даст похожий результат.

SM> Slav.

Reply to
Olga Nonova

Здравствуйте, Уважаемый Slav!

Wed Jul 12 2006 10:59, Slav Matveev wrote to Olga Nonova:

ON>> Филипсоиды сразу заложили интервал между стайтами в 8-мь инструкций. ON>> И представили пример, когда драйверу I2С вполне хватает этого ON>> прмежутка, чтобы реализовать сабж без таблицы jmp-ов.

SM> 8 инструкций - три бита адреса. Предлагаете отказаться от SM> использования трех младших бит регистра в/в или постоянно SM> делать сдвиг на 3?

Я ничего не предлагаю. Это Phillips СПЕЦИАЛЬНО так назначил состояния регистра I2С. Т.е. регистр статуса принимает значеня: 0,8,16,24.... Как видите, совсем не любимое для switch: 0,1,2,3...

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

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

Reply to
Kirill Frolov

Здравствуйте, Уважаемый Slav!

Wed Jul 12 2006 17:00, Slav Matveev wrote to Olga Nonova:

ON>> Я ничего не предлагаю. Это Phillips СПЕЦИАЛЬHО так назначил состояния ON>> регистра I2С. Т.е. регистр статуса принимает значеня: 0,8,16,24.... ON>> Как видите, совсем не любимое для switch: 0,1,2,3...

SM> Я бы хотел посмотреть на программера, который добровольно SM> откажется от 3 бит регистра ради такого извращения, SM> которое, к тому же, не портабильно совершенно.

Хардваре I2C в кристаллах Phillips разрабатывали отнюдь не программеры на С. А люди, озабоченные быстродействием. И они-то посчитали, что самое 'aatrnbdyjt решение будет именно такое. Патент имеют. Вы разработчиков Phillips уважаете?

SM> Как не трудно догадаться switch( status >> 3 ) , SM> зато не надо делать выравнивание на границу 256 байт, кратно SM> которым адресует старший байт адреса перехода.

По-моему методу ветвления, да на ассемблере, никаких "switch( status >> 3 )" не требуется.

SM> В случае если обработчик состояние не укладывается в 7 машинных слов SM> надо делать либо jmp, либо call и никакого выигрыша против SM> перехода по таблице уже нет.

Я не зря ссылалась на пример дрейвера I2C, написанный на ассемблере. Так вот, из примерно 40-ка возможных состояний статус-регистра I2C там только пара не укладывается в промежуток 8 инструкций. Для этой пары да, использованы дополнительные jmp-ы. Оцените, всего 2 из 40.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova

здравствуйте, Уважаемый Ruslan!

Sun Jul 09 2006 20:19, Ruslan Mohniuc wrote to Alexandr Torres:

ON>>> Извольте. Кто программировал ПЛИСы знают, что состояния ON>>> State_Machine

AT>> Мы не обсуждаем ПЛИСы и AHDL/VHDL, мы обсуждем микроконтроллеры и AT>> C/Asm.

RM> Hу почему же. Там то же самое. Логика в чем: перебор состояний делается в RM> таком порядке, чтобы железо оптимально переключалось на следующее RM> состояние.

Позволю категорически не согласиться. В ПЛИС-ах сравнение текущего состояния со всеми возможными производиться ПАРАЛЛЕЛЬНО схемами дещифрации. Такая параллельность действий в принципе недостижима в микроконтроллерах последовательного действия.

Всего Вам Хорошего Ольга

Reply to
Olga Nonova
Reply to
Michael Tulupov
Reply to
Michael Tulupov
Reply to
Michael Tulupov
Reply to
Dimmy Timchenko
Reply to
Nicolas Minakov

Было бы интересно посмотреть - хватит ли ума у компилятора сообразить что сделать узким диапазон ему поможет сдвиг вправо? Использовать вычитание для слвига диапазона к нолю компиляторы умеют наверное все.

Reply to
Arcady Schekochikhin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.