- Vote on answer
- posted
17 years ago
State_Maschine
- Vote on answer
- posted
17 years ago
Здравствуйте, Уважаемый 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.
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
Здравствуйте, Уважаемый 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...
Всего Вам Хорошего Ольга
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
Простое -- я на экране буквы вижу с такой задержкой, что вон ту строку сверху умудряюсь написать, пока не замечу, что оно не в той раскладке.
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
Здравствуйте, Уважаемый 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.
Всего Вам Хорошего Ольга
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
здравствуйте, Уважаемый 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> состояние.
Позволю категорически не согласиться. В ПЛИС-ах сравнение текущего состояния со всеми возможными производиться ПАРАЛЛЕЛЬНО схемами дещифрации. Такая параллельность действий в принципе недостижима в микроконтроллерах последовательного действия.
Всего Вам Хорошего Ольга
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
- Vote on answer
- posted
17 years ago
Было бы интересно посмотреть - хватит ли ума у компилятора сообразить что сделать узким диапазон ему поможет сдвиг вправо? Использовать вычитание для слвига диапазона к нолю компиляторы умеют наверное все.