Задача читать с АЦП ads1255 результаты преобразования. Что бы не уходить в сторону спрошу кратко
вот пример кода в котором ATМеga16 работающая на 16 Мгц читает в цикле 8 бит (т.к. ацп 24 битное читаю 3 раза далее свожу в переменную типа unsigned long т.к. если читать сразу в unsigned long все биты исполнение в4-5 раз длиннее см.ниже)
cod_1 типа unsigned char
for (Col_Bit=0;Col_Bit<8;Col_Bit++) //
{
PORTB SET_B(0);#asm("NOP"); //ставим клок
if(PINB.2 == 1) //если пришла 1 ка то
{
cod_1=cod_1<<1;//сдвинет
cod_1 |= 1<<0; //запишет 1 в 0 бит
} //if
else
{
cod_1=cod_1<<1;
cod_1 &= ~(1<<0);//запишет 0 в 0 бит
}; //else
так вот при таком алгоритме на формирование 1ки "клока" уходит приблизительно 500 нс.
Мне нужно ровно в два раза меньше.
Контроллеров серии AVR работающих на частоте более 16 МГц я не нашел.
Подскажите как быть(как я понял все время ест IF)? Переходить на другой контроллер или можно как то оптимизировать код?