State_Maschine - Page 6

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Re: State_Maschine
Пpиветствую, Olga!

 SM>> хотелось бы взглянуть на реальный проект, где код состояние
 SM>> хранится в регистре порта в/в, и как это можно перевести
 SM>> на предложенный (*f)();

 ON> Для мелкоконтроллеров я этого еще не делала. Собственно и пытаюсь
 ON> выяснить,как такое можно было бы заделать средствами С. Однако,
 ON> для ПЛИСов реализация сабжа прямо на ножках выводв- это классика.
 
 Hу-ка, ну-ка, поподробнее плиз...........
 Что это за классика такая и кто композитор ?
 И главное зачем так извращаться ?

Michael Tulupov
...

Re: State_Maschine
Hello Kirill.

Wed Jul 12 2006 17:37, Kirill Frolov wrote to Alex Kocharin:

 >> KF>   Посмотрим как у вас заглючит, если пинг -- больше секунды...
 >> Какое отношение имеет пинг к кривому переключению раскладок? :-)

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

=8-O  Hеужели нет способа читать/писать в офлайне?


Dimmy.


Re: State_Maschine

Quoted text here. Click to load it

  Завести собаку для ношения дискет -- не предлагать.

  А если серьёзно, то в онлайне даже удобнее. Если подключение
нормальное.  Иначе непонятно как быть, если привязан голдедом к одному
компутеру. Неудобно жутко.  Если вспоминать о NNTP, то там всё равно
newsrc надо как-то синхронизировать.



Re: State_Maschine
Hi Olga!

12 Jul 06 19:06, Olga Nonova wrote to Slav Matveev:

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

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

    три бита регистра INTCON микроконтроллера pic12f629 надо
    обрабатывать switch'ом или jmp'ом по его содержимому?
    может лучше тремя bit test'ами?

    я не знаю что наворотили в регистре статуса инженеры
    филипса, но сколько я в жизни встречал таких регистров,
    все они имеют битовую сущность и к конечным автоматам
    имеют очень далекое отношение.

                                                   Slav.

Re: State_Maschine

X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Slav Matveev!
You wrote in conference fido7.ru.embedded to Olga Nonova on Thu, 13 Jul 2006
09:18:03
+0400:

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

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

 SM>     три бита регистра INTCON микроконтроллера pic12f629 надо
 SM> обрабатывать switch'ом или jmp'ом по его содержимому?

Обычно не надо.

 SM>     может лучше тремя bit test'ами?

 SM>     я не знаю что наворотили в регистре статуса инженеры

А это не секрет. Сходи, да посмотри.

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

В данном случае - самое прямое. Правда никаких проблем с этим не возникает,
автомат
естественным образом пишется на С, как и показано в филипсовском примере.

dima
http://dorlov.no-ip.com



Re: State_Maschine
Пpиветствую, Olga!

 ON> Позволю категорически не согласиться. В ПЛИС-ах сравнение текущего
 ON> состояния со всеми возможными производиться ПАРАЛЛЕЛЬHО схемами
 ON> дещифрации.
 
 Конечный автомат тима мной написанного отсинтезится в микропрограммный
автомат.
 Код текущего состояния на выходе регистра в комбинации со входами автомата
 даст код следующего состояния на входе регистра.
 
 Правда, у автомата вместо ПЗУ микропрограмм будет комбинационная логика,
 хотя можно сказать, чтобы эту логику синтезатор уложил в блочную память,
 если автомат сложный и надо быстро работать.
 
 Сравнение кода текущего состояния с кодами всех возможных состояний в ПЛИС
вообще
 не происходит.

Michael Tulupov
...

Re: State_Maschine

Quoted text here. Click to load it

  "В тексте программы". Автомат существует и за пределами текста
программы.


Re: State_Maschine
Здравствуйте, Уважаемый Kirill!

Thu Jul 06 2006 23:56, Kirill Frolov wrote to Olga Nonova:

 >> SM>     Адрес функции в этом случае не самая лучшая константа, по-моему.
 >> Чем плоха? Она в тексте программы точно такой же имеет всем понятное
 >> символическое имя.

 KF>   "В тексте программы". Автомат существует и за пределами текста
 KF> программы.

Эк, куда замахнулись! Сначала освойте хранение кода состояния непосредственно
в регистре порта вывода, а потом и за более серьезные вещи можно будет
браться.

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


Re: State_Maschine
Hi Olga!

05 Jul 06 20:16, Olga Nonova wrote to Slav Matveev:

 SM>>         jmp     .L5
 SM>> .L2:
 SM>>         call    Do_Default
 SM>> .L5:

 ON> Иными словами, видим полный перебор case-ов. Что и требовалось
 ON> доказать.
    иными словами с двумя кейсами проще из перебрать, чем
    таблицу городить.

 ON> Да-да, речь идет именно о количестве case-ов в районе десятка. И как
 ON> же тогда получить "красивый код" с таблицей jmp-ов, если выражение при
 ON> switch не дает, как я Вам представила на примере, регулярных значений
 ON> из ряда 0,1,2...? Hикак этого у Вас не получится, а по-прежнему будет
 ON> тухлый перебор всех подряд.
    Иными словами у вас очевидная мультиядерность в мозгах, при этом
    одно ядро не делится полученной информацией с остальными.
    Иначе мне трудно объяснить тот факт, что запостив в эху
    пример с таблицей для кейсов не 0,1,2,3 я вторично вижу
    вопрос "а как это сделать".
    ну что же. попробую еще раз объяснить, надеясь что это письмо
    будет обработано нужным ядром.

        subl    $65, %eax
        movl    %eax, -20(%ebp)
        cmpl    $25, -20(%ebp)
        ja      .L10
        movl    -20(%ebp), %edx
        movl    .L8(,%edx,4), %eax
        jmp     *%eax
    ....
.L8:
        .long   .L3
        .long   .L4
        .long   .L10
        .long   .L10
        .long   .L5
        .long   .L10
    ....

    Исходный текст
     switch( c)
     {
        case 'A': A(); break;
        case 'B': B(); break;
        case 'E': E(); break;
        case 'Q': Q(); break;
        case 'Z': Z(); break;
     }


    ps.
        movl    SM, %eax
        call    *%eax



                                                   Slav.

Site Timeline