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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Подскажите как увеличить скорость контроллера или оптимизировать код, чтение с ацп 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
aesok
сообщение Aug 15 2009, 11:24
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(messenger @ Aug 15 2009, 14:58) *
Что бы не уходить в сторону спрошу кратко


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

Тип контроллера.
Название компилятора и уровень опримизации.
Прочему нет возможности использовать SPI порт.
Ассемблерный листинг этого участка кода.

Анатолий.
Go to the top of the page
 
+Quote Post
messenger
сообщение Aug 15 2009, 11:38
Сообщение #3


Местный
***

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



Тип контроллера.
atmega16

Название компилятора и уровень опримизации.
codevisionAVR про уровень
оптимизация по быстродействиюр

Прочему нет возможности использовать SPI порт.
у этого ацп SPI совместимый интерфейс...

Ассемблерный листинг этого участка кода.
не знаю как его получить codeVision полез в яндекс

Сообщение отредактировал messenger - Aug 15 2009, 11:44
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 15 2009, 13:15
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Мне нужно ровно в два раза меньше.

А зачем?


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 15 2009, 13:28
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(messenger @ Aug 15 2009, 14:38) *
Прочему нет возможности использовать SPI порт.
у этого ацп SPI совместимый интерфейс...

Вы не поняли вопрос.
Почему же Вы не используете аппаратный SPI, который есть в контроллере, а эмулируете его программно?

Да, кстати, для ускорения работы разверните цикл, запишите все последовательно.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
=AK=
сообщение Aug 15 2009, 13:34
Сообщение #6


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(messenger @ Aug 15 2009, 20:28) *
Мне нужно ровно в два раза меньше.


Можно "раскатать" цикл в линейную структуру, где каждый бит будет устанавливаться напрямую, без сдвигов. Некрасиво и места много занимает, зато быстро. А если еще и написать все на ассемблере - то быстрее не бывает.
Go to the top of the page
 
+Quote Post
messenger
сообщение Aug 15 2009, 13:45
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 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
Dog Pawlowa
сообщение Aug 15 2009, 13:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(messenger @ Aug 15 2009, 16:45) *
Как я понял аппаратный SPI использовтаь нельзя. По даташиту необходимо делать определенные паузы...

Какие паузы?!
Ну посмотрите сами, что Вы пишете:
"В АЦП SPI-совместимый интерфейс"
"Аппаратный SPI использовать нельзя".


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
messenger
сообщение Aug 15 2009, 14:09
Сообщение #9


Местный
***

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



Цитата(Dog Pawlowa @ Aug 15 2009, 16:54) *
Какие паузы?!
Ну посмотрите сами, что Вы пишете:
"В АЦП SPI-совместимый интерфейс"
"Аппаратный SPI использовать нельзя".


SPI контроллера не сможет обеспечить требуемую скорость...а может и смложет))
Спасибо... bb-offtopic.gif

Сообщение отредактировал messenger - Aug 15 2009, 14:19
Go to the top of the page
 
+Quote Post
x736C
сообщение Aug 15 2009, 14:20
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



Цитата(messenger @ Aug 15 2009, 17:45) *
Установка 1 ки на выходе региста сьедает 120нс (по рез измерения ) - 2 такта процессора (120нс)
сдвиг где то так же...
Что-то многовато. Должно быть по циклу. Или я ошибаюсь?
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 15 2009, 14:23
Сообщение #11


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
SPI контроллера не сможет обеспечить требуемую скорость.

Ага. А программно - может... Жуть. 8 мегабит на 16 Мгц кварце. Упаритесь обрабатывать.

Данные вы куда деваете? Складируете внутри? Так память быстро заполните.
Наружу выдаете? По UART? Так УАРТ все равно медленно работает - скорость для АЦП не нужна ...


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
defunct
сообщение Aug 15 2009, 14:50
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(messenger @ Aug 15 2009, 13:58) *
Контроллеров серии AVR работающих на частоте более 16 МГц я не нашел.

ATMega48/88/168 - 20Mhz

Цитата
так вот при таком алгоритме на формирование 1ки "клока" уходит приблизительно 500 нс.

советую посмотреть в сторону USI в тиньках.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 15 2009, 16:45
Сообщение #13


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Код
     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

Лучше изобразить как
Код
      cod_1 <<= 1; // младший бит гарантированно обнуляется. Конечно, если компилятор соответствует стандарту.
      if(PINB.2 == 1)
            cod_1 |= 1;
Но всё равно медленнее аппаратного SPI будет.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 15 2009, 17:14
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(messenger @ Aug 15 2009, 17:09) *
Спасибо... bb-offtopic.gif

Спасибо - это Оффтопик?!!
Вот это bb-offtopic.gif : такое впечатление, что вместо того, чтобы правильно поставить задачу и системно ее решить ее, Вы забегаете вперед с выводами. Да и постановкой задачи. И на вопросы не отвечаете. Думаете, кого-то интересует Ваш проект? Просто в следующий раз Вам ничего советовать не будут.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
messenger
сообщение Aug 16 2009, 06:16
Сообщение #15


Местный
***

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



Спасибо всем за ответы!
Буду побовать работат через SPI.
Тем кто только планирует ads1256 могу сказать что эта микросхема подтвердила свои характеристики в соответствии с даташитом. (до этого использовал ads1244 в ней разочаровался)
Go to the top of the page
 
+Quote Post

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

 


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


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