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

 
 
> Быстро считать данные с АЦП
nikolas_osu
сообщение Mar 19 2010, 03:43
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 6-12-07
Из: Оренбург
Пользователь №: 33 046



Встала задача быстро считывать данные с 24 битного АЦП, для этого использую Mega128 с внутренним тактовым генератором (8 МГц), написал такой код:
Код
#define SET_SCLK_ADC PORTC|=(1<<3)                    
#define CLR_SCLK_ADC PORTC&=~(1<<3)      

#define GET_SDO_ADC ((PINC)?1:0)                    
.......
.......

        SET_SCLK_ADC;CLR_SCLK_ADC;
    bufferA<<=1;
    bufferA|=GET_SDO_ADC;

..... и так 24 раза, цикл не использую что-бы не тратить время на проверку условия выполнения цикла......
        
        SET_SCLK_ADC;CLR_SCLK_ADC;
    bufferС<<=1;
    bufferС|=GET_SDO_ADC;



В итоге мой код выполняется за 40 мкс. Как можно его ускорить? Понятно что можно увеличить тактовую частоту а какие есть еще варианты?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smac
сообщение Mar 19 2010, 04:51
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003



Цитата(nikolas_osu @ Mar 19 2010, 06:43) *
Встала задача быстро считывать данные с 24 битного АЦП...
В итоге мой код выполняется за 40 мкс. Как можно его ускорить? Понятно что можно увеличить тактовую частоту а какие есть еще варианты?

Модель АЦП видимо секретная, но по коду видно что с последовательным интерфейсом (похоже I2C), поэтому вариант следующий - попробовать использовать периферийный модуль TWI микроконтроллера, который сделает всю грязную работу за Вас. Если это не подходит - написать функцию получения отчета АЦП на ассемблере и не париться.

Сообщение отредактировал smac - Mar 19 2010, 04:51
Go to the top of the page
 
+Quote Post
nikolas_osu
сообщение Mar 19 2010, 10:41
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 101
Регистрация: 6-12-07
Из: Оренбург
Пользователь №: 33 046



Цитата(smac @ Mar 19 2010, 09:51) *
Модель АЦП видимо секретная, но по коду видно что с последовательным интерфейсом (похоже I2C), поэтому вариант следующий - попробовать использовать периферийный модуль TWI микроконтроллера, который сделает всю грязную работу за Вас. Если это не подходит - написать функцию получения отчета АЦП на ассемблере и не париться.


Модель совсем не секретная - это AD7767, интерфейс у него не I2C, а похож не SPI (это односторонний интерфейс только для считывания)
Go to the top of the page
 
+Quote Post



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

 


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


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