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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Подскажите как увеличить скорость контроллера или оптимизировать код, чтение с ацп ads1255
Xenia
сообщение Aug 16 2009, 08:03
Сообщение #16


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Код, предложенный ReAl, можно сделать быстрее, если в качестве переменной cod_1 использовать не ячейку памяти, а регистр микропроцессора. Т.е. определить ее как-нибудь так:
#define cod_1 GPIOR0
Правда у ATmega8 нет регистра GPIOR0, но можно выбрать какой-нибудь другой неиспользуемый регистр.
Другой способ - выделить для переменной cod_1 один из мусорных регистров - компилятор позволяет это делать через настройки проекта.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Aug 16 2009, 08:29
Сообщение #17


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

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



Цитата(Xenia @ Aug 16 2009, 11:03) *
Код, предложенный ReAl, можно сделать быстрее, если в качестве переменной cod_1 использовать не ячейку памяти
Так по условиям задачи в пределах байта сохранять в памяти не нужно, это же не в побитном прерывании идёт, а циклом на основном уровне. Так что всё будет и так хорошо.
Код
uint8_t read_byte()
{
    uint8_t cod_1;
    uint8_t i = 8;
    do {
        PORTB |= 0x08;
        cod_1 <<= 1;
        if( PINB & 0x02 )
            cod_t |= 0x01;
        PORTB &= ~0x08;
    } while( --i);
    return cod_1;
}

avr-gcc -Os -S
Код
.global    read_byte
    .type    read_byte, @function
read_byte:
    ldi r25,lo8(8)
.L3:
    sbi 37-0x20,3
    lsl r24
    sbic 35-0x20,1
    ori r24,lo8(1)
.L2:
    cbi 37-0x20,3
    subi r25,lo8(-(-1))
    brne .L3
    ret
Даже CLK симметричным и без дрожания выходит - по 5 циклов процессора 0/1 независимо от вводимых данных :-)
Всё равно за аппаратным SPI не угнаться...


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


Местный
***

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



Еще раз всем Спасибо за ответы!
Я сегодян попробовал свою задачку запустить через SPI атмелки...получилось правда толль напооловину но то что все это будет работать на нужной частоте 2Мгц это точно. Пару байтиов поглядел осцилографам. Чего я раньше тупил....просто взял готовый рпоект от ads1244.
Если у когото есть пример работы со SPI на Си буду очень рад.
Go to the top of the page
 
+Quote Post

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

 


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


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