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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

[Всем большое спасибо. ТЕМА ЗАКРЫТА!]
Здравствуйте! Как создать тип переменной в CVAVR2, чтобы при обращении к переменной этого типа, находящейся в микросхеме памяти, по интерфейсу SPI (или TWI), компилятор сам "понимал", что переменная не в его ОЗУ или Flash? То есть при компиляции, встречая в тексте программы переменную этого типа, компилятор должен использовать соответственно команды чтения/записи по SPI (TWI). Как прописать такой тип?
Последний раз редактировалось kotbimigot Чт сен 29, 2011 17:38:00, всего редактировалось 1 раз.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

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

Сообщение SII »

Такое невозможно.
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

если мы чего-то не знаем - не значит, что этого не существует
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

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

Сообщение 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 не проверялось :)
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

а CV уже С++ поддерживает?!
битва с дураками проиграна, победители торжествуют. слава победителям!
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

про IAR нагуглилось, да
Аватара пользователя
O-LED
Мудрый кот
Сообщения: 1800
Зарегистрирован: Вт окт 05, 2010 01:08:57
Контактная информация:

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

Сообщение O-LED »

а вообще где можно почитать как работать с внешней еепром памятью??
KIT
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

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

Сообщение SII »

kotbimigot писал(а):если мы чего-то не знаем - не значит, что этого не существует


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

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

В общем, лучше хорошенько изучите, что такое SPI и I2C, как работают с их контроллерами (напрямую, а не через созданные кем-то библиотеки), что из себя представляют микросхемы памяти, подключаемые через эти интерфейсы, ну а в первую очередь -- ассемблер. Не разобравшись с этими вещами, Вы просто не будете понимать, как в действительности работает "железо" и какая связь между программой, написанной на языке высокого уровня (например, на Си), и реальным кодом, выполняемым процессором.
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

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

ах, спасибо, хорошо, положите на комод
что-то вы мне в протеусе посимулить не посоветовали, тоже пониманию хорошо помогает
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

ах, спасибо, хорошо, положите на комод
kotbimigot, я бы на Вашем месте тон подопустил немного и прислушался бы к тому, что Вам говорят.
Уверены в том, что это реально - факты в студию. А слова типа - "это возможно и идите все на ...", оставьте при себе.
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

Всем спасибо
Уже курю даташит на предмет подключения External SRAM
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

Аlex писал(а): идите все на ..."

сорри, не моё!
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

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

Сообщение asteroid7 »

kotbimigot писал(а):про IAR нагуглилось, да
А ты наблюдательный )

Ну гугли, пиздобол неблагодарный.
Найдёшь подобное - изменю мнение.
kotbimigot
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Чт июл 01, 2010 19:48:52

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

Сообщение kotbimigot »

asteroid7 писал(а): пиздобол неблагодарный.

обалдеть просто, зачем столько агрессии
Аватара пользователя
asteroid7
Опытный кот
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

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

Сообщение asteroid7 »

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

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

Вернуться в «Микроконтроллеры и ПЛИС»