Страница 1 из 1

Обращение к переменной по интерфейсу SPI (TWI),создание типа

Добавлено: Ср сен 28, 2011 03:35:40
kotbimigot
[Всем большое спасибо. ТЕМА ЗАКРЫТА!]
Здравствуйте! Как создать тип переменной в CVAVR2, чтобы при обращении к переменной этого типа, находящейся в микросхеме памяти, по интерфейсу SPI (или TWI), компилятор сам "понимал", что переменная не в его ОЗУ или Flash? То есть при компиляции, встречая в тексте программы переменную этого типа, компилятор должен использовать соответственно команды чтения/записи по SPI (TWI). Как прописать такой тип?

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 03:36:46
SII
Такое невозможно.

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 05:50:32
kotbimigot
если мы чего-то не знаем - не значит, что этого не существует

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 07:22:28
asteroid7
Можно через __declspec, если компилятор это поддерживает. Сомневаюсь.
Или через классы и "operator". В конструкторе задаются параметры переменной. Реализации обращений к SPI TWI нужно дописать.
Что то типа такого:

Код: Выделить всё

class MySpi
{
    private:
        int address;
       
    public:
        //write
        void operator = ( char data )
        {
            //...
            SPDR = address;
            //...
            SPDR = data;
        }
        //read
        operator char ()
        {
            //...
            SPDR = address;
            //...
            return SPDR;
        }
       
    public:
        MySpi( int adr ) { address = adr; }
        ~MySpi() { /* тут, например, остановить SPI TWI */ }
};

void main( void )
{
    MySpi var( 50 );
    var = 5;
    PORTB = var;
}

Подобное работает в IAR-е. Для CV не проверялось :)

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 07:41:30
Мастер Ломастер
а CV уже С++ поддерживает?!

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 15:37:33
kotbimigot
про IAR нагуглилось, да

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 16:23:54
O-LED
а вообще где можно почитать как работать с внешней еепром памятью??

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 16:34:30
SII
kotbimigot писал(а):если мы чего-то не знаем - не значит, что этого не существует


Ещё раз: такое невозможно. Память, подключаемая через SPI или TWI (I2C), с точки зрения процессора является не памятью, а внешним устройством. К ячейкам такой памяти он обращаться не умеет в принципе, поскольку этих ячеек с точки зрения процессора попросту не существует. Кроме того, у разных типов памяти, подключаемых по одному интерфейсу, могут быть разные принципы работы (например, к SPI можно подключить и микросхему DataFlash, и SD-карту, однако программно работа с ними выполняется совершенно по-разному). Наконец, встроенные в один тип МК контроллеры SPI и I2C могут отличаться от таковых у другого типа МК даже одного производителя (а уж разных производителей -- и подавно, что в полной мере проявляется у ARMов), и учесть все эти нюансы в компиляторе попросту невозможно.

Единственный способ сымитировать работу с такими устройствами -- это создать класс, который благодаря перегрузке операторов может "прикидываться" массивом, и объявить переменную такого типа. Однако это -- отнюдь не простая задача, не говоря уже о том, что это -- извращение.

В общем, лучше хорошенько изучите, что такое SPI и I2C, как работают с их контроллерами (напрямую, а не через созданные кем-то библиотеки), что из себя представляют микросхемы памяти, подключаемые через эти интерфейсы, ну а в первую очередь -- ассемблер. Не разобравшись с этими вещами, Вы просто не будете понимать, как в действительности работает "железо" и какая связь между программой, написанной на языке высокого уровня (например, на Си), и реальным кодом, выполняемым процессором.

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 17:48:28
kotbimigot
SII писал(а):лучше хорошенько изучите, что такое SPI и I2C, как работают с их контроллерами (напрямую, а не через созданные кем-то библиотеки), что из себя представляют микросхемы памяти, подключаемые через эти интерфейсы, ну а в первую очередь -- ассемблер. Не разобравшись с этими вещами, Вы просто не будете понимать, как в действительности работает "железо" и какая связь между программой, написанной на языке высокого уровня (например, на Си), и реальным кодом, выполняемым процессором.

ах, спасибо, хорошо, положите на комод
что-то вы мне в протеусе посимулить не посоветовали, тоже пониманию хорошо помогает

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 18:06:31
Аlex
ах, спасибо, хорошо, положите на комод
kotbimigot, я бы на Вашем месте тон подопустил немного и прислушался бы к тому, что Вам говорят.
Уверены в том, что это реально - факты в студию. А слова типа - "это возможно и идите все на ...", оставьте при себе.

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 18:15:43
kotbimigot
Всем спасибо
Уже курю даташит на предмет подключения External SRAM

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Ср сен 28, 2011 18:17:20
kotbimigot
Аlex писал(а): идите все на ..."

сорри, не моё!

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Чт сен 29, 2011 07:15:51
asteroid7
kotbimigot писал(а):про IAR нагуглилось, да
А ты наблюдательный )

Ну гугли, пиздобол неблагодарный.
Найдёшь подобное - изменю мнение.

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Чт сен 29, 2011 17:36:56
kotbimigot
asteroid7 писал(а): пиздобол неблагодарный.

обалдеть просто, зачем столько агрессии

Re: Обращение к переменной по интерфейсу SPI (TWI),создание

Добавлено: Чт сен 29, 2011 20:50:37
asteroid7
kotbimigot писал(а):обалдеть просто, зачем столько агрессии

Опа!
А на какую реакцию ты рассчитывал, съязвив, что гугл - наше всё?