реклама на сайте
подробности

 
 
> Подскажите как увеличить скорость контроллера или оптимизировать код, чтение с ацп ads1255
messenger
сообщение Aug 15 2009, 10:58
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



Задача читать с АЦП 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)? Переходить на другой контроллер или можно как то оптимизировать код?

Сообщение отредактировал messenger - Aug 15 2009, 11:46
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
messenger
сообщение Aug 15 2009, 13:45
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 361
Регистрация: 23-03-07
Пользователь №: 26 457



нужно в 2 раза меньше...пр такое скорости возможно работать с ацп только если понизить ее скорость в 2 раза.
Хочется выжать по максимуму.



Как я понял аппаратный SPI использовтаь нельзя. По даташиту необходимо делать определенные паузы...

Цитата(=AK= @ Aug 15 2009, 16:34) *
Можно "раскатать" цикл в линейную структуру, где каждый бит будет устанавливаться напрямую, без сдвигов. Некрасиво и места много занимает, зато быстро. А если еще и написать все на ассемблере - то быстрее не бывает.


время сьедает не сдвиг а условие IF (смотрел осцилографоом)


Если честно думал что мне подскажут разогнать контроллер или перейти на другую модель))
как я понл на все про все 9 а то и 8 машинных циклов.

Установка 1 ки на выходе региста сьедает 120нс (по рез измерения ) - 2 такта процессора (120нс)
сдвиг где то так же...

а остальное кушает IF

получается в 250 нс мне не уложиться...
Ситуация безвыходная ...нужно менять контроллер
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- messenger   Подскажите как увеличить скорость контроллера или оптимизировать код   Aug 15 2009, 10:58
- - aesok   Цитата(messenger @ Aug 15 2009, 14:58) Чт...   Aug 15 2009, 11:24
- - messenger   Тип контроллера. atmega16 Название компилятора ...   Aug 15 2009, 11:38
|- - Dog Pawlowa   Цитата(messenger @ Aug 15 2009, 14:38) Пр...   Aug 15 2009, 13:28
- - DpInRock   ЦитатаМне нужно ровно в два раза меньше. А зачем?   Aug 15 2009, 13:15
- - =AK=   Цитата(messenger @ Aug 15 2009, 20:28) Мн...   Aug 15 2009, 13:34
|- - Dog Pawlowa   Цитата(messenger @ Aug 15 2009, 16:45) Ка...   Aug 15 2009, 13:54
||- - messenger   Цитата(Dog Pawlowa @ Aug 15 2009, 16:54) ...   Aug 15 2009, 14:09
||- - Dog Pawlowa   Цитата(messenger @ Aug 15 2009, 17:09) Сп...   Aug 15 2009, 17:14
|- - x736C   Цитата(messenger @ Aug 15 2009, 17:45) Ус...   Aug 15 2009, 14:20
- - DpInRock   ЦитатаSPI контроллера не сможет обеспечить требуем...   Aug 15 2009, 14:23
- - defunct   Цитата(messenger @ Aug 15 2009, 13:58) Ко...   Aug 15 2009, 14:50
- - ReAl   Код if(PINB.2 == 1) //если пришла 1 ка то...   Aug 15 2009, 16:45
- - messenger   Спасибо всем за ответы! Буду побовать работат ...   Aug 16 2009, 06:16
- - Xenia   Код, предложенный ReAl, можно сделать быстрее, есл...   Aug 16 2009, 08:03
|- - ReAl   Цитата(Xenia @ Aug 16 2009, 11:03) Код, п...   Aug 16 2009, 08:29
- - messenger   Еще раз всем Спасибо за ответы! Я сегодян попр...   Aug 17 2009, 19:36


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016