![]() |
roboforum.ruТехнический форум по робототехнике. |
|
Angel71 писал(а):blindman, а в сторону SEAforth 40C18 не посматривал?
Angel71 писал(а):blindman, а в сторону SEAforth 40C18 не посматривал?немного дороже и менее достовабельный, но тоже очень неплохой спецфический камушек
Сергей писал(а):Только вот толку что "заниматься плотным изучением" камня? Если есть задача - нужно подбирать под эту задачу схемотехническое решение, а если нет задачи? Создается впечатление, что народ идет "от противного", выбирая камень и впихивая в него задачу.
Модератор "blibdman":Попрошу в этом топике больше вопросы типа "круче", "лучше", "зачем" и т.п. не поднимать. И наооборот, приветствуются вопросы "а можно ли на пропеллере сделать вот такое?" "а как на пропеллере сделать вот это?"

{{
Цикл записи сэмплов с АЦП в основную память.
Сигналом остановки служит изменение состояния
одного из выводов чипа. Это удобно тем, что
линии ввода/вывода доступны всем процессорам
без доступа к концентратору
}}
ORG 0
{
WRORD пишет в основную память, а значит
требует синхронизации с концентратором -
отсюда переменное число тактов.
}
loop wrword INA, addr '7..22
add addr, #1 '4
and addr, addr_mask '4
wrword INA, addr '7..22
add addr, #1 '4
test INA, stop_mask wz '4 Сказано остановиться?
wrword INA, addr '7..22
nop '4
add addr, #1 '4
wrword INA, addr '7..22
add addr, #1 '4
IF_NZ jmp #loop '4/8
' Запись остановлена, ждём команды на продолжение
{ .............. }
addr long 0
stop_mask long $0800_0000
addr_mask long $1FFF ' 8 КиБ под буфер сэмплов
Но пара интересных особенностей всё же есть. В большинстве процессоров, выполнение арифметических и логических операций безусловно влияет на флаги. Здесь же нужно явно указывать модификаторы WZ, WC - что и используется в моём коде. После тестирования бита остановки цикла, времени на условный переход не остаётся, иначе пропустим окно доступа к концентратору. Но так как модификатор WZ больше не используется, можно спокойно проверить условие в конце цикла. Ещё интересная возможность - условное выполнение любой операции. Существует 16 модификаторов IF_*, проверяющая различные комбинации флагов. Наличие условия не влияет на время исполнения операции - очень удобно, когда важно точно задать время выполнения участка кода. Есть также модификатор NR, который отменяет запись результат операции. Например, если надо проверить, возникнет ли переполнение при сложении двух чисел, не изменяя операнды, пишемadd A, B wc nr
очень плохо представляю как эти фишки можно на си использовать, или я ошибаюсь?
blindman писал(а):Видео снято с экрана телевизора
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0